工藤探偵事務所

RESEARCH AND INVESTIGATION

Soliloquy of a Super Engineer (4) Star Trek in Apple II @ Oct 20, 2011

とあるメルマガに書いた原稿です。
2011年10月号(10/20日発行)されたものです。
ここにも載せておきます。


f:id:kudo-shunsaku:20120109220802j:image

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
◆◇ 『スーパーエンジニアの独り言 第4回 “スタートレック”』 ◇◆
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

今回の話題はスティーブ・ジョブス "Steve Jobs" に纏わる話題です。
スティーブ・ジョブスの訃報が流れたのはマスメディアでも大きく報道され
ご存知の方も多いと思いますが、56歳という若さで天に召されました。
(2011年10月5日に死去されました。心から哀悼の意を表します。)
彼はまさに生きる神様の一人であって、凡人から観れば神話の中の登場人物で
煌びやかなオリュンポスの神々の一人と喩えられるような存在です。
黎明期に於ける神々の名前の一部の列記を試みれば、

f:id:kudo-shunsaku:20120109221709p:image:w360

オリュンポスの神々

スティーブ・ジョブス "Steven Paul Jobs" a.k.a. "Steve Jobs"
◆ スティーブ・ウォズニアック "Stephen Gary Wozniak"
ビル・ゲイツ "William Henry Gates III" a.k.a. "Bill Gates"
ポール・アレン "Paul Gardner Allen"
◇ ケン・トンプソン "Kenneth Lane Thompson" a.k.a. "Ken Thompson"
◆ デニス・リッチー "Dennis MacAlistair Ritchie"
◇ ブライアン・カーニハン "Brian Wilson Kernighan"
ビル・ジョイ "William Nelson Joy" a.k.a. "Bill Joy"
◇ ビャーネ・ストロヴストルップ "Bjarne Stroustrup"
アラン・ケイ "Alan Kay"

多数の神々無数の星々の中でも、ひと際光輝く一等星の星たちですが、巨星
ジョブスに間髪いれずデニス・リッチーの悲報が届きました。
(2011年10月8日に死去されました。享年70歳。謹んで哀悼の意を表します。)
御二人とも長い闘病の末に亡くなった様子で、安らかに永眠されることを
お祈りさせて頂きます。星の世界に帰って地球を見守ってくださいませ。

f:id:kudo-shunsaku:20120109221920g:image:w360

神話の主人公である彼等の功績や逸話については、各所で回顧されています。
哀悼の意を表し、ここでは極めて私的で勝手な想い出を書かせて頂きます。

meet an Apple II @ Northern Island of Far East Country.

f:id:kudo-shunsaku:20120109204908j:image:medium

ジョブスとウォズニアック、二人のスティーブによって登場した名機と云えば、
Apple II です。当時、北国の田舎町に住む中学生(筆者)にとって
何の縁も所縁もなく、その存在すら知る由もなくて、計算機と言えば S.F. の中
での話だった頃。

中学校の同級生の家にお邪魔した際に、未来箱(Apple II)に出遭いました。
その新しい友人のお父さんが、計算機関係の仕事だったらしいのです。

未来箱の画面で動いていたのは "E", "K" などのアルファベットでしたが、
それこそがスタートレック("Star Trek"、邦題:宇宙大作戦)ゲームでした。

f:id:kudo-shunsaku:20120109205048j:image:medium

操作を説明して貰い友人宅に滞在している間、夢中で無言で画面と睨めっこ。
この所業のため、その後友人宅に招かれることはありませんでした。つまり、
Apple II を触れたのはその時限りの出来事でしたが、エンタープライズ号を
操作して角度を計算しクリンゴンに光子魚雷を発射する、まるでカーク船長に
なった気分と、この未来マシンを操作しているという快感という相乗効果で
それは紛れも無く未来体験であり筆者の原風景となりました。

f:id:kudo-shunsaku:20120109205310j:image:medium

筆者、中学一年生だった1978年の事です。

Butterfly effect

その後、計算機に触る機会は全くありませんでしたが、就職時にコンピュータ
の会社を選択したのは、この原初の記憶が影響していたのでありましょう。
入社して全く見聞きしたことないSun Microsystemsのマシンを触ること
になりましたが、SPARCstation 1にインストールされていたSunOS 4で
"/usr/games" の場所に、あの懐かしいスタートレックを見つけて狂喜乱舞した
のを覚えています。これも何かの所縁なのかもしれません。
風が吹けば桶屋が儲かる」のか「バタフライ効果」なのか、どちらにせよ、
極東の北国に住む少年にまで、ジョブスの影響があった事に相違ありません。

f:id:kudo-shunsaku:20120109221019p:image:medium

Star Trek New Generation, Deep Space Nine, Voyager and Enterprise

スティーブ・ジョブス死去のニュースと前後して、Appleから新製品お披露目
があり iPhone 4S、 iOS 5、 iCloud と立て続けに世間に大きな変革を与える
リリースを行いました。あたかも彼の分身が登場している感覚を覚えます。
これからもジョブスやリッチー達の影響は、将来的に続くことでしょう。
前述のゲームがiPhoneで "retroTrek" という名前で登録されています。

f:id:kudo-shunsaku:20120109205532p:image:w360

このゲームは、当初ミニコンからApple IIへ "Apple Trek" が移植され、
SunOS を含む多種のコンピュータ、そしてiPhoneでも動いているのです。
一つの影響が他者に派生し、更なる影響が伝播していくのを実感します。
何かしら連綿と続く輪廻転生のようにも感じることが出来るでしょう。

printf("Goodbye World¥n");

最後に、ジョブスの影響を肌で感じることが出来る一つとしてスタンフォード
の卒業生に贈るスピーチが有名でとても感動的です。心に響く内容であり、
死生観についても期せずして語られています。このスピーチの音声(肉声)が
公開されています。未聴の方々に是非ともお薦めさせて頂きます。

f:id:kudo-shunsaku:20120109220431j:image:medium

次回は、Doug Cutting講演(後半)をお届けするつもりです。お楽しみに。

f:id:kudo-shunsaku:20120109222024j:image:w360

Soliloquy of a Super Engineer (3) Doug Cutting Live in Japan @ Sep 29, 2011

とあるメルマガに書いた原稿です。
2011年9月号(9/29日発行)されたものです。
ここにも載せておきます。

f:id:kudo-shunsaku:20120108003848p:image

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
◆◇ 『スーパーエンジニアの独り言 第3回 “Doug Cutting氏 来日” 』 ◇◆
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
今回の話題は「Doug Cutting(ダグ・カッティング)氏の来日講演」です。
Doug Cutting 氏とは、あの "Apache Hadoop" の創造主です。

"Hadoop" は、TwitterFacebook など著名なサービスで大量データ処理の
仕組みとして採用されていますのでその名前を耳にしたこともあるかと思います。
今回、Doug Cutting 氏本人が来訪され各所で開かれるカンファレンスで講演
されると聞き、是非とも創造主である彼の話を聴きたくて(逢いたくて)
とあるカンファレンス会場に向かいました。

そこで幸運にも拝聴できた顛末の一部を書き記します。
"Apache Hadoop: A New Paradigm for Data Processing"
Doug Cutting, Architect, Cloudera, Inc.
まずは講演されたスライドタイトルの一覧です。

Apache Hadoop: A New Paradigm for Data Processing

◇ Who am I ?
Apache Hadoop : a new paradigm
◇ New foundations
◆ Commodity Hardware
◇ Sequential Access
◆ Open Source
◇ Nutch (2002)
◆ Nutch (2004)
◇ Hadoop (2006)
◆ HDFS
◇ MapReduce
◆ Hadoop: the ecosystem
◇ Cloudera's Distribution including Apache Hadoop
◆ Pig & Hive
◇ Avro
◆ Mahout
◇ HBase
◆ Flume
◇ pattern of adoption
◆ advantages of paradigm
◇ the future is data

