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年も活動していこうと思う。

2016年10月19日

お客様事例紹介: 横浜開港資料館 画像検索システム 開発と改修(2014/2015年度)

力武健次技術士事務所では、2014年度、2015年度の2年度にわたり、横浜開港資料館様の閲覧室にある画像検索システムの開発と改修作業を、有限会社ネクスト・ファウンデーション様のご依頼により実施致しました。詳細は横浜開港資料館様のえつらん室News(2015年5月9日の記事)にて、ご紹介いただいております。

この開発と改修作業にあたり、技術的に留意した点は以下の通りです。

  • HTML5+CSS3+各種JavaScriptツールを使いWebサイトとしてシステムを全面的に書き換えることにより、各種ブラウザに対する互換性の提供と、将来にわたってコンテンツの可用性を維持することが可能になりました。
  • 静的サイト生成を行うことで、現在の利用形態だけでなく、他の利用形態でも使えるように設計をしています。
  • UIの設計にあたっては、できるだけ簡素で、かつ利便性の高いものであることを目指しました。

横浜開港資料館様は横浜市中区のみなとみらい線日本大通り駅に位置する歴史的にも由緒ある建物で、横浜のみならず日本の歴史を知る上で貴重な資料を多数展示されています。閲覧室の画像検索システムはどなたでも利用できます。ぜひ一度ごらんになっていただければ幸いです。

力武健次技術士事務所では、お客様からのWebサイト制作のご依頼にあたっては、今後も可能な限りシンプルなWebサイトの提供を目指していきます。

なお、本記事に記した実績の公表にあたり、ご快諾いただいた横浜開港資料館様と有限会社ネクスト・ファウンデーション様に深く感謝申し上げます。

2016年10月9日

書評: 「ITエンジニアのための機械学習理論入門」

書誌情報: 中井悦司、「ITエンジニアのための機械学習理論入門」、技術評論社、2015, ISBN978-4-7741-7698-7

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

現在「機械学習」と称されるニューラルネットワークの技術は、私が過去25年以上にわたって遠ざけてきた苦手なものの1つである。大量のパーセプトロンの組み合わせで特性情報が得られるという「夢のような話」に納得することは、「コンピュータというのはアルゴリズムで説明し得る作業のみが行えるもの」という定義で生きてきた私自身の考え方では極めて困難である。2016年現在得られているニューラルネットワークの成果全般に反駁するつもりはもちろんないし、その有用性を否定するものではないが、単にニューラルネットワークの説明を受けただけでは残念ながら私の疑問は消えない。申し訳ないがこの疑問は死ぬまで消えないだろう。(法的にもこの「なんで?」という問題は存在しており、「判断過程の不透明性に関わる問題」として現在も議論が続いている。)

本書はこの「なんで?」という部分に、統計学の観点から光を当てて解説しようとしたものであり、どういう計算手法を使えば結果がより目的にかなったものに近づくかの判断例が記されている。具体的には以下の流れで示されている。

  • 最小二乗法の推定から複数のデータセットを使ったクロスバリデーションとオーバーフィッティングの問題の説明
  • 尤度関数による確率モデル(最尤推定法)の導入
  • 勾配降下法による多次元ベクトルへの適用(概念としてのパーセプトロンの導入)
  • ロジスティック関数と偽陽性率の関連
  • 教師なし学習におけるk平均法とEMアルゴリズム(期待値最大化法)
  • ベイズ推定の適用と最尤推定法との比較

これらの手法は、ニューラルネットワークが「なぜそうなるか」を説明するものではない。しかし、どのように使えばより統計学的に筋の通った結果を得られるかについての手法としては一貫しており、ニューラルネットワークを「どうやって使えばマトモな結果が出るのか」についての実践的な説明になっている。アルゴリズムからの演繹的説明が不可能な以上、このような「結果が統計的にこうなるのでアルゴリズムはこう使うべき」という説明が、現時点では最も有用であると思う。その意味で本書は(統計も大の苦手である私のような者を含め)ニューラルネットワークの結果を評価する上の第一歩を知りたい人には大いに役立つであろう。そして本書は基礎理論の解説書であり、大学での教科書に使えるだけの中身のある力作である。

