Saturday, January 4, 2014

2013年を振り返る

無事に2014年の元旦も迎え、少し一段落したところで、2013年の一年を振り返ってみたいと思う。去年は、今振り返ると本当にたくさんな出来事があった。その中でも主だったもの、今まだ記憶に新しいものをピックアップしてみたい。

第8回日本OSS貢献者賞の受賞

2013年は一言で言うとイベント満載の年だったと言える。まず2月に行われたOSC東京において、第8回日本OSS貢献者賞というものを頂いた。賞を貰うということ自体は勿論嬉しいのだが(というか正直かなり嬉しかったのだが)、この賞の受賞には、賞以外にもいろんな意味が込められているような感じがした。

まず第一に、今まで自分がLibreOfficeやそれ以前のOpenOffice.orgに対してやってきたことが、日本国内で少なからずインパクトを与えていたこと。受賞以前にも薄々と手応えは感じていたのだが、この受賞をきっかけにその手応えがより確実となった感がある。

ただこの賞には「今までの活動に対する承認」という意味以外にも「これからの期待」という意味も含まれていた気がする。なので、その期待を裏切ることなく、これからも自分なりのベストを尽くしていきたいと思う。ただだからといって今までと同じ事を今後もずーっとやっていくのはいささか抵抗があるので、自分の強みを活かしながらも常に新しい分野を開拓し、いろんな意味でいろんな形で役に立つ良質なコードをこれからも書いて行きたい。そんなこと言うといささかclichéっぽく聞こえてしまうかもしれないが、これが今の正直な気持ちなのでいたしかたない。

あ、そうそう。この賞の景品として頂いたAmazon Kindle PaperwhiteとIntel NUC、かなり役に立っています(笑)。提供してくださったNTTデータさんには大変感謝しております。

Calcのセル格納構造の大幅改変

授賞式後にアメリカに帰国(?)してすぐに始まった作業が、Calcの内部構造、特にセル格納構造を大幅に書きなおすという作業だ。これの詳細については以前に英語のブログで説明してあるのでそっちを参照して欲しい。この作業は、始める前からかなり大掛かりになることは予想していたのだが、結局なんだかんだで最初の大コミットに至るまでに3ヶ月かかり、それ以降も、この新しいセル格納構造を使ったGPUでの並列計算処理やそれ以外の関連作業に追われ、それに殆どの時間を費やして年が終わってしまった結果となった。

表計算ソフトというのは由も悪しきもセルを使って「何か」をするのが目的のソフトであるから、そのすべての基盤となるセルの格納構造を、しかもほんの少しではなく大幅に書き換えてしまうといろいろな意味で大変なことになる。勿論これほど大幅な変更をする背景にはCalcの計算処理を高速にするという目標があり、それを達成するためにこんなに汗水流して頑張るのであるが、いかんせんCalcを構成するコードの99.9%がセルの読み書きをする目的で書かれているため、いろんなところでいろんな種類の予期せぬ問題が起きる。特に格納構造が大幅に変わればそれを最も効率良く読み書きする方法も大幅に変わってしまうので、以前の構造を念頭に置いて書かれたコードが変更後にかなり遅くなってしまう、もしくは頻繁にクラッシュしてしまう、という事態にもかなり出くわした。という訳で、それらの不具合の後処理にかなりの日数を費やすはめになったのは言うまでもないのだが、幸いにも大体の部分は無事対処することができたのでとりあえず一件落着ではある。まだ未解決の部分も現在わずかに残ってはいるのであるが、それは今後少しずつ解決していく予定である。

自動スペルチェックの実装を一から書き換えるはめになったのはその後処理の例の一つで、その他にも数式の参照メカニズムの大幅書き直し、それに伴うかなりの量のユニットテストの実装などなど、とにかく沢山やった。

そんな苦労話はさておき、このセル格納構造の変更のおかげで初めて可能になった機能も多々あるので、全体的に見たら大成功だったと我ながら思っている。特にこの変更は数年前からずっとやりたいと思っていたことなので、それが実現した今、大きな肩の荷が一つ下りて正直かなりホッとしている。

SUSEからCollaboraに移る

これはもう、突然通知されて突然起こって、あっという間に移ってしまったというのが正直な感想である。なので余り考える暇もなかったし、自分にとっては選択の余地もなかったので、成るようにして成った、という結果でしょう。当時のSUSE・LibreOffice開発チームの全員が移籍したわけではないので僅かに面子が減ってしまったのは寂しいのだが、それ以外は余り変わっていないので余り移籍したという実感はない。そうは言っても、SUSEがサーバー事業に重点を置いてデスクトップ事業側には余り力を入れていなかったことはSUSE時代からも感じていたし、それに危機感を少なからず感じていたのは事実だったので、移行によってその不安が取れてLibreOfficeにより精神的に集中できる環境に移れたというのはプラスだったと言える。SUSE側も、我々の移行の際には移行が最もスムーズに進むよう最善を尽くしてくれたので、それには心から感謝したい。

