2011年9月25日

Erlang Workshop 2011を終えて

2011年9月23日に開かれたErlang Workshop 2011は,登録者37人,プレゼン10名,ポスター発表3名という 盛況のうちに終えることができました.参加してくださった皆様に,感謝申し上げます.

私は9月21日に台風15号と共に東京に入り,よりによって暴風雨の一番ひどかった夕方にICFP 2011の受付を済ませました. その後に渋谷のジェミナイ・モバイルにて開かれたQuickCheck Loungeに向かったのですが,かろうじて半蔵門線は 神保町-渋谷間で動いていたものの,渋谷では大変な風雨で駅で足止めに遭い,どうなることかと思いました(苦笑). まあ,結果としては,John Hughes, Joe Norton, Thomas Artsというそうそうたる面々からproperty-based testingに 関する話を直々に聞くことができ,非常に充実したミーティングでしたが…. :-)

Workshop当日は,発表者が1人遅れて私が代役で発表したり,ポスターを入れる枠がきつめになっていてドライバーで分解して 入れるのを手伝ったりと,いろいろハプニングはありました.それでも,PCとプロジェクターの相性にまつわるトラブルはまったくなく, ICFP 2011の会場運営をしていただいた方々のご協力もあり,大変順調に進行することができました. 発表者の1人Kostis Sagonasからは直々に感謝の言葉をいただき,ひたすら恐縮の限りでありました.

来年のICFP 2012はデンマークのコペンハーゲンにて開催される予定です.Erlang Workshop 2012も同地で開催することになります. コペンハーゲンはロンドンやストックホルムには近いので,おそらく多数のErlangユーザーやハッカーが集まるでしょう.

Workshopの後には急遽ErlLoungeという形で(日本語でいうところの)懇親会をやりました.事前準備が足らなかったにもかかわらず, Voluntas 中居さんに幹事としてサポートしていただき,こちらも大変盛況でした.ただただ,感謝,感謝です.

以上,とり急ぎご報告まで

2011年5月8日

相互排除問題,際どい部分,そして並行プログラミング

複数の実行中のプログラム(プロセス)が関わる処理では,必ず排他制御が問題になる. 複数のプロセスがあらかじめ許容された同時アクセス数を越えて共有資源を使おうとすれば, どのプロセスにアクセスを許し,どれに許さないかを,決めなくてはならない. これを mutual exclusion problem 日本語では相互排除問題という.

この相互排除問題について,最近岩波書店より 「相互排除問題」(以下「本書」とする) というそのものズバリの本が先月2011年4月に出版された. 著者は土居範久先生.日本におけるこの分野の第一人者である.

本書の参考文献リストを見ると,ほとんどの文献が 1990年以前に書かれている.しかし,内容はいささかも古いものではなく, 現在のマルチコア環境,あるいは分散ネットワーク環境において課題となっている 同期と相互排除に関する問題のほとんどを網羅している. 言い換えれば,現時点の課題の大多数は,20年前に解かれていると 言い切れるかもしれない. (もちろん,アルゴリズムの効率化や,実行環境の速度等に合わせた最適化は 現在も引き続き行われているが.)

本書では,アルゴリズムの説明にPascalに似た疑似コードを使っている. しかし,本書の本文中では逐次処理にとどまらず,HoareのCSPや分散プロセス, メッセージ通信など現在の並行処理や分散処理の基本となる概念が くまなく網羅されており,疑似コードも書籍を読み進めるに従って, 内容が拡張されていく仕組みになっている.そういう意味では,読んでいて楽しい. もっとも,例示されているそれぞれの疑似コードを咀嚼して理解するには, かなりのプログラミングの経験が必要だが.

本書のページ数は256と少ないものの,気軽に片手間で読める本ではない. 本書のテーマである「際どい部分」(critical section)や 「際どい資源」(critical resource)の扱いは, 一歩間違えれば,大変な事故を引き起こしかねないものだからだ. 別の言い方をすれば,この本を一通り理解できるようになったら, ソフトウェアエンジニアとしては一人前と言えるかもしれない. 日本語で並行処理を理解する上で,本書は必読といえるだろう.

2011年4月4日

Erlang Workshop 2011 のご案内

関数型言語の国際会議 ICFP の今年の開催地は東京です.ICFP のアジアでの開催は初めてですね.HaskellもGHCがGitHubに移ったり,OCaml,Scala,F#と,関数型言語も随分増えてきました.そんな訳で関数型言語界隈はこのごろ活気付いて います.

2011年は日本における関数型言語ブレイクの年になるか? なると嬉しいなあ…という方にお知らせです.

ICFP 2011 に併設して Erlang Workshop 2011 が開かれます.Erlang Workshop にはどなたでも参加できます.発表内容の議事録を見ると,コンパイルや形式変換などのプログラミング言語理論だけでなく,テストやライブラリの話など,Erlang/OTP 関連技術の実践応用に至る幅広い論文発表がなされています.

「Erlang,良さそうなんだけど,本当に関数型言語として使えるの?」「Erlang/OTPの上に乗っているCouchDBやRabbitMQは使っているけど,他にどんな使い方があるんだろう?」…そんな疑問を持っている方は是非 Erlang Workshop に参加してください.世界中のErlang経験者が一堂に会して,Erlang/OTPの奥深い技術について聞けるのは,Erlang Workshopだけです.

さて,Erlang Workshopは聞くだけではなく,発表をする場でもあります.特に今年は日本での開催ですので,是非是非日本の皆さんのErlang/OTPによる取り組みをご紹介していただければ,主催者達も大変喜ぶかと思います.