なお、本書にはサンプルコードが用意されているが、書籍の中ではサンプルコードがどのような概念を示しているか、そしてその動作結果が何を意味するかの説明に徹しており、サンプルコードの表面的な解説がなされているわけではない。言い換えれば、プログラマとしての知識は要求されず、数学の基本的知識があれば読めるようになっている。その意味でプログラミングの苦手な人にもおすすめできる。

書評: 「ニッポンの個人情報」

書誌情報: 鈴木正朝、高木浩光、山本一郎、「ニッポンの個人情報」、翔泳社、2015、ISBN 978-4-7981-3976-0

(本書は2015年2月に翔泳社の井浦様よりご恵贈いただきました。書評が大変遅れて申し訳ありません。)

鈴木正朝、高木浩光、山本一郎。

この3人の名前のうち、一人でも見て恐怖を感じないようであれば、日本のプライバシー問題、特に個人情報の扱いが実務者にとってどれほど難しいかについての、理解が不十分と思ったほうがいい。正直いってこの御三方のうち一人と対峙しなければならなくなったら、シッポを巻いて逃げたい。その3人がまとめて鼎談しているこの本は、正直いって重い。重すぎる。怖くて読めない。「ニッポンの個人情報」とか、「プライバシーフリーク」とか、そんな軽そうな言葉に騙されてはいけない。

しかし、現状の混沌と矛盾、法律の手抜き、そしてそもそもの「プライバシー権」への認識がバラバラになっている現状を知るには、この本に書かれている内容ぐらいは知っておかなくてはならないだろう。その意味では対談形式で重要な論点が各所にタップリと含まれているこの本は貴重な存在といえる。重要なポイントは全部QRコードでURLへのアクセスがしやすくなっているのも良い。

この書籍の発刊後、個人情報保護法は改正され、「平成27年9月9日から2年以内に全面施行」される予定である(日本政府の個人情報保護委員会のページより)。この法律改正により、「個人情報」を仕事に使うすべての事業者(個人も例外ではない)がこの法律の適用対象となる。そういう意味では、もう誰も逃げられなくなっているのである。今までの経緯と問題点をふまえた基本をおさえる上では、必読であろう。

2016年9月19日

Erlang User Conference 2016にて発表致しました

スウェーデン王国ストックホルムにて開催されたErlang User Conferece 2016にて,力武健次技術士事務所 所長 力武健次が“Fifteen Ways to Leave Your Random Module”と題して英語にて発表致しました.スライドはspeakerdeck.comにて公開しています.また、この発表で使用したスライド原稿などはGitHubのレポジトリにて公開しております。

なお、Erlang User Conference 2016 での発表の模様は、こちらのYouTubeのビデオにてごらんいただけます。

2016年8月22日

大電力ラジオ放送の終焉

新年早々どうやって東京の拠点にて直接波のラジオ放送を受信するかということについて考えていたが、結局結論としては「何もアンテナを建てずに済ませる」のが一番良さそうだという話に落ちついてしまった。

その昔今は亡き関根慶太郎先生の最後のご著書であろうと思われる「無線通信の基礎知識」(ISBN-13: 9784789813464)にて予想されていたのが、「大電力大規模アンテナの無線通信は廃れ、小電力と小規模な到達範囲の無線局を多数置局する方向へ世の中が向かう」ということだったと記憶している。これを読んだ数年前はあまりその実感はなかったのだが、最近の世の中の情勢を見るに、もう大電力ラジオ放送は、少なくとも日本の都会では機能しなくなりつつあるのではないかという結論に至った。(この記事での話はいずれテレビ放送にも適用できると思うが、必要帯域や電力レベルを考えると、テレビでは技術的制約はずっと厳しくなるだろうと予想できる。)

