So-net無料ブログ作成

『Elements of Programming』の翻訳 [プログラマー現役続行]

Elements of Programming

Elements of Programming

  • 作者: Alexander Stepanov
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2009/06/19
  • メディア: ハードカバー

6月からの4か月は、プライベートな時間は、こちらの書籍の翻訳に主に集中します。しかし、翻訳以外にも、6月は原稿執筆も並行して行う必要があります。それ以外にも、様々な勉強会があったりしますので、忙しい4か月になりそうです。

体重計 [その他]


我が家では、25年前に結婚祝いとして頂いた体重計を長年使用してきました。今回、新たに体重計を購入しました。最新の体重計は、色々な機能がついています。Amazonでは、次のように商品紹介されています。
  • 測定データをSDカードに自動記録、簡単にパソコンへ転送可能
  • 付属のアプリケーションソフトで、自動的にグラフ表示
  • 1枚のSDカードで長期間家族全員分のデータが残せる
  • 「ステップオン」 + 「自動認識機能」を搭載し、乗るだけで測定、表示、データの管理まで操作不要
  • 指で触れるだけの簡単操作。スッキリとしたデザイン。身長などの数値データをラクに入力できる「タッチホイールスイッチ」を採用
  • 見たい項目から順に表示させることができる「カスタマイズスクロール」を採用
  • 体重急激増減お知らせブザーで健康的なダイエットをサポート
  • 女性ダイエットモード搭載。女性のダイエットに適した時期をランプでお知らせ
あと、50g単位で測定できます。

一度、家族を登録してしまうだけで、あとは乗るだけで記録してくれます。それにしても、この「タッチホイールスイッチ」は、iPodなどのように、くるくると指で回す操作をしながら設定をするのですが、体重計に付いているというのがちょっと驚きでした。

付属のSDカードに自動的に記録されていくのですが、データをグラフにして見るためのソフトウェアも(SDカードの中に)付属していますので、自分のPCにインストールすれば利用できます。とはいえ、SDカードをそのまま挿入できるPCはどれだけ普及しているのでしょうか。我が家には、SDカードをそのまま挿入できるPCは、ノートPCのVAIO Xだけです。他のノートPCは古いので、SDカードは直接挿入して読み取れません。

歯科パノラマX線撮影法 [その他]

3日ほど前から下の前歯1本だけが突然痛み出し、昨日、昭和大学歯科病院で診察してもらいました。口腔外科に行って、最初、歯全体のX線を取ってきてくださいと言われて、どうやって全体を撮影するのかと不思議に思いながらX線科で待っていました。

やはり、大きな歯科病院には色々な設備があるもので、「断層方式(回転方式)のパノラマX線撮影法」と呼ばれる方法なのですが、私は動かないで、機械が回転しながら撮影するというものでした。詳しくは、以下のURLに書かれています。

http://www.rada.or.jp/database/home4/normal/ht-docs/member/synopsis/030085.html

次に歯内診療科に行って下さいと言われて、今度は、前歯だけのX線を撮影してきてださいということで、撮影してから診察してもらいました。診察結果としては、神経が炎症を起こしているので、治療としては神経を抜かないとだめかもしれませんと言われて、2、3日経過観察ということになりました。

今回のようにひどい痛みがあるのは、20年ぶりかもしれません(「時の流れ」)。

オープンラボ岡山 6月19日(土)へ参加(2) [プログラマー現役続行]

以前にもお知らせしましたが、オープンラボ岡山に参加して話をします。

http://openlab.okaya.ma/

前日は、新横浜で「プログラミング言語Java」の研修講師を行っており、研修終了後に新横浜から新幹線で岡山に移動します。

名前のスペルミス [プログラマー現役続行]

コメントの日本語で書く以外に、プログラミングを日本語で行っている人は、かなり少ないと思います(ローマ字を使っている人はいるかもしれませんが)。ほとんどの場合、名前付け(クラス名、インタフェース名、関数名、メソッド名、パラメータ名、フィールド名、etc)は、英語で行うことになります。

私もそうですが、英語で行うためにスペルミスすることがあります。たとえば、単語の中の一文字が抜けているとかです。でも、日本人が書くプログラムの場合には、全くスペルが間違っていることがあります。それは、カタカナ発音をローマ字に置き換えてしまったりするからです。そのため、ソースコードを読んでいると意味不明の英単語が登場することがあるのですが、ローマ字読みすると、意味が分かったりすることがあります。

スペルミスなどは、本人は気付かないことが多いので、これも、(ペア・プログラミングを含む)レビューで指摘・修正していく必要があるかと思います。

RICOH & Java Developer Challenge 2010 [Java]