発表の形式は以下の3つです.

  • 技術論文: 言語拡張,現状の改善,言語構成要素の形式意味論,プログラム解析と変換,仮想マシンの拡張とコンパイルのテクニック,他言語でのErlangの実装や他言語とのインターフェース,その他新しいツールについて.最大12ページ.
  • 実践応用論文: 実世界でのErlangの応用.特定作業のためのライブラリ,特定分野における応用からもたらされた経験,問題解決でのErlangのエレガントな応用.最大6ページ.(ここへの投稿は次のポスター発表に割り当てる可能性がありま す.)
  • ポスター発表: 本ワークショップの目的に合致した話題に関する説明.最大2ページの発表の概要(abstract)と要旨.発表は1時間のデモ枠で複数個同時に行われます.
の3つとなっています.

論文投稿の方法の詳細については Call For Papers (http://www.erlang.org/workshop/2011/) を参照してください.

締切等についてですが

  • 論文投稿締切: 2011年6月3日
  • 論文査読結果通知: 2011年6月17日
  • 最終原稿締切: 2011年7月13日
  • ワークショップ: 2011年9月23日
という流れになっています.

実は,私はこのワークショップの実行委員長です.会場でお会いできるのを楽しみにしております.Erlang Workshop 2011へのご支援,ぜひよろしくお願いします.

CUFP 2011 Tokyoに関する紹介ページ にインスパイアされて(笑)書いてみました.)

2011年3月30日

挫折の先に見えたもの

(新卒準備カレンダー2011春 http://atnd.org/events/13324 向けのエントリーです.
@happy_ryoさんから引き継ぎました.)


私の自己紹介などは
に掲載しています.

そしてこの文章の他にも以下のリストにある記事を書きました.このblogの中の関連記事には newgrad2011 というタグを付けています.参考になれば幸いです.


これから社会人になる人達にとってはもちろんのこと,そうでない人達にとっても,2011年3月11日の東北地方太平洋沖地震で,皆さんの生活は大きく変わっていると思います.この記事を書いている2011年3月29日現在,地震とそれに関連して生じた災害について,私が1995年の阪神淡路大震災の体験から言えることは,疲れは後から出てくるものなので決して甘くみてはいけないということ,そして,この地震から立ち直るためには,10年以上の非常に長期の作業を強いられるだろう,ということしかありません.

ただ,私個人が過去45年あまりの人生の体験から何か確信を持てることがあるとすれば,挫折の先にも待っているものはあるし,挫折を受け入れることによって人間は次の段階に行ける,ということだと思います.

私にとっての最初の人生の挫折は,1975年,10歳の時の日本帰国時のショックでした.当時「帰国子女」といういささか違和感のある用語が文部省(現在の文科省)によって作られましたし,私に限らず多くの帰国者がこの用語で色眼鏡で見られたように思います.そして,私も他人との接しかたが他の人達と違うことから,随分嫌なレッテルを貼られました.ただ,幸いにして自分の人生を支えるものとして,電子技術やアマチュア無線,そしてコンピュータとその時に出会えていましたから,ひどくふさぎ込むようなことはなかったように思っています.

そして次の挫折は,1982年,17歳の時に,右眼の白内障,そして網膜剥離を発症したことです.現在も右眼の水晶体はない状態です.細かい原因についてはあえて触れませんが,これで正確に立体視する能力を失いました.車の運転免許を持っていないのはそのためです.結局1986年までの間に4回手術することになりました.車の運転ができない,というのはなかなか嫌なもので,特に米国やカナダのように車がないと生活に不自由する国では事実上働くのが大変困難になった,ということを事実として突き付けられました.シリコンバレー云々という話も,健康あってのことですし.最初の手術直後は大学入試もあきらめかけていました.まあその後なんとか大学には入って出るわけですが….

さらに次の挫折は,1992年,27歳の時です.修士を出た1990年から2年間,Digital Equipment Corporationの日本法人である日本DECという会社で働いていましたが,身体がどうにもついて行かず,当時の婚約者(現在の妻)が大阪に仕事が決まったこともあり,辞めることになりました.当時はインターネットの研究をしたいといっても受け入れてくれるところはなかったのですが,東京の会社の研究所を立ち上げるために京都で仕事をさせてもらうことになり,なんとか社会人の人生を続けることはできました.今思えば薄氷を踏む思いでしたが.修士卒でしかない人間が研究所云々を言える状況ではないと知ったのは,大分後のことです.結局博士を取るには2005年までかかりました.

これで挫折は終わりません.1997年,妻が強度のテクノストレスのため,うつ病を発症しました.彼女は3年間休職することになります.そしてその後,2002年,37歳の時に,今度は私が悪化していたアトピー性皮膚炎が原因で感染症を発症してしまいました.3週間あまりの入院を経て,もう自分は身体に無理が効かないことを悟りました.その間,2000年末には1992年から続けてきた研究所の活動を終了し,正社員の身分を捨てて,2001年以降現在に至るまで契約社員(任期付き雇用)の道を歩むことになります.契約社員の道を選んだのは,通勤に耐えられる身体ではなかったというのも理由の1つです.家族の介護と自分の病気のために,1997年12月~2005年8月までの間日本を出国できなかったことは,多大なる機会損失であったと思います.これは誰の責任でもなく,他に守るべきものがあったから日本にとどまったのだといえばそれまでなのですが.

そして2009年度はひどいものでした.5年間の任期が切れようとしていても,公募にはことごとく落とされ,次の仕事が決まらず,つくづく契約社員(任期付き研究員)というのは厳しい身分だというのを思い知ることになります.幸い今の仕事の公募を紹介していただき,2010年に入ってどうにか就職することができましたが,当然条件として(裁量労働とはいえ)通勤が前提でした.今思えば人間の身体というのは結構環境に適応するものだと笑って済ませられることでしたが,当時は本当に不安でした.なにしろ日本DECを辞めた直接の理由は,東京-横浜間の長時間通勤とそれによる睡眠不足だったからです.

