Nikkei Linux 2008-09

日経Linux 2008年9月号を見ました。Eee PC 901 が相変わらず魅力的です。Micro-Star International Wind Notebook U100, Acer Aspire one, ASUSTeK Computer Eee PC 901-X といろいろ出てきていますが、バッテリ駆動時間を考えると Eee PC 901-X しかありえません。CPUスペック、メモリから考えると非力ですが、実売価格 59,800円程度ということなので、ちょっと頑張れば手が届きます。現在 iBook で使っているのと同じ程度の利用方法なら十分使えるのではないか、CLIEが必要なくなるのではないか、などと思うのですが、VAIO-Uのときにちょっと失敗した感があったので、慎重にならざるを得ません。

とりあえずは9月のMac新製品発表の内容を見てから判断しようかと思います。iPhone + Mac Book が一番良かったりして…

Puppy Linux も新しいバージョンに日本語が対応したということで興味があります。USB起動できるLinuxは用意しておくと何かと便利そうです。もう少し利用方法について考えてみないといけませんし、手軽さでは仮想マシンより見劣りはしますが、パソコンの環境を基本的に変えずに、ハードウェアだけ借りたいときには便利なはずです。4GBの容量だけで完結するものをインストールしておくのがいいと思いますが、「完結」というあたりが難しそうです。

カテゴリー: Book

Cisco WAN Book

仕事の関係で、若干お手伝いをしました。「Cisco WAN 実践ケーススタディ」という本ですが、ルータに興味があって、Cisco製品を使っている場合は、面白いと思います。こういうハードを使っている人にとっては、ハードウェア依存の技術書はなかなか出版されないので、こうやって出てくるとうれしいのではないでしょうか。

カテゴリー: Book

Software Development

「Googleを支える技術」が東京の方では山積みにしている本屋が多かったので、購入してみました。技術的な面について興味深いのはあたりまえですが、文化的な面も非常に興味深いです。これまでも、断片的には聞いていたのですが、本で文章として整理された形で説明があると、いろいろと考えるのに参考となります。

関連する目次を示すと、次の通りです。

第6章 自主性が重視されたソフトウェア開発
  ・選ばれたプロジェクトだけが生き残る
  ・少人数からなるプロジェクトチーム
  ・コードレビューにより品質を高める
  ・早い段階から性能について考えられる
  ・新しいWebサービスが始まるまで
  ・情報は徹底して共有する

オープンソース方式をうまく取り入れている感じがします。前提としては、オープンソースを開発できる人材がいること、人数がある程度いること、が要求されるので、中小企業では実践は難しいのですが、参考になる点は非常に多いです。リスクを減らすために、社内評価をするというのはよくある話ですが、ドキュメントだけではなく、実際に動くものを提供させて、コード・サービス内容まで含めて評価をして淘汰していく、といったあたりが、Googleらしいということになります。普通の企業では、ここまで開発者に作業を進めさせません。研究所であれば別なのですが、Googleではみんな研究員的な立場で仕事ができるということになります。一般的には研究員はコストが高いので、入社したはいいけど遊んでいただけ、というわけにもいかないので、オープンソース開発をしつつ研究ができる人材しか雇わない、ということになるのでしょう。ソフトウェア開発は、コンピュータがあれば何とかなる世界なので、生命科学とか物理といった分野の研究よりも研究環境自体の用意はしやすい状況です。あまりにも計算量が多い処理はパソコンでは難しいですが、ちょっとしたアイデアのプログラム化は個人でもできてしまうからです。

そういったことを考えていくと、設備的にはソフトウェア分野は、他の分野に比べて有利なので、後は時間をどのように確保するのか、というのが問題となってきます。Googleでは、80%は仕事、20%はクリエイティブな活動に割り当てることになっているようなので、20%の方でオープンソース開発をしていると考えればいいのでしょう。その活動に対しても評価をきちんとしているらしいので、その仕組みが良ければ、開発者のモチベーションは高く維持できるはずです。このことからわかるのは、一般企業での一日の仕事はGoogleでは80%の時間内で終了させる必要があり、日本の普通の開発者が時間外でやっている作業は20%の時間でやることができるような人材でないと、もたなさそうだ、ということです。オープンソースを開発できる研究員というだけではなく、この条件もクリアしないといけない、というあたりからも、Googleが要求する人物像はレベルが非常に高いということがわかります。これが実践できる人材なら、どこの企業でも欲しがるだろう、ということは容易に想像がつくので、こういう人になれることを目標としてみてもいいのかもしれません。

