2017年9月18日

追悼 - 桜上水 進京亭

自分が一番親しんだラーメン屋といえば、間違いなく京王線桜上水駅北口にあった「進京亭」の名を挙げるだろう。父に1973年に連れていってもらったのが最初で、その後渡米期間を挟んで1975年から2016年までずっとお世話になった店である。他の店にはないラーメン、とりそば、ワンタンメン、味噌ラーメン、ギョーザ、ニラレバイタメ。全部逸品だった。しかも43年にわたって味がほとんど変わらなかった。最初は店主と妹さんでやっていて、そしてそれがすぐ店主と店主の奥様に代わって、その後娘さん、息子さんと店によく出入りしていたのを覚えている。なにしろ私が小学生の頃から中年になるまでずっと世話になっていた店だった。

2017年春より休業、そして2017年8月末に「忌中」の掲示が店に出ていたそうで、私も先日店の前で手を合わせてきた。どんな店だったかについては、この記事が参考になるだろう。

自分にとっては、1つの長い時代が終わった感は否めない。亡くなられた店主のご冥福をささやかながらお祈りする次第である。

2017年5月13日

書評: 「Docker実践入門」

書誌情報: 中井悦司、「Docker実践入門」、技術評論社、2015, ISBN978-4-7741-7654-3

(本書は2015年9月に技術評論社Software Design編集部の池本様よりご恵贈いただきました。書評が大変遅れて申し訳ありません。)

Dockerは今やLinuxのエンジニアなら誰でも知っているコンテナ技術を稼動させるためのプラットフォームである。この本は2015年9月に出版されたもので最新の情報は反映されてはいないが、それでも内容については今でも読むに耐えるものが多く含まれている。

私自身はLinuxとは現在に至るまであまり親密な関係ではなく、研究開発にはもっぱらFreeBSDを使っている。コンテナといえばFreeBSDのJailという(いささか物騒な)名前の技術の印象が強く、単なるコンテナという観点ではDockerにあまり新しさは感じていない。

しかし、Dockerの魅力は、コンテナの利用の仕方に対して一定の定義を与えたところにあるのだと思う。用途を限定した単一機能サービスを提供するコンテナを組み合わせるサービスモデルと、開発結果と動作環境を併わせてコンテナに封じこめ継続開発を可能にする開発モデルを明確に打ち出し、それらを複数統合して管理し運用する(オーケストレーションの)ためのサポートツールを整備することで、それまでのハイパーバイザベースだった仮想マシンの管理の手間を省いて大規模運用を行えるようにしたのが、Dockerが流行り普及しつつある理由ではないかと思っている。

本書でもDockerの基本的な考え方に最初の第1章を割いて詳細に説明している。大規模な開発運用テスト環境の維持管理、デプロイの効率化、そして 運用サーバー基盤を変えずにアプリケーションの更新をしたいという3つの要請に対して、Dockerがどんな技術をもってそれに応えているのかが詳説されている。この章だけでも読んでおく価値はあるだろう。(この章はDockerを運用する上で不可欠なGitについても概要を説明している。)本書の第2章以降は、実際にDockerでどのようにしてコンテナを生成し連携させて動かすのかについての具体的手法が示されている。

Dockerを取り巻く技術は常に変化しており、最近はLinuxだけでなくWindowsやmacOSでの動作や、Moby projectという、よりOS間の可搬性を高めた動作環境の追求という方向へ向かっている(Publickeyによる2017年4月の記事)。書評が2年近く遅れた者がこういうことを書く 資格がないことを承知であえて書くなら、ぜひ本書をアップデートした第2版を読んでみたい。

2017年2月26日

一体私は何者か: 複数言語を扱う苦悩(2016年9月)

以下は、昨年2016年の9月24日に書いた文章である。この月はスウェーデンのストックホルムに行き、月の後半には奈良で ACM Erlang Workshop 2016に参加したりしていた。ストックホルムの紀行文はいずれ書きたいと思うが、まずはこの雑文を記しておく。


今月(注: 2016年9月)はとても忙しい月である。妻の白内障手術のフォローとか、東京拠点のメンテナンスとか、仕事の作業とか。しかもまだやるべきことが終わっていない。だから月末まで走り続けなければいけない。しかし、昨日JR奈良駅近くから近鉄奈良駅まで急いで7kgの荷物付きで歩いたりなど、奈良市内で5kmは歩いたので、右膝が死んだ。Erlang/Elixir界隈のスーパーな若者に「膝」を名乗る人がいるのだが、彼のことを思い出した。