そして現在の仕事も,2014年9月末までの任期となっており,安定した身分とはいえません.期間を定めず雇用されている人達(企業でいえば正社員に相当)と比べると,不安定な立場であることは否定できません.まあ,それでも過去に培ったインターネットとテレワークの技術と経験を駆使して,どうにか身体と折り合いをつけながら仕事はできていますが,決して無理は効きません.北大阪-京都市内の通勤は東京-横浜間に比べれば負荷は軽いですが,これも甘くみることはできません.仕事を続けるために,多くの人付き合いをあえて断り,お酒も止めて節制しています.


さて,それでも続けるような価値のある仕事を自分はしているのでしょうか.

思えば1988年,修士の際配属させていただいた関数型言語の研究室では,およそ関数型言語になじめず,「お前はインターネットで遊んでいるだけで研究なんかしていないじゃないか」と怒られたこともありました(事実ですから否定はできませんが).そして,その後も「お前は博士も持っていないのに」「お前は通勤もしていないのに」と,批判を多々受けてきたことは否定できません(これも事実ですから受け入れるしかありません).現に,周囲を見れば,年齢はそう変わらずとも私には遠く及ばない立場で大活躍している先輩方が多数おられますし,自分の研究者人生は他の人達より少なくとも10年は遅れています.1921年3月30日生まれだった父はこの記事が公開されるときはちょうど生誕90年(父は2004年8月に83歳で亡くなりましたが)ですが,父の業績にはおそらく私はどんなに頑張っても数でも質でも及ばないでしょう.

しかしながら,今の自分を見てみれば
  • 修士の時およそ大嫌いで単位も落としたPrologと文法も構文も似ているErlangという言語を使う立場になっている(苦笑)(Prolog使いの方々は尊敬しております.20年前には私の頭の出来が悪かったので理解できなかったということです.)
  • 結局通勤地獄の戦線に復帰している(笑)(とはいえ,労働時間は弾力的にさせていただいていますが.)
  • 過去のOS開発の経験は,今やっているErlangの一部であるOTPの研究に,大いに役立っている
  • 曲がりなりにもどうにか博士にもなった(苦笑)
  • あれほどイヤだった大学の教職員になっている(笑)
  • 技術の進歩により,世界中の大変優秀な人達,特に若い人達の話を聞ける幸せを噛み締めている
…ということで,結局,挫折の先にも何か得るものはあったのかな,という結論を得ています.きっと,続けている意味はあるのでしょう.

もちろん明日は何が起こるかは誰にもわかりません.関東地方の研究者で,地震の結果の災害が原因となった計画停電が理由で研究計画の実行を実質的に中断しなければならなくなったという話も聞いています.とても不幸かつ残念なことです.そして,今の任期が終わる時,私に次の職があるかどうか保証はありません.(そのときはぜひ仕事させてください :-) )

それでも,何か続けていれば,どうにか生きていけるものなのかな,という,曖昧模糊とはしていますが,未来への確信はあります.もし挫折で人生がイヤになったら,一休みするのも手だと思います.泥まみれになれば,どうにか道は開けるものです.人生は,継続学習そのものなのでしょう.そして,コンピュータの世界は,まだまだ可能性に溢れていると,私は思います.


ようこそ,コンピュータ技術者の世界へ

(次は@masaru_b_clさんです.)

2011年3月29日

IT技術者は英語で何をすればいいのか