ただ移行によって変更が余儀なくされた部分もある。SUSE時代は顧客からのL3サービス依頼の処理以外は結構自由だったので、L3に忙しい時期以外はアップストリームに報告されたバグの修正に費やせる時間がかなりあった。Collaboraに移った今、コンサルタントとしての開発作業に殆どの時間を費やす必要があるので、アップストリームのバグ修正に費やせる時間が以前に比べたら愕然に減ってしまったという点は大きい。それでも頑張って時間のやりくりをして、出来るだけ自分の守備範囲のバグの修正はするようにはしているが、やはり以前のようには行かない。これはもうどうしようもない。だからこれについては当面は周囲に理解してもらうという形で乗り切るしかない。

ちなみにCollaboraでは、コンサルタントによる開発業務は勿論、LibreOfficeの商用サポート業務もやっているので、LibreOfficeを導入したいけどエンタプライズ・レベルのサポートが必要、という方は、Collaboraの方をどうぞ宜しくお願いいたします。日本からは代理店を通じてのサポート契約も可能なので、最寄りの代理店にお問い合わせしてみてください。と、少し我が社の宣伝しておきます(笑)。ちなみに代理店のほうも随時募集中です。

ま、営業はこれくらいにしておいて...。

OpenCLを使った数式の並列計算処理の実装

これは2013年内での最も大きな変更だったと思う。先に触れたセル格納構造の変更、それ以外にも手がけた数式セルのグループ化、共有文字列(shared string)の実装、共有数式(shared formula)の実装等々かなりの大がかりな変更が相次いだのだが、それらの第一の目的は全てOpenCLによるGPUでの数式計算を可能にするためであった。

とはいえこれらの変更はOpenCLだけのために実装されたわけではなく、OpenCLを使わないユーザーにも恩恵をもたらすという点は強調しておきたい。例えば、共有文字列の実装により文字列間の等価比較が高速になり、それを使った機能は全て以前に比べて高速になることが期待できる。オートフィルタの実行速度の向上も期待できるし、それ以外にもVLOOKUPのようなセル関数も以前に比べて高速化された。一方で、共有数式の実装により、実行時のCalcのメモリ消費量の減少も期待できるし、数式セルの移動に伴う参照されたセルのアドレスの自動変更に於いても高速化が期待できる。

因みにOpenCLというのは、GPUを使って高速並列計算をハードウェアで実行する時に使うAPIで、元々米アップル社によって開発され後にKhronos Groupに引き継がれて標準化に至ったAPIである。APIの構造はOpenGLのそれにかなり近いが、OpenGLに於ける複雑な3次元描画処理の部分が含まれていない分比較的シンプルな構造になっていると言える。現在市場で出回っているGPUの殆どがOpenCLをサポートしているので、これをアプリケーション側で利用しない手はない、というわけだ。

ところでこの数式処理のGPU化の作業には、僕を含めたCollabora以外にもMultiCoreWareAMDが加わって共同開発された。AMDはこれを機にTDFのAdvisory Boardに加わった程なので、今後もいろんな形でLibreOfficeの開発に関わっていくことが期待できる。

高橋信頼さんの逝去

最後に、日経BP社、ITPro副編集長であった高橋信頼さんの突然の逝去で2013年は幕を閉じた。僕と高橋さんは日本OSS貢献者賞授賞式以来の付き合いで、ITPro掲載のLibreOffice関係のインタビュー記事の執筆の際には大変お世話になった。期間的に言ったら一年未満とそんなに長い付き合いではなかったのだけど、以前から高橋さんのOSS関連の記事には目を通していたし、インタビュー記事後もいろいろな記事で僕を引用してくれたりと、これからまた一緒に仕事できる機会がありそうで楽しみにしていた矢先のことだったのですごいショックだった。それと同時に、人生は自分たちが思っているよりも遥かに短いのだ、ということも実感させられた。

高橋さんは、記者・編集者としての腕前もさることながら、それ以外にも人の写真を撮ることに非常に長けているという印象を受けた。特にカメラの前で緊張し過ぎてぎこちない笑顔しか作れない我々にジョークを投げて自然な笑顔を引き出せるような術を持っていたのはすごいな、と思った。OSC東京の際に高橋さんの撮ったこの写真この写真を見るとみんなにこやかに笑っているんだけど、あれはすべて高橋さんが笑かしてくれたから、というのは今だから言える暴露話です(笑)。

高橋さん、ほんの短い間でしたが本当にありがとう。

2014年はどうする

という訳で、2013年を僕個人の視点からざっと振り返ってみた。ここで今年の目標について少し語ってみたい。

はじめの方でも少し触れたのだが、今年は特に、今までと同じことを繰り返すだけでなく、何か自分が今までやったことのない分野にどっぷり浸かる、というのを目標にしたい。特に今まで余り経験のなかったグラフィック処理について学び、そこら辺で何か面白いことができないか、と今必死に模索中である。勿論Collabora業務内に於いては今まで通りCalcが守備範囲になるのだけど、それ以外の時間では、新たな技術を学んで自分の守備範囲を広め、去年のような斬新で一見とてつもないようなアイデアを実装にまで持っていく、ということをまたやってみたいと今は密かに思っている。

No comments: