2018年7月29日

Note始めています

最近日本語の文章をNoteの自分のページに書くようになった。このブログは残すが、今後はNoteの更新頻度が高くなると思う。

2017年12月30日

2017年を振り返って

今年もあっという間に大晦日の前日になってしまった。

2017年はペパボ研究所での活動、そしてご支援いただくお客様の業務に多く時間を割くこととなり、結果として対外活動は減ったが、その分充実した仕事ができたように思う。経済的にも4期目にしてようやく軌道に乗りつつあり、安定した経済基盤の重要さを改めて実感する年となった。以下に公開できる活動の中で主なものを記す。

  • Erlang/OTPとElixir関連では、3月にサンフランシスコのErlang and Elixir FactoryにてWriting OTP Modulesと題したErlang/OTPのモジュールの書き方に関する発表を行った。そして直後のElixirConf Japan 2017で参加報告を行った。
  • 2017年1月からペパボ研究所の客員研究員として、研究開発に関する各種コンサルティングを行っている。主席研究員の松本亮介さん他皆さんの活動を支えるのが主な役目だが、GMOペパボという会社の「速」「バーン感」に代表される身軽さと若い力強さにむしろ私の方が大いに力付けられた1年であった。
  • また今年はC++やC#、そしてVisual StudioといったWindowsの王道開発環境とガッツリ取り組んだ1年であった。人生初のオブジェクト指向言語での仕事であり、多くの若き先達に尻を叩かれながらなんとかやっている状況にふがいなさを感じつつも、52歳にして圧倒的成長をせざるを得ない(しなければプロとして信頼されない)環境に身を置けることは幸せなのだと思っている。
  • 同時に今年はMoodleなどEラーニングの環境についても多くを学んだ年であった。もはやコンピュータを使った自習環境は誰でも作れて当たり前であり、業務に応用しない手はないことを実感した年でもあった。
  • 疑似乱数関連では10月にそれまでの研究成果をまとめた発表を行う機会を得た。この分野は日進月歩で新しいアルゴリズムが提案されており、引き続き研究を進めていきたい。
  • FreeBSD関連では、Microsoft AzureでのPoudriere環境構築や、新しいPortdevel/czmq4の開発を行った。引き続きdevel/git-lfsjapanese/dbskkd-sdbのMaintainerの作業は継続して行っている。
  • 2014年12月から運用しているFlightRadar24の受信局は2017年4月下旬に受信機の故障に伴うサービス停止が発生したものの、FlightRadar24の運営の皆さんの尽力で代替機に交換してからは順調に動いている。久々にRaspberry Piでの受信環境をセットアップする実験も行った。
  • 自宅事務所はNTT西日本のフレッツ・光ネクストへの移行を行った。これですでに光ネクストを使用している東京拠点と併せ、ASAHIネットのIPv6サービス開始に伴い、IPv6 IPoEのネイティブ接続が可能となった。1996年にIPv6の最初の実験を始めてから実に21年かかったことになる。
  • 10月からDuolingoでスウェーデン語の学習を始めた。毎日学習を続けることは容易ではなく、発音することも聞き取ることもおよそできているとは言い難いが、2018年は2016年同様にErlang/OTPやElixir関連でストックホルムへの旅行を計画しており、それに向けて地道に学習を続けている。

2017年は米国第45代大統領とその側近達によるおよそ正常とはいえない失政の連続などにより、世界は大きく混乱した。そして日本も北朝鮮の脅威を看過できない状況であり、2018年はより不透明、不確実、そして不安定な世界情勢になっていくことは間違いないだろう。毎日、その日を暮らすことができ生き残れていることは奇跡であることをかみしめつつ、来年2018年も活動していこうと思う。まだまだ学ぶことは多いが、引き続きやっていく所存である。

以下、2017年と2018年の新年のあいさつの画像を付ける。2018年が少しでも2017年より良い年になりますように。

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

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

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

2016年12月30日

2016年を振り返って

気がつけばもう大晦日の前日である。

2016年は物理乱数ハードウェアやその他IoT関連の実験、温故知新的なオブジェクト指向技術の学習、そして2度のErlang/OTP関連の出張など、過去2年よりもさらに自分の持ち駒を増やさないといけない年だったように思う。いろいろ厳しい時期もあったが、なんとかお客様のおかげで乗りきることができた。以下に公開できる活動の中で主なものを記す。

  • Erlang/OTP関連では、3月にサンフランシスコのErlang FactoryにてArduino UNOとErlang/OTPを接続するための技術に関する発表を行い、9月にはストックホルムのErlang User Conferenceで、Erlang/OTPでの各種疑似乱数の利用に関する総括的な技術の発表を行った。年内にはOTPにrandモジュールにjump functionをmasterブランチにマージすることができた。来年のOTP 20で公式にリリースされる予定である。
  • 5月にはQNAPのNASを導入した。これでバックアップ用のリソースを一元管理することができるようになり、業務での信頼性を上げることができたように思う。
  • 8月のMaker Faire Tokyo 2016では「科学技術教育フォーラム」の一展示として、物理乱数を使ったサイコロであるavrdiceの展示を行った。来訪者の方々から質問をたくさんいただくことができ、乱数技術、あるいはランダムネスに対する社会的関心は一定レベル存在することを確認できたのは収穫だった。
  • 物理乱数モジュールavrhwrngと新部裕さんのNeuGの追試は昨年から継続して行っている。これに関連して、技術評論社の雑誌Software Designに物理乱数と疑似乱数に関する連載を同誌2016年8月号から10月号まで3回執筆した。また、2016年12月号には、データベースの基礎技術であるハッシュとドキュメント指向データベースの解説記事を執筆した。
  • FreeBSD関連では、devel/git-lfsとjapanese/dbskkd-cdbのPort maintainerを引き継ぐことになった。これに伴い、Poudriereによるテスト環境を整備した。
  • 12月にはQiitaにてC言語、FreeBSD、そしてErlangのアドベントカレンダーを開設し、自らもElixirのカレンダーを含め23件の記事を執筆した。
  • 2014年12月から運用しているFlightRadar24.comの受信局は、NTT西日本からの回線更新に伴う停止やその他の一時的な回線障害による事故はあったものの、引き続き順調に動作している。2016年11月からはさらにアンテナの高さを上げてカバー範囲を広げ、KIX/ITM/UKB各空港周辺の情報提供の精度を上げることができている。

一方、引き続き生活の中で不要なものをどのようにして止めるかという見直しは絶えず行っている。これも列挙してみよう。

  • アマチュア無線の活動は事実上停止している。
  • 8月のMaker Faire Tokyo 2016で痛感したのは、展示会の出展側に回ることの疲労である。今後、仕事としての依頼でない限り、展示会の出展側に回ることは、特に6月から9月までの暑い時期には原則行わないことにしようと考えている。
  • オープンソース関連の活動については、旗振り役はもう若い世代に任せるべきではないかというのが率直な実感である。私のようなオッサン年長者は表舞台から積極的に降りるべきだろう。よってQiitaのアドベントカレンダーを主催するのは今年を最後とする旨宣言した。
  • 生活は引き続き大変厳しい。事業開始3年目であり、業務の展望について抜本的な見直しを行う時期に来ている。そして業務に直接つながらない出費については引き続き緊縮財政に努めている。

2016年は多くの災害や手段を問わない各種紛争に明け暮れた年であった。2017年は世界情勢の大転換は不可避であり、どのようになるか先はまったく見えない。今日まで生き残れていることは奇跡であり、日々の生活と業務を送れることはとても幸運なことなのだろうと思って来年2017年も活動していこうと思う。