f:id:kudo-shunsaku:20080803195701j:plain

introduction

シリコンバレーで25年のベテランです。」から始まった彼の講演ですが、
前半部分は、どのような経緯でHadoopが誕生したのか?というお話でした。

当時 Yahoo!に所属していたエンジニアが、Googleが発表した論文に触発
されて開発したソフトウェアがいきなり登場したのであろう、と理解(誤解)
されている方が多いかもしれませんが、どうやらそれだけでは無いらしいのです。

Doug's career

Doug氏自身のキャリアは1980年代にXEROXから出発しAppleMac OSのテキスト
検索エンジン開発、90年代にはExciteの検索エンジンを担当、そして全文検索
Lucene、それをベースとしたウェブ検索エンジン Nutch など、幾つかのオープン
ソースプロジェクトに関わっていました。そこではいつも、「大量データをどう
やって効率良く扱うか?」の問題と対峙することになり、その都度、試行錯誤を
繰り返していたそうです。

勿論、当時同じ問題に直面していたGoogle論文発表のタイミングやこのソフト
ウェアをプラットフォームとして採択して応援してくれるYahoo!への参画など、
ターニングポイントは幾つもあった事でしょうが、何よりも長年の地道な積み
重ねがあってこその現在のHadoopだと言えましょう。

それ故、オープンソース Hadoop の存在意義を改めて認識した次第です。

「脚踏実地」。紆余曲折ありながらも、ひとつの課題を長年に渡り突き詰めて
いくことで成功した彼の実直さ、講演で一番感慨深かったのはこの事でした。
ところで肝心の Hadoop についてですが、Doug Cutting 氏曰く、

New Paradigm

Apache Hadoop が一つの新しいパラダイムであり、
これこそがデータ解析における回答となるでしょう。』
という主旨の事を仰っていました。

この講演を拝聴し、これからHadoop を勉強してみたいという気持ちが
膨らんだのは事実です。
「千里の道も一歩から」の言葉を再び噛み締める必要があるのでしょう。


Current officers of The Apache Software Foundation

Doug Cutting 氏は現在、Hadoop を生業とする Clouderaの社員なのだそう
ですが、加えてASFの委員長(チェアマン)でもあるそうです。
Current officers of The Apache Software Foundation:
http://www.apache.org/foundation/

講演内容の続きについては、また次回ということにさせて頂きます。

f:id:kudo-shunsaku:20110901105112j:image

追記です。

講演中には登場しませんでしたが、Doug は "Hadoop" を持参してきてました。
ちゃんとネタも用意してあったのです。
聴講者に声を掛けられて、実は、、、という風味で鞄からゴソゴソ取り出して一緒に写真を撮ってました。
人見知りの探偵は直接を声をかけられなかったので、その撮影風景を撮らせて頂きました。
ですから、写真に写っている眼鏡の方は知らない人です。
飽く迄、探偵ではありませんので、その点悪しからず。

Soliloquy of a Super Engineer (2) Java SE 7 Part 2 @ Aug 18, 2011

とあるメルマガに書いた原稿です。
2011年8月号(8/18日発行)されたものです。
ここにも載せておきます。

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
◆◇『スーパーエンジニアの独り言 第2回“(続)Java SE 7 登場” 』◇◆
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

今回の話題も前回の続編で、先日7月28日に5年ぶりのメジャーバージョンアップ
正式リリースが為された「Java SE 7 (JDK 7)」その続きです。
OracleSun Microsystems を買収して最初のメジャーリリースとなります。
新機能として搭載が予定されている主要な機能は以下が挙げられます:

◇ もっと新 I/O ("NIO.2") (JSR 203)
◆ 細かな構文変更 (Project Coin) の一部 (JSR 334)
JVMの動的型付け言語のサポート (JSR 292)
◆ G1ガベージコレクタの導入 (Garbage-First GC)
◇ クラスローダの拡張
Unicode 6.0
◇ etc ...

f:id:kudo-shunsaku:20120107011143j:plain

前回ご紹介したのは、非同期入出力サポートされた「NIO.2」と、簡略表記などを
可能とする「言語仕様の細かな変更(Project Coin)」でした。

invokedynamic

f:id:kudo-shunsaku:20110911191057p:image:medium

今回取り上げる「Java仮想マシンJVM)」への機能追加の一つである「動的型
付け言語のサポート」は、JVMが更なる汎用プラットフォーム化を目指したもの
であり、無数にあるプログラミング言語に向けての誘致メッセージとも受け取れ
る機能であり、Javaの将来を左右する程に特に重要な変更といえましょう。

具体的には「invokedynamic命令」という新しいバイトコードが追加されることを
意味しており、このバイトコードがいったい何をするのかは、「呼び出される
実際の型に合わせて引数の型変換を試みる。」と、いうことらしいのです。
つまり「動的型付け言語のサポート」という名前そのものの機能ですが、JVM
この機能を搭載するためへの実装はとても困難であったことだと想像されます。
(参照実装プロジェクト "the Da Vinci Machine Project" があります。)

f:id:kudo-shunsaku:20110911192600p:image:medium

そうして新機能を搭載したJVMが登場したのですが、直接この機能を利用する
のは、JVM上で動作する動的型付け言語のコンパイラを実装する方になります。
各々の動的言語コンパイラを実装される際に、メソッド呼び出しの
「invokedynamic命令」とこれに付随するメソッド・ハンドル(Method Handle)
という新しいリンケージ・メカニズムを利用する事により、JVMで高速に動作
するバイトコードを生成できるようになるのだそうです。

Any Language on JVM

現在 Javaプラットフォーム上で動作する動的言語としては JRuby を筆頭に、
Jython、Beanshell などあり、新機能がこれらコンパイラ開発を加速させる事
が予想されます。またJVM上で動作する他の言語としては、Scala, Clojure,
Groovy なども Java の有力な後継者として名乗りを挙げています。最近では、
チェコ発の "Kotlin"(ロシアの島の名に由来)という新言語も登場しました。
曳いては、将来も多種多様な所謂「JVM言語」の利用が期待されるのです。

これら恩恵に与るのは、プログラマのみならず、寧ろインフラエンジニアに
こそ、大いに恩恵を賜ると言い換えることが出来るでしょう。

その意味合いとして下層のみならず上層への抽象化度合いを深めることで
多様な言語が実行可能な中間層として顕著になれば、各種プログラムを実行する
ためのデファクト実行環境として更に重要な位置付けがされることになります。
(背景として幾つかの代替候補も成長しつつあるのが現状です。)

ところで Java のキャッチフレーズを覚えていらっしゃるでしょうか?

"Write Once, Run Anyware."

Java SE 7 からの新キャッチフレーズとして言い換えれば、

"Multiple Language, One Virtual Machine."

ともいえるかもしれません。

この機能「動的型付け言語のサポート」紹介に関しての補足事項ですが、既に
ご紹介したように現行では事実上、コンパイラ開発者向けの機能となっています。
この機能を Java言語から利用するためには、文法レベルのサポート
(とライブラリ)が必要と思われますが、JDK 7では未だ十分ではない様子です。
これに関してはJDK 8 で機能追加で為されるとも聞き及んでいます。
今後に更に期待して待ちましょう。(Project Lambda の一部になる予定。)

他の新機能についてのご紹介は、また次回ということで。

Soliloquy of a Super Engineer (1) Java SE 7 Part 1 @ July 22, 2011

とあるメルマガに書いた原稿です。
2011年7月号(7/22発行)されたものです。
ここにも載せておきます。

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
◆◇『 スーパーエンジニアの独り言 第1回 “Java SE 7 登場” 』 ◇◆
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