今月は徹底的に人間的に「自分は何者か」を考えさせられた。基本的に日本語と英語の脳は別にできていて、別の人格が出てくるので(もちろん統合はしている)、両方をフル活動させないといけないときは、とても疲れる。具体的には、Erlangのことでストックホルムに行って発表した後、さる方の御自宅にて歓待していただいたときとか、昨日奈良に行ってErlang Workshopの後の宴会のアレンジで注文他の通訳者をやったとか(幸い日本通の米語母語話者が2名強力に説明してくれたので私は補助的役割で済んだのだけど)、そんな時はふだんの10倍ぐらい疲れる。

そして宴会が終わった後、「自分はいったい何だったんだろう、ひどい英語しゃべって、ひどい日本語しかできなくて、とんでもないよねえ」という徒労感にいつも襲われるのである。

帰国者として日本社会の構成員の大多数(特に出国経験のない人達)から非国民扱いされるのはもう慣れたし、そのことは普遍的であろう人権の理念に立てばまだ申し開きようもあるだろう。でも複数言語を同時に使うことによる苦痛、そしてさらにその先に自分自身であることを要求されることの苦難に耐え抜かなければならないことは、誰に申し立てようもなく、自分で背負うしかない。とても悲しい。年々酷くなっていく米語の滑舌と、悪くなっていく頭の反応速度。自分の理解が進んだせいで自分の欠点がわかるようになったということもあるが、加齢はきつい。いつ死んでもおかしくない。

そんな泣き言を言いつつも、仕事と生活は続く。終わらない。成果を出さねば。成果のための環境整備をせねば。そんな気分で最近はいつも寝ている。明日のことを考えなくて済む人達をうらやましく思いつつ。そんな人達はいないのかもしれないが。

2017年1月27日

好きなことをして生きていくこと

2017年1月から仕事でペパボ研究所のお手伝いをしている。ペパボ研究所の研究リーダーである松本亮介akaまつもとりーさんが「好きなことをして生きていくこと」を淡々と熱く語っていた。そこで読みながら感じたのは「自分は本当にコンピュータが好きだったのだろうか?」という自分に対する問いであった。すこしその観点から書いてみようと思う。

もちろんコンピュータは好きだったんだろう

コンピュータが好きだったかと聞かれたら、それはもちろん好きだと答えるだろう。1973年の8歳の時、電電公社の電話計算の開発をしていた人にお世話になって、DEMOSのコンピュータまで触らせてもらったことがその後の自分の人生に大きな影響を与えたことは間違いはない。父がコンピュータを日常的に使っていた研究者だったのも当然影響していると思う。1974年に渡米中にコロラド大学の環境科学共同研究センターにあったCDC6600で最初にパンチカードでFORTRANのコードを実行したのもプラスにこそなれマイナスにはならなかったに違いない。当時は英語はロクに読めなかったけど、父の周囲の日本人研究者の人達が持っていたALGOLやAPLの本を読ませてもらった。「将来は絶対家にコンピュータが欲しい!」と思ったのもこの時だ。

1975年にテキサスインスツルメンツの74シリーズのTTLとモトローラの4000シリーズのCMOS、1976年にインテルの8008、そしてすぐに8080を知ってからは、アセンブリ言語が身近なものになった。そしてバスタイミングやファンアウトなどのデジタル回路の基本を勉強し始めた。実際に回路を作って実装できるようになったのは中学2年になった1979年以降だけど。家から秋葉原が通える位置にあったこと、そして1970年代はデジタル回路のデータシートを置いてあるような本屋が新宿にあったことなど、いろいろな好条件が重なったことが影響したのは間違いないと思う。あとは周囲の人達の影響だろうか。そのころからの付き合いが今もFacebookやTwitterで続いていたりする。

