Calcハッカー、吉田浩平氏が語るLibreOfficeの歴史と未来 ~LibreOffice mini Conference 2016 Osaka/Japan 基調講演レポート

2016年1月9日、GMO Yours! 大阪セミナールームにて、LibreOffice mini Conference 2016 Osaka/Japanが開催されました。

オープンソースのオフィスソフトであるLibreOfficeは、日本では着実にユーザーも増えていますが、知名度的にはもう一つなところもあり、また大規模でありユーザーベースの多いソフトウェアの割には、開発に挑戦しようという方、翻訳を手伝おうという方もそれほど多くありません。このような現状を少しでも良い方向に変えられないか、というのが、筆者が所属するLibreOffice日本語チームがLibreOffice mini Conferenceを始めたきっかけです。なお、ヨーロッパで行われるグローバルなカンファレンスに対し、日本という狭い地域で開催されるのでminiと称しています。

本稿では、今回の基調講演の内容をレポートします。

LibreOffice mini Conference 2016 Osaka/Japan 会場風景
LibreOffice mini Conference 2016 Osaka/Japan 会場風景

基調講演は、LibreOfficeの前身プロジェクトのOpenOffice.org時代から、LibreOfficeの表計算コンポーネントCalcのコア開発者として活躍されてきた吉田浩平氏により行われました。

基調講演者であるCalc開発者
吉田浩平氏
基調講演者であるCalc開発者、吉田浩平氏

吉田氏はNovell・SUSEに6年半、Collabora Productivityに1年弱在籍し、フルタイムでCalc開発に従事してきました。2013年には第8回日本OSS貢献者賞を受賞したことをご記憶の方も多いかと思います。現在はCollaboraを退職し、Deloitteにてソフトウェアエンジニアとして勤務する傍ら、ボランティア開発者としてCalcやその関連OSSの開発に関わっています。

今回の発表は「LibreOfficeの5年間を振り返って」と題して、2011年9月にLibreOfficeが発足してからの5年間を、吉田氏ならではの視点でまとめたものでした[1]⁠。

LibreOffice誕生のとき

LibreOfficeプロジェクトは、2011年9月に、当時はまだOracleの元にあったOpenOffice.org(以下OOo)というプロジェクトからフォークして始まりました。

LibreOfficeプロジェクトの発足は、OracleによるSun Microsystemsの買収という状況下における、コミュニティの内紛的な印象を持った方もいるかと思います。一面的にはそれは正しく、OracleがプロダクトとしてのOOoには関心はあったけれども、オープンソースプロジェクトとしてのOOoには関心がなかったため、コミュニティ側としてはフォークという選択肢しかなかったそうです。これを吉田氏は「背水の陣」と表現していました。フォークをしたからといって、必ずしも成功するとは言えないからです。

しかし、思った以上にコミュニティに支持され、フォークして数ヶ月でボランティア開発者の参加、そして彼らからのパッチが続々と集まってきたそうです。コアであるSUSEのメンバー[2]⁠ の他、Red HatやCanonicalといったオープンソース企業もLibreOfficeに加わりました。

