ぼくのDOSS奮闘記 1/3

ここから後期実験「大規模ソフトウェアを手探る」のレポートを書いていきたいと思います。時系列に沿ってどのようなことを行ったか、裏にはどのような苦労があったのかをわかりやすくまとめていきたいと思います。

 

1日目で簡単なデバッガの使い方を身につけた後、2日目に僕たちは扱うソフトウェア決めという重要な分岐点に差し掛かっていた。emacsでのデバッグは少々不慣れだったもののある程度流れは掴めていたので、多少ソースコードの量が増えても同様の手順で進められるだろうとこの時は思っていた。

チームを組んだ3人がそこまでプログラミングに長けたメンバーではなかったため、ハードルは高いソフトウェアは避けようと思っていた。過去のブログなどをみた結果からchromiumなどのブラウザ系は処理が追いにくくソースコードも多そうだと(ほとんど推測のみである)見切りをつけた。また、InkSpaceなどのお絵かきソフトも手をつけやすそうだったが、触ったことのないソフトウェアを手探るのは流石に無茶ではないかという話になりこれもスルーした。そんなこんなでテーマ決めに悩んでいるときにふと学科PCに入っていたフリーのソフトウェア、LibreOfficeが目に入った。これなら全員が触ったこともあり、それほどコードが大規模すぎることはないのではないか(これが大きな間違い)と思い、軽い気持ちで着手することにした。これが僕たちとLibreOfficeの運命の出会いである。

さて、コードを手探るも何もまずはローカル環境でビルドしてみないことには話が進まない。僕たちは最初の関門「ビルド」に立ち向かっていく。

まずはビルドするにあたって公式のページを探っていくと、いい感じにビルドの手順がまとまっているページを見つけた。

https://wiki.documentfoundation.org/Development/BuildingOnLinux

このページに載っている通りにファイルをgit cloneしてautogenしてmakeすればいけそうな気がする。とりあえず以下のコマンドを叩いてみる。

$ git clone git://anongit.freedesktop.org/libreoffice/core
$ cd core
$ ./autogen.sh --enable-dbgutil --without-java --without-help --without-myspell-dicts

git cloneして「450万ファイルあるで」と出てきた時にこのソフトウェア実はやばいんじゃないかという予想が頭を掠めた。autogen.shの後についているオプションはlinuxでビルドする時につけといたほうがいいよーというものらしい。特に--enable-dbgutilは後でその重要性を知ることになる。

autogen.shを走らせるといくつかインストールしろと言ってくるので言われたとおりにいくつかインストールしたら無事に終わってくれた。さて、あとはmakeするだけなんですが、これがとーっても長いんですね。公式でも

"make is the command which takes a vast quantity of time to run for the first time."

って脅してくるくらいですから。vast quantity of timeって強そう。笑

さて、それではmakeしましょう!

$ make

 ......

 ........

 ..........

TAさんには5時間くらいかなと脅されたが、幸い3時間ちょいで終わった。はやいはやい。(汗)ちょっと外が寒い日だったのでフル稼働で激しく放熱する学科PCがいい暖房として機能していた。

makeが終わった後、instdirというディレクトリができていたので、サイトに従い以下のコマンドを打つと指定したソフトが起動した。この場合は--calcと指定することでLibreOffice Calcを起動する。

$ instdir/program/soffice --calc

ここでLibreOfficeについて簡単に説明しておくと、MicrosoftのWordやExcelに対応するようなソフトウェアをオープンソースとして無償で提供しているものである。現在も開発が積極的に行われていて、企業向けの安定版と最新機能をふんだんに盛り込んだ最新版の2つがリリースされている。今回は様々あるLibreOfficeのソフトの中からExcelに対応する「LibreOffice Calc」を手探ることにした。

とりあえずそこまで大きなトラブルもなくLibreOffice Calcの起動まで終えて割と順調な出だしだと思えた。makeが長いのは一回目だけだからと言われたのでとりあえず一安心してこの日の実験を終えた。この先に広がるデバッグgrepの闇などまだ知るはずもないのである... (次の記事に続く