今回の独り言は、7月28日にメジャーバージョンアップの
正式リリースが予定されている「Java SE 7 (JDK 7)」の話題です。

新機能として搭載が予定されている主要な機能は以下が挙げられます:

◇ もっと新 I/O ("NIO.2") (JSR 203)
◆ 細かな構文変更 (Project Coin) の一部 (JSR 334)
JVMの動的型付け言語のサポート (JSR 292)
◆ G1ガベージコレクタの導入 (Garbage-First GC)
◇ クラスローダの拡張
Unicode 6.0
◇ etc ...

f:id:kudo-shunsaku:20120107011143j:plain

NIO.2

ライブラリでの機能拡張の目玉として "NIO.2" で非同期入出力サポートである
java.nio.channels パッケージが用意されます。

これには "AsynchronousSocketChannel" など4つの非同期チャネルがあり、
バッファ(ByteBuffer)を取得し、それに対して読み取り/書き込みすることで、
処理が非同期で行われます。非同期チャネルによって下位のファイルやソケット
は、隠蔽され抽象化されます。また実行プラットフォームの対応次第では、
ネイティブな非同期機能が利用されることで、実行速度の向上も見込めます。

Project Coin

f:id:kudo-shunsaku:20110828210105p:image:small:right

次に「言語仕様の細かな変更(Project Coin)」と題されている新機能では、
コーディングでの記述構文の一部が変更されて簡略表記が可能になりました。
(「細かい」ので、コインなんだそうです。)

例えば、Genericsでの例を挙げますと、従来では

  Map> map
      = new LinkedHashMap>();

と書いていましたが、Java SE 7 では、

  Map> map
      = new LinkedHashMap<>();

と、右辺の型指定が省略できるように構文が改良されました。
(これを "Diamond Syntax" と呼ぶようです。省略された "<>" が、
ダイヤモンドに見えるからだそうです。)

他にも構文変更では、"switch" 構文での条件式に "String" オブジェクトを
使えるなどといった細かな変更が多数ある様子です。

プログラマにとってだけでなく、メインテナンスでの互換性の問題も含めて
シンタックスが変わるのは結構悩ましいことですが、簡略化できるという事で
可読性が落ちない様に、コーディングすることが重要になるでしょう。

他の新機能についてのご紹介は、機会があればまたいずれ。

Project Lambda

今回の新機能で搭載が期待されており、大きな話題であったクロージャ
(Project Lambda) は、結局 Java SE 8 へと持ち越しになりました。

Java SE 6 で仕様確定の際に実現を見送った機能が、次期に盛り込まれる予定で
Java SE 7 では長期に亘り新機能への取り組みが為されてました。紆余曲折を
経た末に全てを盛り込む事が出来ず、再度 Java 8 へと申し送りされました。
今後は Java 自体の方向性として Java 8 を注視するのが肝要となるでしょう。

About JVM

現在、最もポピュラーなプログラミング言語でありアプリケーションの実行環境
としてもデファクトスタンダードの位置を確保しているのが "Java" です。
単なるプログラムではなく実行処理系としてJVMがシステムの重要な位置を占め
ているのは既知であり、将来を見越しても当面その座は揺るがないでしょう。
Java VMに於ける「動的型付け言語のサポート」こそが、JRubyを代表とする
処理系の誘致を示しているのであり、そこからも計り知れます。

まさにクラウドコンピューティングに於いても開発言語としてだけではなく
実行環境及びシステム/サービス間のインターフェースとして必須の知識です。

"Java 5" で文法自身に大きな変更が加えられたのは知っているものの、所謂
"Java 2" までの理解で完了していて現在進行している動向に追従できていない
方々が(筆者を含めて)大勢いることかと想います。
あらゆるシステムが、仮想化/クラウドサービス化されていくのを機会に、
Java 関連の棚卸しするために知識の習得/再確認されるのは如何でしょうか?
(トレーニングコースも順次、新バージョンにアップデートされる予定です。)