また、このフォークを機に、LibreOfficeでは次のようなことを目指したのだそうです。

  • 小刻みな改良。メジャーバージョンに向けて大きな改良を入れ込むのではなく、常に改良して小さくリリースする。
  • ユニットテストの導入[3]や、コードのクリーンナップなどといった技術的負債を下げる活動。
  • ボランティア開発者の育成。オープンソースプロジェクトとしての成功を収めるのが第一の目的であったため。
  • 各リリースのハイライト:立ち上げから2013年上期まで

    次に、LibreOfficeとしては初めてのリリースであった3.3から、4.1までのリリースを、主に吉田氏が関わったCalcを中心としながら振り返りました。

    LibreOffice 3.3

    2011年1月25日にリリースされた最初のバージョンである3.3は、OOo 3.3としてリリースされるはずだった[4]コードベースにGo-ooのパッチを取り入れたリリースで、まだ「OOoの続き」という感じのするものでした。

    LibreOffice 3.4

    LibreOfficeコミュニティとしてリリースプランを立てられた最初のリリースは、次の3.4(2011年6月リリース)からです。CalcにおけるこのリリースのテーマはExcelとの互換性向上で、Calcを中心にユニットテストを少しずつ書き始めたそうです。

    ただし、この頃は旧OOo由来のコードの全貌を把握している開発者が少なく、経験のない中で取り組んでいたため、不具合も多かった時代だったそうです。

    LibreOffice 3.5・3.6

    3.5の頃になってコードベースにも慣れてきて、大きな変更にも挑戦できるようになったそうです。例えばCalcの数式バーの複数行表示や、Writerのヘッダー・フッターのインジケータの追加、CalcのオートフィルターのUI改善などが3.5で入りました。

    Calcの数式バー。複数行表示も可能になっている
    Calcの数式バー。複数行表示も可能になっている

    3.6は3.5の正常進化という形で、目立った機能追加こそなかったものの、バグの修正や小刻みな小改良が取り込まれたりしました。データバーやカラーバー、フィールド(セル内にシート名などを挿入する仕組み)なども3.6で入った機能です。

    LibreOffice 4.0

    4.0は、LibreOfficeの歴史的には大きな意味を持つリリースです。

    OOoの時代から、外部からLibreOfficeを制御するためのインターフェースであるUNO APIがありますが、このAPIは絶対に変更しないと取り決められていました。しかし、APIの構造とLibreOfficeの内部構造がどんどん乖離していき、これはもう変えるべきであると意思決定が行われました。バージョンが3.6から飛んで4.0になったのは、この互換性がない仕様変更をアピールするためです。

    LibreOffice 4.1

    ユーザーの目に見える変更として4.1では、Apache OpenOffice(以下AOO)から、IBMのSymfony由来の機能である「サイドバー」が取り込まれたことです。裏話ですが、戦略的に「AOOよりもサイドバー機能を先にリリースしよう」という目標もあったのだそうです。

    またビルドシステムが、OOo時代から使われていたdmakeと、makeが混在していたのを、dmakeを全廃してmakeに統一できたリリースでもあります。

    その他、Googleの湯川さんから、WindowsでGoogle日本語入力を利用したときの候補ウィンドウの位置を正しくするパッチが取り込まれたりしました。

    開発貢献者タイムライン

    ここまでの歴史の中でLibreOfficeに新たに加わった貢献者を示し、現在、精力的に活躍しているメンバーがLibreOffice発足後に加わっていることを説明しました。

    現在はビルド周りを見ているNorbert Thiebaud氏、
    LibreOffice日本語チームの創設メンバーである安部武志氏、
    現在はCalcのコアを開発しているMarkus Mohrhard氏、
    CalcにExcel同等のセル関数を追加しているWinfield Donkers氏、
    Base開発者のLionel Elie Mamane氏、
    LibreLogoの開発者László Németh氏、
    画像処理やカラーピッカーなどのUIを改善しているTomaž Vajnger氏、 ……などの名が見て取れる

    画像

    なお、4.1がリリースされた2013年には、第1回LibreOffice mini Conference Japanが開催され、ちょうどこのタイミングで、吉田浩平氏が第8回OSS貢献者賞を受賞したことは、吉田氏にも、我々日本のコミュニティにも印象深い出来事でした。

    2013年下期から現在にかけて

    その後、2013年下期から現在までの間は、LibreOfficeプロジェクトにとっても、吉田氏にとっても大きな出来事がありました。

    一つは、LibreOfficeプロジェクトの設立メンバーを多く抱えるSUSEが、LibreOfficeのビジネスから撤退することとなり、吉田氏を含む主要なメンバーがイギリスのオープンソース企業Collaboraに移籍したことです。その後、CollaboraはLibreOfficeの長期サポート(Long Term Support; LTS⁠⁠、Level 3サポート(ソースコードレベルでのサポート⁠⁠、開発コンサルタントなどを請け負う部門Collabora Productivityを立ち上げました。

    もう一つは、The Document Foundationの2つ目のプロジェクトとして、Document Liberation Project(DLP)が生まれたことです。このプロジェクトは、⁠特に開発が止まってしまって読むことができなくなった)プロプライエタリなオフィスソフトのドキュメントフォーマットに対して、フィルターを書くことでLibreOfficeから読み込めるようにして、ODFの形で保存・編集できることを目指しています。

    各リリースのハイライト:2013年下期から現在まで

    この時期のリリースについても、バージョンごとに振り返りました。

    LibreOffice 4.2

    4.2のリリースのハイライトは、Calcのセル構造を大幅に書き換え、パフォーマンスを向上するとともに、メモリ使用量を削減するという活動です。下準備は2010年頃から始まり、4.2で入れ込んだとのことです。

    効果が大きかった変更ですが、非常に大変だったようです。当然ですが、表計算ソフトでは多くの処理はセルを操作します。そのため、Calcコアのコードの半分程度を書き換える大規模な変更となったそうです[5]⁠。実際、4.2では安定性がかなり犠牲になってしまいました。ユニットテストは4.1に比べて2倍程度増強していましたが、その後も安定性向上に注力し続けることとなりました。

    LibreOffice 4.3

    4.3のCalcは、4.2で低下した信頼性を再び向上することに全力を注いだリリースとのことです。また、セル構造の変更に伴い4.2ではソートが遅くなってしまったので、それを書き直す作業も行ったそうです。

    LibreOffice 4.4

    Calcの安定性向上の戦いは続き、4.4でようやっと以前のレベルに追いついたそうです。

    LibreOfficeのUI抽象化レイヤーであるVCLにOpenGLを利用するパッチが入りましたが、まだ効果は限定的でした。また、Impressのスライド切り替えでOpenGLを用いる効果はLinuxでしか使えなかったのですが、このバージョンでWindowsでも利用可能になりました。

    そして、このバージョンを最後に、吉田氏はCollaboraを退職することになりました。

    Collabora退職後:ボランティア開発者として

    ボランティア開発者となった吉田氏は、Calcの一部から汎用的な処理を切り出したC++ライブラリである、mddsixionorcusのメンテナンスに力を注ぐことになりました。

    これらのライブラリについてもやりたいことはたくさんあったそうですが、フルタイムの開発者として働いていたときは、どうしてもCalcそのものの不具合修正や新機能開発を優先しなければならず、ボランティアになってやっと手をつけられたとのことです。

    機能追加やバグ修正はもちろん、ixionやorcusについてはPythonモジュールを作成したり、ドキュメントを整備したりなど、これらのライブラリの利用者を増やすための活動に注力したとのこと。

    今後は、LibreOffice本体の開発への復帰とともに、⁠自分がやりたいことができる」というボランティアという立場を生かし、もっとコミュニティ的な活動も行っていきたいと話していました。

    LibreOfficeの最新動向

    吉田氏は、LibreOfficeの現在のホットトピックについても紹介しました。

    • LibreOfficeのUI抽象化レイヤーであるVCLについての大規模なリファクタリング。メンテナンス性の向上を狙っています。
    • 話題のLibreOffice Online。⁠デモ版が公開されたのでデモしようとしたのですが動きませんでした」と、会場の笑いを誘っていました[6]⁠。
    • LibreOfficeの開発に関するドキュメントやインフラを一つにまとめたWebサイト「devcentral」。
      開発者向けダッシュボードdevcentral。Norbert Thiebaud氏が中心になって構築
      開発者向けダッシュボードdevcentral。Norbert Thiebaud氏が中心になって構築

      LibreOfficeのこれまで、そしてこれから

      発表では、吉田氏の「LibreOfficeはフォークして正解だった」という力強いメッセージが響きました。貢献者にも恵まれ、小刻みな変更がうまくいっただけでなく、Calcのセル構造変更やVCLのリファクタリングのような大規模な改善も行えたことを評価していました。

      とはいえ反省がないわけでもなく、これからのLibreOfficeについての提言もありました。

      一つは、開発者のマインドセットを変えるべきときに来ているのではないかということです。今までは新規の貢献者のモチベーションを重要視していたため、まずはパッチを取り込んで世に問うことを第一にしていました。しかし、品質を維持するという視点にシフトすべきではないかという言及は、多くのバグと戦ってきた吉田氏らしい重みがありました。

      また、クラウドやビッグデータへの対応も考えていくことが必要なことや、今うまくいっている長期的開発の支援体制や貢献者の育成について継続すること、そして大きな課題として、ヘルプのようなドキュメントが開発に追いついていない現状をどうしていくかという問題について意見していました。

      まとめ

      LibreOfficeという「techな人ではない人が使うコンシューマプロダクト」を作るプロジェクトを、開発者という立場で開始時から見てきた吉田氏の講演は、主に翻訳という活動でLibreOfficeに関わりながらもいつかは開発に挑戦してみたいと考えている、あるいは日本からの開発者を増やしたいという、筆者の立場からも大変興味深いものでした。

      LibreOfficeコミュニティは、新たな貢献者に対して非常に好意的だと感じていますが、それは発足時からそういうプロジェクトであることを目指しているのだと再認識できたのは大きかったです。

      本講演を機に、日本からLibreOfficeの開発にチャレンジしてみよう、という方が増えていただければ嬉しいです。ぜひ、一緒にLibreOfficeの未来を作っていきましょう!

      (写真撮影:近藤昌貴氏)

おすすめ記事

記事・ニュース一覧