(新卒準備カレンダー2011春  http://atnd.org/events/13324  向けのエントリーです.)

英語の話は,客観的には書けない.自分の意思と関係なく9歳から10歳まで渡米していたこともあって,1日の最低でも1割ぐらいの時間は,英語で考えている.でも,こんな人間は,日本の日本語社会の中ではマイノリティそのものらしい.自分が新卒だったころ,つまり20年前の1990年ごろにはそのことに憤ったり,悲しんでいたりしたけど,もう今は怒ったり悲しんだりしてどうにかなるものではないことはよくわかった.それに,自分にとってのフランス語や韓国語でのコミュニケーションの難しさから,話は想像がつくようになったからだ.人生の早い時期に英語を学習できなかった人達にとっては,英語は大変な苦痛を伴うものらしい.その怨念や恨みつらみが,英語およびその他の外国語話者に日本では向けられることは,よくわかった.でも,そんな非生産的なことをこれ以上ここで書いても仕方がないので,やめておく.

ただ,ここで書いておかなければならないこととして,英語は少なくともずっとITの世界では共通言語であり続けたし,今後変わっていく可能性はあるとはいえ,そうでなくなる可能性はないだろうということは確実にいえると思う.細かい考え方は,2001年に書いた駄文で示したことと何も変わってはいない.9-11後米国の力は弱くなったとはいえ,ITのトレンドはすべて米国から出ているし,彼等の先行者特権はいささかも揺らいでいないからだ.米国ドルが国際通貨であり続けているように,英語は今後も力を持ち続けるだろう.日本の国情を考えれば,日本人が英語嫌いでいられる余裕なんか,本来はこれっぽっちもないはずなのだ

では,英語を母語としない私達は,何をすればいいのか.
一言でいえば,英語を使って仕事をできるようにする,ということだろうと思う.仕事の相手に日本語が通じるとはいえない状況が今後は一般的になり得るからだ.もちろん,カジュアルな英会話ができないよりはできたほうがいいが,それよりもまずは仕事,である.

最低限必要なことは,歴史的に日本の先達がやってきたように,英語を通じて業務知識を学ぶ習慣をつけることだと思う.実際にさわっているアプリケーションやプログラミング言語のほとんどは,英語環境を前提として動作させるのが一番トラブルが少ないのは,IT業界で働いてみるとすぐわかるはずだ.LinuxやFreeBSDならば,localeなし(環境変数LANGが未定義)の状態でshellを走らせてみるといい.日本語は出てこなくなる.Windowsのアプリケーションなら,設定言語を英語あるいはEnglishにしてみよう.その時点で表示される内容が,実は世界共通の議論をするための土台だったりする.一般に,英語以外の言語に対応させるための仕組みは,OSにとっては拡張機能に属するものであり,基本機能ではないからだ.

次にできることは,英語で書かれたWebページやメーリングリストの内容を読み込んでみることだと思う.別に読むだけなら怖がることはないし,最近は書いている人達の大多数が英語を母語としない人達だったりする.これは言わば試合参加者の大半がホームグラウンドでない場所でバトルロワイヤルを繰り広げている状態で,その分英語そのものは俗語を使うことが少なくなって,より誰でも分かりやすいものになっている.
個人的には21世紀になってからこの傾向はどんどん加速しているような気がする.具体的にいえば,開発者の属する地域が,英語圏(米国/英国/カナダ/オーストラリア/ニュージーランド)中心だった時代から,北欧/西欧に広がり,そして東欧やCJK(中国(台湾を含む)/日本/韓国),ロシア,南米,その他の国々や地域に広がってきているからだと思っている.
Erlangに関していえば,http://www.erlang.org/faq.htmlに載っているメーリングリストがまさにこの状況といえるだろう.

そして最後は,英語で作業をしてみることに挑戦するのが,いいのではないか,と思う.仕事でこういう機会がなくても,今ならばお手本となるオープンソースのプロジェクトが,たくさんある.GitHubでおもしろそうなプロジェクトを探して,git commitした時のコメントをソースコードと比べながら読み込んでみるのもいいかもしれない.
各プロジェクトのドキュメントをメモを取りながら読むのも良いし.英語から日本語への翻訳をしてみることを通じて練習を積むのも良い方法だろう.こうすることで,徐々に日本語に翻訳されたものに頼らなくても仕事ができるようになっていくと思う.

ひとつこぼれ話を書いておくと,Erlang/OTPのソースコードやドキュメントを読んでいると,およそ英語ではあり得ない表現がいっぱい出てきて,解読に時間がかかることがある.これは,おそらくドキュメントを書いている人達が,英語の母語話者ではないことが原因だろう.彼等の多くは(想像にすぎないが)スウェーデンやフィンランドなどの言葉が母語で,それらの言語の表現が英語にそのまま置き換えられただけであろうと思われる表現が,多く残っているように思う.これは,英語では他の欧州の言葉と時制や助動詞の使い方が著しく異っていることが理由の1つだと思う.だからそういう分かりにくさには早めに慣れておいたほうがいいかもしれない.命令や指示に関する助動詞の使い方に関しては,RFC2119が参考になる.

インターネットとテレワークが変える出会いの意味

(新卒準備カレンダー2011 http://atnd.org/events/13324 の関連エントリです.)


お前誰よ?

自分自身はコンピュータ屋であり,技術屋であり,その延長上に研究者稼業があると思っています.

詳しいプロファイルは別にページがあるのでそちらを見てください.ここでは職歴について述べます.

私は1990年に大学の修士を出てコンピュータ屋の仕事に就きました.この4月から22年目に入ります.やってきたことはOSライブラリの開発に始まり,今ならインフラエンジニアの仕事であろう職場内ネットワークの設計や構築,そして管理と運用で2000年末までは過ごしてきました.2001年より縁あってコンピュータ・ネットワーク全般の学術研究に近い仕事をするようになり,2005年に社会人として博士号を取ってからは国の研究機関で本格的な研究者としての道を進みました.

そして昨年2010年より,大学で職場内の情報セキュリティレベルをどうやって高めていくかという課題に取り組んでいます.現職の肩書は教授となっていますが, 仕事の大半は他の教職員の方々と連携して問題解決を迅速に行うことであり,学生の教育はしていません.とはいえ,教員として採用されていますので,教授としての知識やプレゼンテーション能力,交渉能力は常に求められますし,業務の傍ら研究も人に恥じないだけの成果を上げることが要求されています.

お金の面を考えれば,自分のプロジェクトに関する予算管理や予算獲得もしなければなりません.ある先輩の教授が自らを「個人商店」と称しておられましたが, お金の面でそれに似たところが確かにあります.その結果として,一定のルール の範囲内で予算使用の裁量権をいただいて必要な物を買ったり,自分だけで難しいことは外部の業者の方々に仕事を請け負ってもらうこともします.もっとも,学生教育を担当しない私には現在学生は配属されないので,結局は1人で切り盛りしていますが(笑).

なんで研究者なんかやってるの? 企業で働いたほうが儲かるんじゃないの?

これは家業(笑)だから,好きだから,あとは時間の制約が緩いから,という3つの理由が主なものです.

個人的な感覚でいえば,研究者という職業は半ば家業に近いものがあります.研究稼業に関する感覚は,子供のころから身に付いていました.父と母の兄(伯父)が地球物理学の研究者で,妻がドイツ語教育実践に関する研究者であることもあり,大学での仕事を見ることは常に生活の一部でした.父が家で作図をしているときにグラフの描き方を教わったり,対数表の見方を教わったりしたものです. 前述の通り結婚してからしばらくの間は私は会社員でしたが,それでも妻の事務作業の手伝いをすることはしばしばありました.

仮に人生の主たる目標がお金を稼ぐことだったとしたら,今のような仕事はしていなかったでしょう.人より多くお金を稼ぐことは,自分の身体を磨り減らさずにはできません.そういう意味ですべての営利組織は流行り言葉でいえば「ブラック」です.大学も例外ではありません.教授という立場では大学の各種事業に対し一定の経営責任を持つことになりますから,自分の時間に優先して意思決定をしなければならないことが多々あります.ある程度「ブラック」なことを受け入れない限り,何も新しいことは成し遂げられないし,既存事業の維持すらできないのが現実です.これは社会人,いや大人の1つの義務だと思います.

研究者とテレワークの不可分性

その場にいなくても仕事をすることを「テレワーク」と言います.テレワークはコンピュータの登場以前からあった考え方ですが,インターネット時代の今,研究者という仕事と,テレワークは,ますます不可分になっていると思います.

私が研究者の道を選んだのは,被雇用者でありながら,自分の労働時間と場所を比較的自由にできる,という利点があったからでもあります.日本に限らず,現在の労働の制度は,基本的に「現場に出勤して一定期間の間存在すること」を強制します.これは製造業や農業,サービス業などモノを扱う仕事では不可避ですが,コンピュータやネットワークの利用が進んでいる今,IT産業に従事する人達の多くにはこの拘束を適用する必要はないと私は考えています.特に,情報科学/情報工学の研究者は,テレワーク環境を社会全体に積極的に作っていかなければならない立場にあるべきだとも私は考えています.

もっとも,技術的にはすでにテレワークは誰でも可能な状態になっていますし,そんなに特殊な設備が必要というものでもありません.今はむしろ労働環境と社会風土の問題として改善していくことが必要でしょう.その意味で2011年3月11日の東北地方太平洋沖地震に始まる一連の災害は,通勤による社会全体の損失を抜本的に考え直す機会になるかもしれません.

(もちろん,2011年3月末での当面の課題は,第一に人命の救助,次に如何に破壊された土地や建造物,社会コミュニティを立て直していくか, そして東京近郊一帯が抱える構造的電力不足をどうやって乗り切るかということであり,テレワークはあくまでそれらの復興のための道具以上にはなり得ないのですが.)

私は現実に健康問題を長期間抱えていることもあり,最初の職場を精神的にも肉体的にも続けられなくなって辞めた後は,基本的にはテレワークを前提として仕事を行えるシステムの構築技術や手法,ノウハウの蓄積とその実践に勤めました.結果としてそのことは,現在の仮想化,クラウドコンピューティング,分散環境や非同期I/O,並行処理や並列処理といった複雑な問題を,より大局的な見地から俯瞰する機会を与えてくれたといえます.災い転じて福となす,といったところでしょうか(笑).

テレワークの時代になぜ人に会いに行くのか

この文章の大半は米国サンフランシスコ近郊で開かれていた国際会議から日本に 戻る飛行機の中で書いています.通勤や出張は人やその移動用の支援物資を動かさないといけないですから,その意味では大変なコストがかかります.ですから遠隔地の日常業務はテレワークで行うことが必然的に増えています.国際会議の投稿管理システムも今はインターネット上の情報だけで問題なくできるようになり ました.実際に今回の国際会議で会った人達の内何人かとは,日常的にメールを交わしています.

では,なぜそれでも人に会いに行くのか.それは会わないとわからないことがたくさんあるからです.ある人が仕事,あるいは生活のパートナーとして信用できるかどうかは,その人の立ち振る舞いを見てみないとわからないことが多いのです.食事の時のしぐさ,あいさつの時の視線,言葉の明瞭さ,外向的か内向的か,などなど,意識しない内に人間は他人を評価しているものです.そしてまた,自分も評価の対象となっていることを意識しなければなりません.

ある物事が進んでいるコミュニティ,マーケット,あるいは「場」には,必ずその場特有の雰囲気があります.それを知らないでその場に参加することは,実質的にはほとんど不可能です.そしてその雰囲気を知ることで,自分がその場で共有される知識や共同で行う作業に対してより積極的にかかわることができるようになります.ここ数年のIT関連の勉強会ブームもこの流れの一端といえるでしょう.この流れを全世界に拡大すれば,それは必然的に国際会議開催の動機となり得ます.国際的な勉強会というと大げさですが,お金と参加者の都合さえつけば不可能ではありません.

もっと外に出なければならないのになぜ皆出ないのか

今の日本にある構造的問題の1つは,国際会議への参加について,あまりにも経費の上での制限が多いことです.費用を出す側に国際会議の意義に関する理解が足りないということもあるでしょう.未だに海外出張を遊びの延長として捉えている人達が大多数であるのは嘆かわしいことです.無駄なルールが多すぎるのも気になります.経費節減の折,国内出張にも制約が入りつつあります.悲しいことです.

しかし,本来資源のない日本は,国際交流の中で付加価値を売ることで,現在の繁栄を築いてきたはずです.既存の制度が使いにくいからといって,日本から海外に出ない,というのは自らの首を閉めるようなものでしょう.人生の早い時期で海外での仕事の体験をすることは,その後国際的な仕事を進める上で不可欠なものとなります.もちろんこれは海外対国内といった図式に限らず,国内でもさまざまな地域で仕事をしたり,いろいろな会社や組織相手に仕事をすることで得られる経験ではありますが,英語を始めとした日本語以外で仕事をする経験は,なかなか国内では得られないという事実は心得ておくべきでしょう.

もし海外に出ることができる機会があるなら,できるだけ早く,出ていってみて見聞を広めることを強くお勧めします.

インターネットは世界の出会いを広げその定義を変えていっている

インターネットによって人々が家に引き籠ってしまったという仮説があります. しかし,社会的なひきこもりの問題は,実はインターネット以前から続いている問題であり,むしろ社会問題として扱われるべきでしょう.

私個人は,むしろインターネットにより世界や国内の見聞を広めることができ,そして足を運んでみようと思う地域が増えました.かつては国や地域がそれぞれ固有のイデオロギーで対立していましたし,今もそのような対立が理由の紛争は続いていますが,それと同時に以下に述べる考え方もできるようになったと思っています.

  • 世界のどの国や地域にも,自分と考えが合う人達と,合わない人達がいる
  • 自分にとって「イヤな奴」になるか「友達」になるかは,相手の出身地域や国には必ずしも規定されない
  • それぞれの国や地域のイデオロギーに染まる人達には,それぞれの理由があり,それは社会的な問題だけでなく,むしろ経済的な問題が支配していることが多い
  • 世界のコンピュータ屋の使っている技術は,おそろしく共通化されている(笑)

今や世界の各地域の問題は,全世界に影響を与えます.日本の災害により,世界の各産業が影響を受けています.そしてアラブ地域の政情が変われば,日本にとって不可欠な原油の値段が高騰します.

既存の社会の仕組みについて,我々自身が深い知識を得たうえで,どれだけそれらを相対化して客観的に判断することができるかが,今後の社会のあり方を決定する上で重要不可欠なことになってくるでしょう.

あなたの友達は,隣の人かもしれませんし,地球の反対側の人かもしれません. それとも同じ国でも違う地域の人かもしれません. そういう前提を忘れずに,広い心で仕事を学び,社会人として我々と共により良い社会を作っていきましょう.

ようこそ,コンピュータ技術者の世界へ.

2011年3月5日

悪いニュースはできるだけ早く知らせよう

(新卒準備カレンダー2011春  http://atnd.org/events/13324  向けのエントリーです.)

仕事を始める上で,あきらめずに最後までやり抜く,というのは仕事を成功させるための必須条件の1つだ.しかし,それと同じ以上に大事なのが,仕事を続けられそうにないときに,そのことをできるだけ早く判断して,しかるべき助けを求められるか,ということである.

情報通信の世界では,「良いニュースは早く伝わるが,悪いニュースはなかなか伝わらない」という経験則がある.これは技術的にも心理的にもいえる.たとえば,通信が途絶したり機器が故障したと判断するためには,通信相手から一定の時間応答がないことを確認する必要がある.この時間の分だけ判断はどうしても遅れてしまう.故障した,と明示的に連絡してくれるような仕組みがあれば話は別だが.(例えばErlangでは,process linkをプロセス間であらかじめ張っておくことで,リンク先のプロセスが異常終了した場合は,そのことがすぐにわかるようになっている.)

人間関係でも同じことがいえる.多くの人は仕事が完了したら,早くその仕事から解放されたいから報告するだろう.しかし,なかなか仕事が終わらなくて納期や締切に間に合わない時は,どうしても希望的観測を持ってしまうし,仕事が終わらないというのはカッコ悪いと考えたり,あるいは「相手に怒られたらどうしよう」と思い,すくみ上がってしまい何もできなくなるものである.人間は恐怖心に支配されがちな生き物だからだ.でも,そんな時こそ勇気を出して納期や締切までには終わらないことをできるだけ仕事の相手に報告し,次の一手を打つことが必要だ.

仕事の上で協力者に助けを求めることは恥ずかしいことではない.むしろ,できるだけ細かく頻繁に状況報告をしておくことで,予見できる問題を早く解決できる.平たくいえば,ダメそうな時には,できるだけ早めにそのことをはっきりと知らせたほうがいい.

大変恥ずかしいことだが,私も新卒で入社してすぐ課題を与えられたのに,その課題については完全にすくみ上がった状態になってしまい,結局なにもできずに,依頼者に大変迷惑をかけたことがある.これは仕事を頼んでいる方にとっては,およそ信用できない,という風に見えてしまう最悪の行動である.

人間,いつも元気でいられるわけではない.気の進まないときもあるだろうし,仕事よりも高い優先度でこなさなければならない作業が発生するかもしれない.それは心ある人なら誰でも理解してくれることだと思う.しかし,仕事を抱えたまま,あるいは手放さないまま,どこかへ雲隠れしてしまうのは,その後始末をしなければならない関係者にとっては最悪の事態である.

優れた人は,悪いニュースでも勇気をもって早く知らせることのできる人のことである.
優れたプログラマは,異常が発生した場合可能な限り迅速にその判断をするコードを書いて実行させることができる.
そして,優れたインフラエンジニアは,自分だけで手の負えない障害が発生した場合,すぐに援軍を求めることができる.

1つ付け加えることがあるとしたら,迅速な判断をする能力は,健康を保ち,体力と精神力を維持し,そして日頃から訓練して鍛えることによってしか培われない.そういう意味では,失敗を経験した人の方が,そうでない人よりも判断能力は高いと思う.

2011年3月2日

新卒準備カレンダー2011春のアドベントに向けて: おすすめの本

(新卒準備カレンダー2011春  http://atnd.org/events/13324  向けのエントリーです.)

おすすめの本,といえば,いろいろとありますが
かな.私が読んだのは原著の
の方です.

この本の著者 Chad Fowler が最初にこの本を出した時のタイトルは,"My Job Went To India" (日本語版では「オフショア時代のソフトウェア開発者サバイバルガイド」というタイトルが付いていた)だった.私自身が仕事を探さなければならない状況になっていたこともあり,かなり真剣に読んだ記憶がある.詳しいことは中身を読んでもらうとして,この本の要点を短かくまとめると

  • 常に学び続けていなければ,いつか手持ちの技術だけでは食えなくなる時が来る
  • プログラミングという限られた一芸だけではもう食えない(プログラミングに限らないが)
  • 燃え尽きないように,そして自分の欠点を知って,定期的に自分を振り返ること
ということだと思う.著者はこれらの要点について,プログラマの視点で実にうまくまとめている.この本の話題自身はプログラマに限った話ではなく,他のプロフェッショナリズムを特に要求される仕事の人が読んでも十分面白いだろう.人生の基本的な課題として,どうやって世界の中で自分を差別化していくか,そして過労で燃え尽きないようにするかという,相反する目標を達成していくことを学ぶには,とても良い本だと思う.

2011年3月1日

新卒準備カレンダー2011春のアドベントに向けて: 自己紹介

今年4月にIT業界に入ってくる人達に向けて何か書こうということで、新卒準備カレンダー2011春というイベントに参加してみることにした。
http://atnd.org/events/13324
最初に自己紹介を書いて欲しいということなので、まずは自己紹介から。
  • 名前: 力武 健次 (りきたけ けんじ)
  • 職業: プログラマ→システム管理者/インフラエンジニア→ネットワーク技術研究者→大学教員
  • 年数: 社会人になったのが1990年、25歳のとき。だからもう20年経っていて、21年目。
  • どんなことをやっているか
    • 最初はVAX/VMS(今はOpenVMS)のライブラリ開発。
    • 次に企業内インターネットの構築、運用管理、研究
    • その後はインターネット・セキュリティ技術に関する研究。特にテレワークやDNSについて。
    • 現在仕事としてやっているのは、大学の情報セキュリティに関する企画、調査、研究。
  • 普段プログラムを書く言語はCとawk。2008年からErlang/OTPを研究テーマに加えて勉強中。基本的にインフラエンジニア的な作業ではどんな言語に対してもパッチを当てられないといけないので、一通り体験できることは見よう見まねでその都度覚えてます。
  • 実験用には1997年からFreeBSDを愛用。それ以前もSunOSやULTRIX、BSD/OSで育ちました。もちろんLinuxもWindowsもそれなりには触れます。もっと前はMS-DOSを使ってました。
詳しいことは
を読んでもらうと、もっとわかるかも。

2011年2月27日

早期バイリンガルであることの強みと苦労とは

: 早期バイリンガルであることの強みと苦労とは? 二つの言語間の関係は影響するのか?
What are the advantages and disadvantages of early bilingualism? Does the relationship between the two language matter?
http://www.quora.com/What-are-the-advantages-and-disadvantages-of-early-bilingualism-Does-the-relationship-between-the-two-language-matter

Quoraに書いてあったので答えてみた.日本語でも書いてみる.

私にとっては,日本語と英語って言語的に一緒のところはほとんどない.だから9~10歳のころにバイリンガルになったってことは人格形成におそらく間違いなく影響していると思う.もう30年以上そんな人生を続けているから,まるで言葉ごとに2つの別の人格に分かれているような気がするし,あるいは二つの言語の社会ごとに自分の立ち振舞いを変えなきゃいけないように感じている.

未だに私は両方の言葉の違いが原因でたくさん文法間違いをおかしている.たとえば,英語の文法要素で,単数/複数,動詞の活用,時制,冠詞,そして前置詞というのは,日本語にはほぼ存在しない.だから文章を何度も校正するときは,すごく集中する必要がある.自分の間違いの直し方は知っているけど,正しく話したり書いたりしようとするのをよく忘れてしまう.

その一方で,日本語では明示的に文の主語を著さない.日本語の動詞や形容詞はそれらが表す行動をしている人を通常は暗に含んでいるからだ.だから英語から日本語に文字通りに訳すのは文章を冗長にするし,余計なことばかり書いてあって,しばしば一般の人にはとても理解しがたいものにしてしまう.

個人的には文化的な違いも重要な役割を果たしていると思う.日本語を話すときは,失礼でないように,攻撃的でなく,決めつけないようにしなければいけないし,他人の意見に直接反論してはいけない.日本の人達,そしてアジアの韓国や中国の人達は,彼等の意見が直接会話で否定されることに対してはすぐに立腹する.なぜなら彼等の多くはその意見の否定を個人的な侮辱だと受け取るからだ.だからそのことを私は注意するようにしている.

もっともその一方で,日本人の礼儀正しさ,あるいは同意できないときにもそれを直接表現しないことは私には非常に不誠実な態度に見える.たとえそのことが一般的には私を感情的に傷つけることを避けて顔を立てるための行為だとわかってはいても.

これも最近気がついたことだけど,話す主題や話題によって,言語の選択は強く影響を受けると思う.コンピュータのことを私が語る時は,英語の方がずっと楽に感じることがしばしばある.単語の多くは英語で学んでいるし,最近台頭してきた技術については特にそうだ.その一方で,電子回路や,無線技術,物理,電気通信などの話をするときは,日本語で最初に勉強したことが理由で,日本語が最初に浮かんでくることが多い.バイリンガルあるいは多言語で技術的な話題について述べるための能力を維持するには,話したり書いたりするそれぞれの言語で大量の語彙を維持する必要がある.

そんなことを考えつつ,私は10歳の時に日本に帰ってきてから30年以上の間ひとりぼっちでここまで述べてきたような困難と戦ってきた.もし早くからバイリンガリズムの専門家に相談することができていたら,こんなに長い時間をかけてこの問題に向かいあわなければならなくなることもなかったと思う.(私の両親はバイリンガルではなく,もちろんこの問題について彼等に落ち度はない.)

この話題も,私にとっては言語の「並行処理」の問題であり,いまだに解決できない「混沌」とした自分の意識世界の話である.そういう意味では「並行と混沌」の話なのだ.

2011年2月8日

はやぶさのカプセル

JAXAの小惑星探査機「はやぶさ」が地球に落としたカプセルの一部を見る機会に恵まれた.さすがに展示会場は大変混雑しており,1~2分しか見ることはできなかったが,それでも本当に宇宙から戻ってきたカプセルを見るのはそれだけで感慨深いものがあった.最も印象的だったのは背面ヒートシールドであった.また,パラシュートが往復の長い行程に耐え,機能した状態で戻ってきたのも驚きだった.

「はやぶさ」を動かしていたソフトウェアはどのようなものだったのか.そしてそれを支えた技術はどのように機能したのか.きっと広義のフォールトトレランスを実現していたのだろう.過酷な条件に耐えるためのソフトウェアには,停止は許されないからだ.異常発生時には確実に全体を再起動させるコードも組み込まれていたに違いない.

打たれ強いソフトウェア・システムを作るにはどうすればよいのか.そんなことを背面ヒートシールドを見ながら考えている.

2011年2月4日

Erlang/OTPの抱える基本的な課題

Erlang(日本語では「アーラン」よりも「えあらんぐ」の方が発音により忠実らしい)/OTPのブログを一応標榜している(苦笑)ので、今後のErlang/OTPの課題などまとめてみる。

まず技術的には
  • 暗号に関わる技術(ハッシュ関数、共通鍵暗号、公開鍵暗号、疑似乱数)を、どう並行実行可能にしていくつもりなのか
  • 数日、数週間、数ヶ月単位の大規模遅延に耐えるネットワーク技術 (delay tolerance)
  • IPv6の基本的サポート、特にDistributed Erlang / epmd、そしてそのSSL化サポートの確認
  • DNSSEC対応のリゾルバ for inet_res module
  • BEAMの実装に起因するバイナリヒープの扱い、ならびにそれを意識して高速にNIFを書くための技法(実測が必要)
  • 状態保持量の少ない疑似乱数: Wichmann 1982 / Wichmann 2006 / LShift / XOR32
  • 状態保持量の多い疑似乱数: SFMT ((2^19937-1) or (2^607-1))
  • NIFによるTAI(国際原子時)の扱い
  • BEAM間の権限分離手法(FreeBSD Jail? それとも一般的な仮想化?)
  • そもそもPort, Linked-In Driver, NIFの使い分けをどうする?
なんて話があるわけです。

いろいろといじってみたいプロジェクトもいっぱいあるのですが、一部だけ。

そして当然今年は
という大イベントが控えております。

課題が山積しまくりで大変であります。

2011年2月3日

希望と現実

かつて,インターネットは,希望だった.国境を越え,封鎖的社会を開放し,閉じた世界のドアをこじ開けてその中身を明らかにするものだった.私のようなマイノリティにとっては,世界の中の自分の位置を変える,ほぼ唯一の希望だった.1985年に日本で通信回線が開放され,コンピュータがつながり始めた時,これを進めていけば世界を変えられると信じて,仕事にした.

そして,インターネットは,現実になった.水道や電気,ガス同様,もはや生活には不可欠のものになった.夢は現実になった.もはや夢ではなくなった.

今,インターネットは,既存の支配勢力に対し,明らかに脅威となっている.2011年1月27日にエジプトで起きたネットワーク経路の大規模な遮断は,ある意味で象徴的といえる.何らかの形でネットワークを検閲している集団の数はもはや数えきれないだろう.それは自由に対する挑戦であると同時に,過去25年に得たインターネットの力の証明でもある.検閲を続けても流れを止めることはできない.すでにインターネットは,政府対テロリスト,という図式そのものを引っくり返しつつあるのだから.仮に政府がインターネット接続を止めた場合,その政府の正統性が疑われる状況が生まれてしまうといっても過言ではない.

もちろん,インターネットが今のままでいられるとは全く思っていない.IPv4アドレスはもうなくなる.我々は新しい人達をIPv6に迎え入れ,引き続き開かれた広域ネットワークを,今度は1つではなくIPv4とIPv6の2つ,運用することを日常にできるだろうか.そもそもドメイン名に人間が署名をし続けることができるのか.爆発しつづける経路数を処理できるルータは作れるのか.その裏でせめぎあう権力をまとめることはできるのだろうか.課題は山積するばかりだ.

それでも私は,2008年から,新しい希望と現実を見据える作業にかかっている.日々の運用業務という現実に取り組みつつ,より高度な抽象と捨象で日々の問題を解決できるだろうという希望を持って.Erlang/OTPは,その抽象と捨象の手段の1つに他ならない.

2011年2月1日

時間と疲労と並行処理

時間に追われるのは現代人の宿命だろう.特に通勤時間を自分の意に反して消費させられなければならないのは大変つらい.テレワークでは通勤時間は減るが,これとて他の業務時間を減らすわけではないから,魔法の薬にはならない.(そもそもsilver bulletなんて存在しない,というのはおいておくとしても.)

すでに日々大量のタスクを並行(concurrent)に実行しているのが我々の生活だとしたら,それを大規模並行(massively concurrent)な世界に持っていくしかないのではないか.そのための技法を確立した者がより有利になる時代が来ていると思う.

それで余った時間は何をするか? 疲労回復に充てるのが最も効率的だろう.なにしろ皆くたびれ果てているのだから.

2011年1月31日

Googleの電話認証

Blogger.comでCreate Blogとしようとしたら携帯電話の番号を要求された.
何度か入力したら「その番号の回数の限界を越えている」とやらで拒否された.
試しに固定電話の番号でやってみたらコードが音声で送られてきて認証できた.
あまり気分の良いものではない.

2011年1月30日

並行プログラミング

並列でもなければ分散でもない.
並行プログラミング.
しばらくは腰を据えてやってみよう.
Erlang/OTP