今年で3回目となる「RICOH & Java™ Developer Challenge 2010」のページです。

 http://www.ricoh.co.jp/javachallenge/

前回は、最終審査から参加させてもらいました。2010年の大会のマイコミジャーナルの紹介記事はこちらです。

http://journal.mycom.co.jp/news/2010/04/02/074/index.html

2009年の最終選考会のマイコミジャーナルの紹介記事はこちらです。

http://journal.mycom.co.jp/articles/2010/01/19/richo_and_sun/index.html

(私も写っています)

境界ワイルドカード [Java]

プログラミング言語Java (The Java Series)

プログラミング言語Java (The Java Series)

  • 作者: ケン・アーノルド
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2007/04
  • メディア: 単行本

本書の224頁の9行目に境界ワイルドカード(bounded wildcard)に関して次の制約が記述されています。
境界のある型変数と異なり、境界ワイルドカードは1 つの境界しか持つことができません。つまり、
1 つの上限境界か1 つの下限境界のどちらかです。たとえば、少なくともクラスValue であると同時 にSerializable を実装している要素を含んでいるリストの型に制限したいとしても、List<? extends Value & Serializable>とすることはできません。
実際には、直接的には、1つの境界しか持つことができないのですが、次のように代替することができます。

<T extends Value & Serializable> void foo(List<? extends T>)

なぜ、1つの境界しか持つことができないかについて、Neal Gafterに聞いたところ、複数の境界が指定できる箇所を制限したかったからだそうです。

KeyPressEventのgetCharCodeメソッド [Google Web Toolkit]

かなり前から気付いていたのですが、私のホームページ(http://www001.upp.so-net.ne.jp/yshibata/)の右上隅に表示されているデジタル時計のプロパティ(時計をクリックすると表示されます)で、「Font Size」が正しく変更できないブラウザーがありました。たとえば、Firefoxでは数字を入力後にDeleteキーを押しても削除されないという不具合です。

調査した結果、GWTのKeyPressEventgetCharCodetメソッドを呼び出した時に、正しいKeyCodeが返されないことが原因でした。以前は、正しく返されていたのですが、最新のGWTでリコンパイルした結果、動作が変わっていたようです。

GWTのIssuesを調べてみたら、登録されていました。
Issue 3753: KeyPressEvent contains improper UTF codes

とりあえず、KeyPressEventgetCharCode()メソッドとgetNativeEvent().getKeyCode()により、charCodeとkeyCodeを別々に取り出して処理するように変更することで、ホームページの不具合を修正しました。

採用面接 [プログラマー現役続行]

前職(富士ゼロックス情報システム)では、昨年までの数年間、新卒新人の1次採用面接を行っていました。一回に、3人から4人のグループ面接を行っていました。

面接では、プログラミングの経験を聞くのですが、大体があまり経験がないということが多かったです。本当は、プログラミングの問題を出して、その場でホワイトボードに書いて解いてもらうことをしないと、経験があると言われても確認できないです。しかし、そのような面接は一度もしたことなく、たぶん、行っても時間の無駄だったかもしれません。

私自身は、4回転職しており、多くの会社の中途採用面接を受けています。ソフトウェアエンジニアとして、採用するにも関わらず、今の会社も含めて、過去勤めた会社でプログラミングの問題を出されたことはないです。私が中途採用の面接官ならするのですが。開発の現場でプログラミングも含めた開発をしている人が面接官ではないので、そのようなプログラミングの問題を聞いたりしないのだと思います。

拙著『プログラマー現役続行』に述べている「strlen()関数をループ構文なしで記述しなさい」や「C++のvirtualの意味を説明しなさい」は、7、8年前に、某ベンチャー企業での採用面接で出された問題です。

プログラミングの問題だけでなく、どのような本を過去読んできたかとか、今読んでいる本は何かと聞くことにより、その人の自己学習に対する傾向を知ることができます。実は、中途採用の場合には、本人の自己学習の傾向や習慣を知ることで、経験の少ない技術領域の開発に対しても、きちんとキャッチアップできるかどうかの目安になったりすると思います。

ネーミングは設計の中心(2) [プログラマー現役続行]

半年前に「ネーミングは設計の中心」を書いています。再度、掲載すると。
ネーミングは設計の中心である。優れたネーミングはシステムの理解を助け、作業を容易にする。しかし、貧弱なネーミングはシステムの理解を妨げ、後でシステムを扱うプログラマに辛い日々を送らせる
マイケル・C・フェザーズ、『レガシーコード改善ガイド』
設計の中心ということは、ネーミングがいい加減だと、資産ではなく負債、特に、技術負債(「Technical Debt」)になることになります。