以下に理由を箇条書きで書いておく。

  • ラジオ受信機とスマートフォンとの間の価格差は縮小している。家庭内にWiFi+定額インターネット回線が整備されつつあることを考えると、スマートフォンでインターネットラジオを聞くこととラジオ受信機で直接ラジオを聞くこととの差は縮小しつつある。
  • 移動中であっても、日本では3G/LTEの回線が整備されている地域であれば、ユニキャストのインターネットラジオでも基地局間のハンドオーバーが機能している限り中断はまずない。東京や大阪の地下鉄の中の状況を考えれば、むしろラジオ直接放送よりもアクセス範囲は広いくらいである。
  • 中波放送を電波で聞くのは、家屋内あるいは屋外の雑音(インバータやスイッチング電源の普遍的使用、特に最近は太陽光発電、LED電灯などの大電力パワーデバイスによる使用)を考えるに、ますます困難になりつつある。非常時あるいは停電時を除けば、その機能はインターネットラジオ(日本ではNHKのらじる☆らじると民放のRadiko)で十分補完されつつある。
  • FM放送を電波で聞くのは中波放送に比べればずっとノイズ耐性は高いが、これについても非常時あるいは停電時を除けば、その機能はCATVのFM放送中継、あるいはインターネットラジオで十分補完されつつある。(オーディオマニアの直接波受信指向については例外的な趣味として判断すべきであろう。)

平時の大電力ラジオ放送は以下の技術で置換されるだろう。

  • インターネットラジオ
  • CATVによるFM放送中継(あるいは地デジのデータ放送を使ったAMラジオの中継)
  • 3G/LTEあるいはそれ以降の携帯電話網

パラダイムシフトがあるとすれば、「大規模かつ広範囲なカバー範囲を提供する独立した無線局」から「小規模かつ小電力な狹いカバー範囲を提供する無線局が多数ネットワーク接続された複合体」への移行であろう。この環境では「マルチキャストあるいはブロードキャスト」とユニキャストのコストの違いはあまり意識されない(技術的にどのような負荷がかかるかとは独立した問題である)。この移行はまだ完了していないとはいえ、すでに起こっており進んでいることと予想できる。 このような移行によって失われるものがあるとしたら、それは以下の一点に要約されるであろう。

  • 単なる受信機では放送は受信できなくなったため、各端末に必要なエネルギー量が大きく増えている。携帯網あるいは無線LANに接続される端末は本質的に送受信機である。

この状況下で、大規模ラジオ放送の役割とは何なのか、今一度考えてみる必要があると思う。

(初出: Facebookの自分のタイムラインより 2016年1月3日)

2016年8月18日

祝「プログラミングElixir」刊行

このたび,Programming Elixir 1.2の日本語版がオーム社より「プログラミングElixir」として刊行される。この本は2nd editionであり、すでに3rd editionであるProgramming Elixir 1.3のプロジェクトが進行中だが、それでも日本語で初の本格的なElixir並行プログラミングシステムの書籍が出版されるのは大変喜ばしいことである。著者のDave Thomas、翻訳者の笹田さんと鳥井さん、編集者の方々、レビュアーの方々、そしてその他関係者の方々の努力に深く敬意を表したい。私もErlang/OTPに関わってきた者として、微力ながらレビュアーとして参加することができた。

以下は、「プログラミングElixir」発刊にあたっての、個人的なポエムである。

この本の「推薦のことば」にも書いたのだが、Dave ThomasがErlang Factory SF Bay 2014に現れたとき、「なんでRubyの人がErlangに関係あるのか」が、正直いってよくわからなかったのは当時の率直な実感だった。この時の彼とJosé Valimが共同して行ったプレゼンテーションは、"Catalyze Change"、つまり「変化を触媒となって加速しよう」というものだった。内容は、Erlangを読み慣れていない入門者にとって、Erlangのエコシステム全体がいかにわかりにくいかというのを徹底して糺弾するという、Erlang/OTPのファンにとってはかなり耳の痛い内容で、現場の空気は少なからず殺伐とした感じになったことを覚えている。そこでは、Erlangの文法のわかりにくさ、レコードの使いにくさ、マニュアルの読みにくさが強調された。これらの傾向は2016年の今でも直ったとはいえないだろう。Erlangのいわばドス黒い部分である。もちろんこの悪条件を越えている人達はいっぱいいるし、私もそれほどは気にならないが、多くのErlangを勉強しようとした人達を敬遠させる原因になったことは否定できないだろう。そういう意味でDave Thomasがやったのは、かなりキツいプレゼンだった。「Erlang/OTPにはこんなに未来があるのに、なんでこんな状況を放っておくんだ」というDave Thomasの不満は相当なものだったと思う。