1979年にApple ][の実機を入手できたことは、それ以降の世界を大きく広げた。1980年代に入ると、自分で簡単なコンパイラを書いてそれがそこそこ売れたりしたこともあって(GAME-APPLEコンパイラ、ASCII誌1980年4月号)、コンパイラやインタプリタの製作技法に興味を持つようになる。すでに他界された中西正和先生の「LISP入門」という本を読んでLISPにも興味を持ったりした。タイマー駆動でPSGを演奏したり、いろいろなことをやったと思う。

でもコンピュータでは一番になれなかった

ただ、世の中はそう順風満帆に行くものではない。高校2年生の1982年に網膜剥離と白内障で事実上右眼の視力が使いものにならなくなってからは、目に過度に負荷をかけるコンピュータをやる気にはなれなかったのと、大学受験に集中する必要もあって、1985年までコンピュータをほとんど触らない時間を過ごすことになる。その間に流行ったのは、ゲーム作りやフロッピーディスクのプロテクト外し、そしてコンピュータグラフィックス(CG)であった。これらの流行りに乗れなかったことは、現在まで後に尾を引いているように思う。今もCGは苦手だったりする。

そして1985年のNTT民営化に伴う電話回線開放以降は、多数の「すごい人」達に出会って、プライドを粉々にされる日々が続いた。たぶん純粋に好きだからではなく、人を見返すためだけに行動するという動機が加わったのはこの頃からだろうと思う。パソコン通信は世界を変えるだろうと思い、その周辺の通信技術も随分勉強した。アスキーネットや日経mixといった各種BBS、そしてJUNET、UUCPやSMTP、NNTPといったWebより前のメッセージ交換の技術学習と研究に没頭したように思う。「フリーソフトウェア」という概念を学んだのもこの頃だった。

でもこのころ「コンピュータが好きだったか」と聞かれると、残念ながらそうではなかったように思う。コンピュータのプログラミング言語や各種メモリ管理の技術は大事だし、当時流行ったC言語は仕様からすべて覚えて実際に使っていたけれど、機械の中だけで完結する世界を立派にしたところでどれほどの意味があるのかという問いへの答は出ていなかったように思う。だから大学院の修士課程では、今なら花形であろう関数型言語の研究をやっていた研究室に進学したにもかかわらず、ロクに大学に行かずに劣等感のカタマリになっていたことを覚えている。ちょうど1990年前後のバブル絶頂期でもあり、周囲が派手にカネを使って遊んでいる中で、自分は英語の勉強とかコンピュータの勉強とかで人間関係に苦労していて、新卒でOS開発の仕事をしていたころもTCP/IPの実験が十分にできないというジレンマに苦しんでいたこともあって、とても人生は辛かった。

そして他のことでも一番にはなれなかった

1992年に結婚と同時に大阪に移住してからは、インターネットの関連技術の研究開発の仕事をずっとしている。もちろんインターネットはコンピュータの技術なのだけど、それでコンピュータが好きになったかどうかと言われるとこれもかなり疑わしい。OSひとつを取ってみても、主流の製品を選ばなかったことは後々まで影響している。自分は4.3BSDからSunOS 4.1.xを経てBSD/OS、FreeBSDへと進んでいったのだけど、周囲はWindows95だったりLinuxだったりという状況を経て、いまや世の中はLinuxだらけになってしまった。

どんなに良いものでも、独占的状況を占めると、悪いところが目につくようになる。バージョン9以前のMacOS(OS XやmacOSではない)のろくでもないメモリ管理、Windows XP以前の脆弱性、そしていまだにまともなデスクトップが作れずGNUismにまみれているLinux(そして今使っているFreeBSDもデスクトップが貧弱なことは同じだ)など、常時利用するには好きになれないソフトウェアが増えた。Webブラウザだってそうだ。背景が白になっているというだけで目の悪い者には大きな負担になるし、必要のないソフトウェアが集まってbloatwareになっている。インターネットもIPv6に移る移ると言いながら未だに日本ではIPv6の普及率は低い。

でもソフトウェアなりコンピュータがコモディティになって一般化する上で大事なのは、性能よりも広告とマーケティング、そして中身よりも見かけ、本質よりも利便性なのだということを2000年代に自分は学んだように思う。このことが絶対的な悪だとは思わないが、善だと言い切れるほどの自信は自分にはない。良くて「必要悪」がせいぜいだろう。

そしてマーケティングと広告だけを重視したツケは、基盤部分に回ってきて大きな技術的負債、あるいはもっといえば技術的賠償責任(technical liability)になってきている。世の中全体のvolatilityも上がり、ずいぶん不安定になってしまった。Twitterの過激な発言と炎上を繰り返して政治的権力を握るなんていう軍事プロパガンダと変わらない手法が一般的になってしまった。こんなことになってしまったコンピュータとインターネットをいまさら好きになれるのだろうかという疑問はこのころから今も残っている。

そして自分は2000年から2013年までの間は、研究者としてなんとかのし上がることに懸命だった。スタートが遅れた分、いくつかのプロジェクトを渡り歩き、自分には向かない長距離通勤を課せられる教授のポジションをあえて勤めて身体も精神も壊し、自分の望んでいない失職と雇用保険受給という厳しい経験もした。日本の組織は、しょせんプロパーでない者、そしてリモートワークの人間には冷たいということを、改めて身をもって学んだ。

わざわざならなくてもいい研究者になったのは、2002年に大病をして、もうその時点でやれることをやるしかないという諦めがついたからだが、結局のところそれは、博士でなかったことで侮辱されたこと、そして親父が教授だったのに自分は教授にすらなれていなかったことという劣等感がなさしめただけなのかもしれないと今は思っている。なにしろ世の中には大学を出ていなくても研究所の所長や教授になってしまう人もいたりするので(もちろん当事者が有能かつ優秀でなければこんな人事はあり得ない)、そういう勝負をすること自身無駄だったのかもしれない。ずいぶんな回り道をしたものだと苦笑している。

一番になれなくてもやれることをやるしかない

失職と共に人生肩書も名誉も何もなくなってしまった状態で、なにをして生きていくか。まずはとりあえず仕事をもらうために周囲の人達にお願いして回った。ありがたいことにお客様として支援してくださる方々がいるおかげで、仕事をしてなんとか食えている、現在の私がある。このときお客様になってくださった方々からいただいた話は、当然ではあるのだが、過去の自分の仕事と業務実績に基づくものであった。具体的には、自分が人生の早い時期で好きになったコンピュータに関する仕事であった

残念ながらコンピュータ屋としては自分は一番になれなかった。そしてもちろんその他のことでも一番にはなれなかった。ただ、一番になれなかったからといって、自分が生涯やっていく仕事としてコンピュータ技術を使えなくなったわけではない。幸い、コンピュータの仕事をすることは今でもそれほど苦痛には感じない。仕事としてだけではなく生活の一部としてなじんでいるレベルにまでコンピュータ技術の身体性を維持できていることは幸運としかいいようがない。それは結局のところ「好きなことをして生きていく」ことを実行しているのだろう、ということは思っている。

最後に「好きなことをして生きていくこと」が残った

コンピュータの世界は変化が激しい面と、そうでない面がある。自分が好きなのは、変化の激しい分野ではなく、表面的に変化の激しい分野から、変わらず進んでいく技術要素を時間をかけて追いかけていくことなのだと思っている。伊藤直也氏のまとめたプレゼン資料にあるSystem of RecordとSystem of Engagementのどちらに自分が興味があるかといえば、System of Recordの方だと思っている。社会基盤を維持する技術の方が、人間相手に機械を使ってもらう技術よりも自分には向いていそうな気がする。

多くの人達が集まり、新しいアイディアが実装され実行されていく分野は、変化が激しい。そして競争も激しい。Webのフロントエンドがそのいい例だろう。System of Engagementに関する技術は、日々変化している。Makerムーブメント、スマートフォンの台頭、IoTのバズワード化。こういう変化に富んだ技術と触れているのは楽しいし、人間の使い方がこのような技術の発展に伴い変わっていく以上、技術者としても付いていかなければならない。

一方、本当に仕事としての価値が発揮されるものは、System of Recordの分野に属するものだと思っている。安定しているものが不安定になればすぐに社会に混乱が起きる。それほど今の社会は脆弱である。現実には、プログラミングもHTMLのテンプレート作りもいまだにエディタを使ってやっているし、OSだってUNIXから飛躍的な変化があったわけではない。そういう意味では爛熟した技術をいかに粛々と適用していくか、ということをやってきたからこそ、自分の今の生活が維持できているのだと思っている。この一見当たり前のように見えることが、実はビジネスになるのかもしれない、ということを最近は実感している。

前述のプレゼンの後日談として伊藤直也氏の記事が出ているが、そこに述べられているように、System of RecordとSystem of Engagementは、対立軸ではあっても、排他的概念ではない。両方の長所を掛け合わせるようにして仕事を動かしていくのが、おそらくコンピュータ屋、そしてソフトウェア屋として為すべきことなのだろうと思っている。そこに自分が研究者としてやってきた経験と、そこで学んだ学術的手法を活かせれば、おそらく「好きなことをして生きていく」実感を得ながら、仕事のサービスを通じてお客様に価値を還元していけるのだろう、と最近は感じている。もちろんそのためには、日々勉強に励まなければならないし、生活や事業の雑事も回さなければならない。家族はもちろん大事だ。楽なことはひとつもない。自分は情報技術者たり得ているだろうか。まったく自信はない。日々失敗ばかりだ。

でも、それこそが「好きなことをして生きていくこと」なのではないだろうか。

最近はそう思えるくらいに、自分の精神状態は回復していることを実感している。