カテゴリー: Book

Kaizen

「マンガでわかるトヨタ式カイゼン」をざっと読みました。「カイゼンのドラゴン」という異名を持つ主人公が生産ラインに立つ人の作業をチェックして、「カイゼンの仕方」を教えます。ポイントは主人公はコンサルタントみたいな立場なので、例は出すけど実際のカイゼン案は担当者が出すように徹底をしている、という点です(たぶん)。社内でのカイゼンワークフローをきちんと確立するということ、カイゼンを提案して実施できる人をきちんと評価するということ、が重要だということで、これだけ書くと当たり前のように聞こえます。トヨタでは、具体的な実施方法があり、視える化も徹底して行っているということがすごいことなのでしょう。

極端にいえば、やっていることはPDCAなので、それが生産ラインの現場でまわるようにしているわけですから、どの分野にも応用が聞くはずです。というか、PDCAの具体例のような気がします。ですから、ソフトウェアの開発においても、参考になる部分が多いと思います。アジャイル方式は「トヨタのカンバン方式」に強く影響されている、といった話も聞きますから、改めていうことでもありませんが。しかし、ソフトウェア開発では、生産ラインのように「各自の負担をならす」とか、「各自の作業時間を計測してムダをはぶく」みたいなことは難しいので、そういうのは、どうすればいいのかが、考えどころのような気がします。

カテゴリー: Book

KisoJava 7

改訂版 基礎 Java を執筆するにあたって意識した事 その7

KisoJavaをキーワードとして、Google検索をすると本サイトがトップになるのは前回と変わっていません。KisoJavaで検索する人はほとんどいませんから、どうでもいいことなのですが、とりあえずトップ維持ということでよかったです。

KisoJava 6」ではファイルの入出力について、取り上げた理由について説明をしました。ここでは、Part 1の内容について総括をしてみようと思います。

Part 1のタイトルは「Javaプログラミングの常識」とあるように、プログラミングを理解するにあたって常識として知っておくべき基本中の基本について、まずは理解してもらおうと考え、常識といえる内容について説明をしています。コンピュータへ命令をして、処理を実行させることは、それほど難しいことではないということを、まず最初に感じてほしかったので、BeanShellを使って手軽にプログラムを作って実行する方法を紹介しています。後半のファイル入出力や文字コードの話は難しい内容ですが、コンピュータ技術者を目指す人は避けて通れない部分ですから、取り上げました。Javaに限らず、他のプログラミング言語でも役に立つ共通の内容なので、ここにある内容はよく理解してから次に進んでもらいたいところです。

Chapter 1 Javaの特徴を理解しよう
Chapter 2 Javaプログラムを動かしてみよう
Chapter 3 コードはコンピュータへの命令です
Chapter 4 プログラムの動作をコントロールしよう
Chapter 5 プログラムからファイルの読み書きを行おう
Chapter 6 2進数と数値の表現
Chapter 7 文字の表現

個人的に、最初はコンピュータでプログラムを動かすことさえも、ドキドキしながらだったので、Javaプログラムを動かしてみるというところから話を始めています。どうしても、コンピュータに慣れてしまうと、初心者だったころのドキドキを忘れがちなのですが、初心者だった頃のことをできるだけ思い出しながら説明を書きました。それでも、本当の初心者にとっては敷居が高い部分もあると思います。プログラミング自体が簡単ではないので仕方ないのですが、BeanShellを使うことで、少ない入力コードで動作確認ができることを紹介しましたので、疑問に思うことはどんどん実行してみて、結果を見て理解を深めるのが近道ではないかと思います。

Software Test

「現場で使えるソフトウェアテスト Java編」という本が売っていたので購入してみた。下記のツールについて説明がされているようですが、それだけではなく体系的に、ソフトウェアテストについて解説がされているようです。まだ詳細は読んでいないのですが、参考にしようと思います。

・Checkstyle → コーディング規約チェック
・FindBugs → バグパターン検出
・JUnit → 単体テストの作成/実行
・TPTP → プロファイリング(非機能テスト)
・djUnit → カバレッジ計測
・StepCounter → ソースコード行数測定