しかし、Dave Thomasはそこで終わるような人ではなかった。なにしろThe Pragmatic Programmerという本を書き、Pragmatic Bookshelfを作った人である。彼はErlang/OTPに持っていた不満について、おそらくElixirに救いを見出したのだと私は思っている。そして彼はElixirを普及させる本を自分で書いてしまった。それがProgramming Elixirという本だった。かつてRubyに対して熱心だったDave Thomasは、今度はその情熱をElixirに向けたのだと私は思っている。残念ながらRubyに関する本は私はほとんど読めていないのだが、Pragmatic Bookshelfのラインアップを見ても、そのことは証明されているだろうと思う。なにしろMetaprogramming Elixirなんていう、Elixirのマクロを知らないと読めないような本、そしてPhoenixフレームワークのProgramming Phoenixという解説書まで出版させているのだから。こんなElixirに対してマニアックな人が他にいるだろうか?

Elixirが有名になってきた過程で、Erlang/OTPの側にいた人達は、かなり当惑していたように思う。ElixirにはErlang/OTPにない要素がたくさん詰まっている。そういう意味で私はまだElixirはほとんど使えていない。たぶん死ぬまで使えるようにはならないだろう。それくらいElixirは奥が深い。Erlang/OTPも2008年からつき合っているが、おそらく死ぬまでまともに使えるようにはならないだろう。どちらも奥が深すぎる。並行プログラミングシステムは、人類にはまだ早いのかもしれない。そんなことを思いながら、少ない時間の中で何度も実験を繰り返し、失敗し続けているのが現状だ。でもErlang/OTP単独ではできないことがElixirでできる。そのことは確かだ。だからElixirを支持しようと思った。その判断は間違っていなかったと思う。なにしろElixir、Erlang、どちらのコミュニティも小さすぎる。仲違いしている余裕なんかない。誰がErlang/OTPを維持し続けるのかということを考えたら、ElixirをきっかけにErlang VMを使うようになった人達を、仲間として歓迎こそすれ、絶対に敵にしてはいけない。今のところ、そういう判断でコミュニティは上手く回っているように私は思っている。共存共栄である。幸い、Erlang/OTPのプログラマの多くは、自分達のツールをElixirにも対応させている。

残念ながら未だにDave Thomas本人と個人的に話をしたことはない。しかし、Elixirを引っ張ってきた設計者でありErlang/OTPの辣腕プログラマでもあるJosé Valim、Phoenixフレームワークの作者Chris McCord、hex.pmパッケージマネージャの作者Eric Meadows-Jönsson、今はErlang/Elixirから離れているように見えるがビルドツールkerlを作りElixirの初期の普及に尽力したYurii Rashkovskii(この4人は皆若い!)、そして私同様のオッサンではあるがElixirの普及に力を注いできたBruce Tateなど、多くの強者達と話をし、彼等の作品に触れた経験で考える限り、ElixirはErlangが作ってきたエコシステムの可能性を大きく広げたことは間違いないと私は確信している。そのことをずっと前から見抜いていたDave Thomasについては、さすがとしかいいようがない。

「プログラミングElixir」は、どちらかといえばProgramming Erlang(第2版)(日本語版は「プログラミングErlang」(第1版の翻訳))同様、リファレンスではなく、最初から最後まで読んで手を動かしていくことで、プログラミングシステムの基本が身についていくようになっている本である。中にErlangのコードはほとんど出てこない。やっぱりErlangはDave Thomasには嫌われているのかもしれない(笑)。でも、OTPという単語は出てくる。だからOTPは知らないとこの本はわからないかもしれない。ということは、Elixirのマニュアル同様、Erlang/OTPのマニュアルを読まないと結局はいけなくなるのだろうと思う。Elixirは多くのElixirで書かれたモジュールを持っているが、実際はErlang/OTPのモジュールにも多くの機能を依存しているからだ。そういう意味で、この本を読んで先に進むには、Erlang/OTPの本が必要かもしれない。幸い、オーム社からは「すごいErlangゆかいに学ぼう!」(このblogで紹介した記事へのリンク)という本が2014年に出ている。両方読んでみることを、ぜひお勧めしたい。

これを機に日本でもElixirErlangに触れる人達がますます増えることを願っている。