Osaka/Japanが開催されました。オープンソースのオフィスソフトであるLibreOfficeは,日本では着実にユーザーも増えていますが,知名度的にはもう一つなところもあり,また大規模でありユーザーベースの多いソフトウェアの割には,開発に挑戦しようという方,翻訳を手伝おうという方もそれほど多くありません。Conferenceを始めたきっかけです。ヨーロッパで行われるグローバルなカンファレンスに対し,日本という狭い地域で開催されるのでminiと称しています。本稿では,今回の基調講演の内容をレポートします。基調講演は,LibreOfficeの前身プロジェクトのOpenOffice.org時代から,LibreOfficeの表計算コンポーネントCalcのコア開発者として活躍されてきた吉田浩平氏により行われました。Productivityに1年弱在籍し,フルタイムでCalc開発に従事してきました。2013年には第8回日本OSS貢献者賞を受賞したことをご記憶の方も多いかと思います。現在はCollaboraを退職し,Deloitteにてソフトウェアエンジニアとして勤務する傍ら,ボランティア開発者としてCalcやその関連OSSの開発に関わっています。今回の発表は「LibreOfficeの5年間を振り返って」と題して,2011年9月にLibreOfficeが発足してからの5年間を,吉田氏ならではの視点でまとめたものでした(※1⁠)⁠。Foundationが出したホワイトペーパーがあります。こちらは当時の経緯などを記録したBlogなどをクリップした上で公式なコメントが追加されたもので,短縮版でも700ページ,完全版は1,300ページもある大作です。拾い読みするだけでも面白いので,ぜひご覧ください。LibreOffice誕生のときLibreOfficeプロジェクトは,2011年9月に,当時はまだOracleの元にあったOpenOffice.org(以下OOo)というプロジェクトからフォークして始まりました。Microsystemsの買収という状況下における,コミュニティの内紛的な印象を持った方もいるかと思います。一面的にはそれは正しく,OracleがプロダクトとしてのOOoには関心はあったけれども,オープンソースプロジェクトとしてのOOoには関心がなかったため,コミュニティ側としてはフォークという選択肢しかなかったそうです。これを吉田氏は「背水の陣」と表現していました。フォークをしたからといって,必ずしも成功するとは言えないからです。思った以上にコミュニティに支持され,フォークして数ヶ月でボランティア開発者の参加,そして彼らからのパッチが続々と集まってきたそうです。HatやCanonicalといったオープンソース企業もLibreOfficeに加わりました。このフォークを機に,LibreOfficeでは次のようなことを目指したのだそうです。メジャーバージョンに向けて大きな改良を入れ込むのではなく,常に改良して小さくリリースする。ユニットテストの導入(※3)や,コードのクリーンナップなどといった技術的負債を下げる活動。ボランティア開発者の育成。オープンソースプロジェクトとしての成功を収めるのが第一の目的であったため。※2LibreOfficeプロジェクトは,当時SUSEのメンバーが中心となって開発していたOOoへのパッチキットGo-ooというプロジェクトを母体としています。※3OOo時代にはこういったコードは取り込まれず,LibreOfficeになって初めてユニットテストの取り込みに成功したのだそうです。各リリースのハイライト:立ち上げから2013年上期まで次に,LibreOfficeとしては初めてのリリースであった3.3から,4.1までのリリースを,主に吉田氏が関わったCalcを中心としながら振り返りました。3.3としてリリースされるはずだった(※4)コードベースにGo-ooのパッチを取り入れたリリースで,まだ「OOoの続き」という感じのするものでした。3.3としてリリースされました。3.4LibreOfficeコミュニティとしてリリースプランを立てられた最初のリリースは,次の3.4(2011年6月リリース)からです。CalcにおけるこのリリースのテーマはExcelとの互換性向上で,Calcを中心にユニットテストを少しずつ書き始めたそうです。この頃は旧OOo由来のコードの全貌を把握している開発者が少なく,経験のない中で取り組んでいたため,不具合も多かった時代だったそうです。3.5・3.63.5の頃になってコードベースにも慣れてきて,大きな変更にも挑戦できるようになったそうです。Calcの数式バーの複数行表示や,Writerのヘッダー・フッターのインジケータの追加,CalcのオートフィルターのUI改善などが3.5で入りました。複数行表示も可能になっている3.6は3.5の正常進化という形で,目立った機能追加こそなかったものの,バグの修正や小刻みな小改良が取り込まれたりしました。データバーやカラーバー,フィールド(セル内にシート名などを挿入する仕組み)なども3.6で入った機能です。4.04.0は,LibreOfficeの歴史的には大きな意味を持つリリースです。APIがありますが,このAPIは絶対に変更しないと取り決められていました。APIの構造とLibreOfficeの内部構造がどんどん乖離していき,これはもう変えるべきであると意思決定が行われました。バージョンが3.6から飛んで4.0になったのは,この互換性がない仕様変更をアピールするためです。OpenOffice(以下AOO)から,IBMのSymfony由来の機能である「サイドバー」が取り込まれたことです。裏話ですが,戦略的に「AOOよりもサイドバー機能を先にリリースしよう」という目標もあったのだそうです。ビルドシステムが,OOo時代から使われていたdmakeと,makeが混在していたのを,dmakeを全廃してmakeに統一できたリリースでもあります。その他,Googleの湯川さんから,WindowsでGoogle日本語入力を利用したときの候補ウィンドウの位置を正しくするパッチが取り込まれたりしました。開発貢献者タイムラインここまでの歴史の中でLibreOfficeに新たに加わった貢献者を示し,現在,精力的に活躍しているメンバーがLibreOffice発足後に加わっていることを説明しました。Japanが開催され,ちょうどこのタイミングで,吉田浩平氏が第8回OSS貢献者賞を受賞したことは,吉田氏にも,我々日本のコミュニティにも印象深い出来事でした。LibreOffice著者プロフィールおがさわらなるひこLibreOffice日本語チーム所属。主な担当はUI翻訳や東京圏でのイベント企画など。本業は(株)SHIFT所属のソフトウェアテスト自動化アーキテクト。自由なデスクトップとしてUbuntuを愛用。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。