各地のDebian勉強会が集結し、Debianユーザ・Debian開発者の交流を目的とする大統一Debian勉強会が6月29日、東京の日本大学 駿河台キャンパスで開催されました。本稿では、今回のイベントについてレポートします。
大統一Debian勉強会とは
大統一Debian勉強会は全国各地で行われているDebian関係の勉強会関係者とDebianに興味のある人たちが集まり、人的・技術的交流を行うことをテーマとして開催しています。
また、世界各国で毎年開催されているDebConf(Debianカンファレンス)を将来日本で開催するための調査、運営スキルアップを目的としています。
昨年からイベントが開催され、会期1日間で約100名のDebianユーザ、Debian開発者、フリーソフトウェアユーザが集まり、Debianに関する12の発表が行われました。このイベントによって、LinuxカーネルおよびDebianへの新しいマシンのサポートやDebianのインフラ整備が行われるなどの成果も出ています。
去年は京都の京都大学 数学教室で行われましたが、今年は東京の日本大学 駿河台キャンパスをお借りして開催され、140名ほど参加いただきました。
今回は事前に募集された発表だけではなく、アンカンファレンス用の部屋も準備され、その場で様々な討論が行われました。またハック用の部屋も用意され、開発に集中する方も多くいました。
発表内容
2013年度のテーマは「Level up Debian」です。今回のイベントに参加することによって、Debianの新しい使い方を知ることができ、一歩進んだ使い方ができるようになることを考えています。
本イベントでの発表内容もこのテーマに沿ったものが集まりました。以下に発表内容を紹介します。
debhelperにおけるプログラミング言語対応の仕組みについて/岩松信洋
Debian Project Official Developerの岩松信洋さんより、パッケージ作成を楽にするためのdebhelper拡張 について解説していただきました。
debhelperは、Debianパッケージ作成を行うためのヘルパーツール群で、Debianパッケージを作るために必要な共通処理がまとめられており、開発者はdebhelperの呼び出しをするだけでパッケージを作ることができるようになっています。しかし、各言語やフレームワークごとに異なる処理を行う場合は、個別に記述していく必要があります。
岩松さんは、プログラミング言語Erlang関連パッケージをいくつか作っているうちに、共通化できる部分があると考えました。そして、debhelper version 7より提供されているdebhelperの拡張機能を利用し、Erlang言語のパッケージを作るためのdh-rebarを開発しました。Erlang言語は、rebarというビルドツールを使ってビルドするのが一般的です。dh-rebarでは、これらを利用したコマンドをdebhelperの各ステージに割り込ませ、開発者はdh-rebarを呼ぶだけでビルドできるようになりました。
%:
dh $@ --buildsystem=rebar --with rebar
debhelperの拡張をすることで、パッケージ作成プロセスをさらに汎用化し、より楽にパッケージを作成できるようになるという、開発者にとって有益な講演でした。
gdb+python拡張を使ったデバッグ手法/野島貴英
野島貴英さんからは、GDBを使ったプログラムのデバッグ手法 についてお話いただきました。
Debianでは、デバッグ用のシンボルをプログラム本体から分離してパッケージにすることがしばしばあります。デバッグシンボルのパッケージ名は通常-dbgで終わり、Debianパッケージのバイナリーをデバッグするときには、これらのパッケージをインストールしておく必要があります。
セッションではPHP5を題材に、DebianパッケージのCompatibility levelの違いによるデバッグシンボルの配置の違いや、GDBをPythonから動かすといったコアな話を取り上げました。PHPはxdebug+eclipseなどを使ってデバッグすることが多いとのことですが、GDBを使うと暴走中のプログラムにアタッチできるため、デバッグの幅が広がるとのことです。
Pythonを使ったGDBの操作では、GDB 7.6から搭載されている機能により、GDBの中でPythonコンソールを利用できることの紹介や、PHPの実行トレースを得ることについて説明しました。ただ、セッションの最後ではGDB+PythonでPHPスクリプトの実行トレースを得ることの問題点も述べていました。デバッグにPythonを使うと、PHPスクリプトの実行速度が極端に落ちてしまいます。今後工夫して行かなければならないとのことでした。
とあるWeb企業でのDebianシステムの使い方/前田耕平
Debian JP Projectで会長を務められたこともある、サイバーエージェント社の前田耕平さんが、CentOS主体のインフラをいかにしてDebianベースのものに変えていったか についてお話いただきました。入社当時はほぼCentOSの環境だったものが、社内およびグループ会社のエンジニア向けのサービス用途にはDebianやUbuntuが増えているそうです。
開発は主にDebianのsidを利用しているそうです。原則としてオフィシャルパッケージを利用するのですが、もしバージョンが古かったり必要な機能が提供されていなければ、自分たちでリビルドを行います。これらはすべてGitで管理されているそうです。そして、実際の運用環境がUbuntu preciseの場合は、pbuilderを利用してprecise用にリビルドするのですが、その際、依存するパッケージが存在しなかったり、バージョンが古かったりする場合があります。その場合は、依存パッケージもすべて同様にリビルドを行うそうです。pbuilderなどの自動ビルドツールが揃っているDebianだからこそ、こういったことが可能になりますね。
その後、独自に作成したパッケージは、社内のパッケージアーカイブに登録します。このときに、repreproというツールを利用しているそうです。repreproパッケージの使い方を誤解していたため、最初はいろいろと苦労したそうですが、とても簡単に独自パッケージアーカイブを作成できるそうです。これらのapt-lineやアーカイブの公開鍵は、OSインストール時に自動で入るようになっており、ユーザは意識せず利用することができるそうです。
Debianシステムを管理するための仕組みを解説していただきましたが、「 一番重要なのはDebianを使いたいという強い意志である」という言葉で締められていたのが印象的でした。
善きDebian者は堅牢なるGnuk Tokenを使う/g新部裕
GNU Projectなどで活躍されているg新部裕さんに自身が開発されているセキュリティ・トークン「Gnuk Token」 について発表していただきました。
まず、DebianにおけるPGP/GPGの取り扱いについて説明され、これに踏まえて秘密鍵の管理をどのようにしたらいいのかを話しました。PGP/GPGでは秘密鍵が人に漏れるとなりすまされる可能性があり、適切に管理する必要があります。通常はPCなどに秘密鍵が入っているのですが、PCがある場所から少し離れたりしたときに鍵が盗まれる可能性があります。
よって常にPCを携帯しないといけなくなるのですが、これは大変です。カードに格納して管理することもできるのですが、常にカードリーダを持ち運ぶ必要があり、それも大変です。
そこで、g新部さんはUSBで管理するためにセキュリティトークン「Gnuk Token」を開発されました。
Gnuk Tokenは、主に次の特徴を持っています。
NDAを結ぶ必要のない秋葉原等で一般の方が購入できるデバイスを選択
独立したデバイスで、共有しているPCをにデータを持たせない
暗号の計算をデバイス自身で行う。秘密鍵も外部メモリに保存するのではなく、チップ内部に保存する
もちろん内部で動くOS、デバイスドライバ、暗号エンジンの実装はフリーソフトウェアで構成されています。
そして、ブルートフォースアタックへ対応、内部に書き込まれた秘密鍵へのアクセス制限、アップデート時のセキュリティ対応なども考慮して実装しているとのことでした。
PGP/GPGの話だけではなく、OpenSSHで本デバイスを使う方法やGPG秘密鍵をSSHで利用する方法、本デバイスの多くの利点なども説明しました。
今後はクライアント認証での使用、ディスクの暗号化、cygwinのSSHやputtyで使用できるように環境を整備など、まだまだやりたいことがあるとのことでした。
「Gnuk Token」やこれを使ったシステムなどに興味がある方はg新部さんに連絡してみてはいかがでしょうか。
Azure de Debian/Kazumi HIROSE
Kazumi HIROSEさんからは、Microsoft社のクラウドサービスWindows AzureでのDebianの動かし方やDebianからのAzureの活用方法、最近のMicrosoft社のOSSへの取り組み についてお話いただきました。
デプロイ王子という二つ名を持つHiroseさんはMicrosoft MVP for Windows Azureという肩書きをも持ち、仕事ではAzure関係の仕事をされることが多い一方で、実はDebian 1.3(bo)の頃からのDebianユーザです。プライベートや仕事でもDebianを使い、セッションでもDebianへの愛を感じられました。
DebianからWindows Azureを使うには、Webブラウザーか専用のコマンドラインツール(Windows Azure xplat CLI tools)の2つの方法を利用できるとのことです。
また、Windows AzureでのIaaS機能でのDebianを使うには次の4つの前提条件があります。
DebianをインストールしたHyper-V用のディスクイメージ
Hyper-V用のカーネルモジュール(Linux Integration Services Hyper-V)
WALinuxAgentというdaemon
Hyper-V用のディスクイメージのアップロード
これらは、次のように解決されています。
ディスクイメージはQEMUなど他のVMイメージからコンバートすれば特に問題ない
WheezyのLinux kernelでは既にサポートされている
Jessy/Sidでは既にパッケージになっている
Windows Azure xplat CLI toolsでアップロードできる
4のCLIは別途最新のnode.jsの環境を用意し、npm(Node Package Manager)でインストールする必要があるものの、基本的に全部Debianで行うことができるそうです。
最後にMicrosoft社のOSSへの取り組みについて取り上げました。HiroseさんはMicrosoft Open Technologies社に訪問されたことがあるそうなのですが、その際に代表の「( Windows Azureで)Debianをサポートしないのか?」という質問をしたところ、「 誰にアポイントすれば良いのか分からないが、可能であればコンタクトを取りたい」と言っていたという裏話も紹介しました。
Dennou Club LibraryをDebian公式パッケージにするには?/佐々木洋平
佐々木洋平さんからはDennou Club Libraryという描画ライブラリのDebianパッケージ化 についてお話いただきました。
Dennou Club Libraryは地球流体電脳倶楽部 が作成、保守してきた大気海洋科学研究者に用いられる可視化のためのライブラリで、欠損値処理や地図投影などの機能があり、世界各地の大気海洋科学の研究者に用いられており、ソースコードはすべて公開され「無責任無保証の元で改変と再配布は自由に行なえる状況」にあるそうです。
しかし、長年の蓄積と当時の牧歌的状況からライセンスがあまり明確ではない状況だそうです。佐々木さんも参加している、地球流体電脳倶楽部は地球惑星科学、天文学における流体を研究している全国各地の有志、ボランティアによる草の根集団だそうです。
またこの団体には「研究教育のための情報は無料でなければならない。少なくとも税金で運営されている国立大学、国立研究所が提供する情報は無料であるべきである。また、その情報の出所が明らかでなければならない。さらに、その情報の再配布が可能であることが望ましい」等のポリシーがあり、Debianを好んで使用されているとのことです。佐々木さんの「科学であるならば、結果について再現ができなければならない。そのために必要なデータや手順は公開されていているべきである」というのは、研究者として誠実であると感じられました。
現状Dennou Club Libraryは野良Debianパッケージとして公開されているそうですが、「 ライセンスに問題ないならいっそOfficialに入れてしまおう」と思ったのが、事の発端だそうです。Debian公式パッケージにするには、ライセンスが明確でなければなりません。元々のFAQにはライセンスについて、次のように書かれています。
はい、フリーソフトウェアです。著作権はGNU Public License[1] に準拠しております。因みにパッケージ内のCREDITSには版権を以下のように定めております。
本資源の版権は地球流体電脳倶楽部に属する
資源の利用にあたっては地球流体電脳倶楽部の定める規定にしたがっていただきたい
原則として、教育的目的の場合には自由に使用・改変して良いものとしている
しかしながら、本当にGNU Public Licenseに準拠しているか確認が必要です。
長年の蓄積により開発者も多数に上るのですが、コードの大半は地球流体電脳倶楽部関係者によって開発されており、Copyright holderは1名をのぞいて連絡がつき、それを明確にする作業が進んでいきました。またその1名は海外の方で残念ながら亡くなっていたのですが、コードはPublic Domainとして宣言されていました。
これにより上記ライセンスに準拠していないコードの特定が行え、問題点も明確になりました。現在はそれら問題点について削除、置き換え等の作業中とのことです。
自作描画ツールLinkdrawの紹介/村越俊克
村越俊克さんからは、自身で開発した可視化ツールLinkdraw についてお話いただきました。
Linkdraw は無数に存在するアイテムとアイテム間の繋がりをドラッガブルかつリンカブルに描画するためのツールです。データセンターのネットワークやサーバの運用を行う上で、あらかじめネットワーク構成をトポロジとして可視化しておき、必要な運用情報をリンクしておきたい、という実際運用する上で楽をしたいところが開発の動機とのことです。
描画にはSVG、描画のためのconfigurationはJSON、描画のための座標はブラウザでのロード時にランダムに割り当てられ、ドラッグ&ドロップで位置を自由に変更でき、それを保存することもできるとのことです。
また、jQueryとD3.js を使っていると紹介しました。彼はもともとFreeBSDユーザにも関わらず、( 今回の発表のために)Debianを使い始め、ITPはされているもののまだ公式パッケージになっていないD3.js と自身のLinkdrawを、これまた初めてのDebianパッケージとして野良パッケージとして用意していました。今後、公式パッケージにしたいとのことで、Debian開発者としての将来も楽しみです。
自身で開発しているツールをより多くの人に使ってもらいたいのであれば、彼のようにDebianパッケージ化することを目指すのはとても有効な手段でしょう。
パッケージテストツール改善への取り組み/やまねひでき
やまねひできさんからDebianパッケージ用テストツールの紹介とその中の一つpiupartsに焦点を当てたパッケージテストの時間削減に関する改善 についてお話いただきました。
piupartsはパッケージのインストール、アンインストール、アップデート、アップグレードをチェックする便利なツールなのですが、結果を得るまでに時間がかかり(小さいパッケージで3分ほどかかる) 、出力される結果も単調であるためパッケージメンテナがあまり使われていないとのこと。
この対策としてSSDを利用や、大容量メモリを使ったtmpfs上での実行が考えられます。これらはプログラムを変更することもないため容易に試せるのですが、多くのDebian開発者はこのような開発環境を持つことは難しいです。そこでやまねさんは多くの開発者が恩恵を受けることができる方法を模索したそうです。
パッケージをクリーンルーム(Debian最低限システム環境)でビルドし依存関係の漏れなどを確認するpbuilder/cowbuilderのCOW(Copy On Write)に注目し、piupartsのcowbuilerサポートと、上川さんの書かれたcowbuilderの論文からunionfs(当時。今はaufs)による実装を試みました。これによってDebianのベースシステムイメージの展開と、パッケージのダウンロードインストールの処理時間短縮ができるようになり、36分ほどかかっていたあるパッケージのpiupartsを使ったテストが32分に、さらにtmpfsで実行すると30秒弱まで短縮できるようになったとのことです。
やまねさんは最終的にaufs実装をpiupartsで使えるように改造し、この話を今年開催されるDebconfで関係者に話したいとのことでした。
実装され、piupartsがより利用しやすくなると良いですね。
/etc/network/interfacesについて/西山和広
西山和広さんには、Debianのネットワーク設定ファイルである/etc/network/interfacesの詳細解説 をしていただきました。Debianを使っている方は一度は編集したことのあるファイルですが、実はその中の解説はあまり行われておらず、おまじないのように設定していた方も多いと思います。この講演は本邦初といってもいい、/etc/network/interfacesの詳細解説でした。
まずは、ファイルを先頭から順番に見ていきました。設定はスタンザ(stanza)と呼ばれるかたまりに分けることができます。stanzaは"auto"や"iface"といったもので、これらによって動作を変えることができます。
たとえば"allow-hotplug" stanzaは、udevによってインターフェースが認識されたときにupするように設定するstanzaで、認識順の関係で"auto"ではうまく上がらないインターフェースでも問題なく利用することができるようになります。
stanzaにはオプションを記述することができます。たとえば、"pre-up"や"up"などのオプションには、インターフェースが上がる前後で指定したコマンドを実行することができます。また、"iface"stanzaのaddrオプションなどでは、実際の設定項目(IPアドレス)を記述することもできます。
最後に、西山さんからは設定変更時の注意として、ifdownでネットワークをダウンさせてから/etc/network/interfacesを編集し、その後ifupをしなければならないと示しました。ifdown前に変更してしまうと、設定ファイルと実際に反映されている設定との間に齟齬が生じ、正しく動作しなくなってしまうそうです。お気をつけください。
ngraph-gtkで楽々グラフ作成/伊東宏之
Ngraph-gtkの開発者の伊東宏之さんからは、グラフ作成ソフトのNgraph-gtkの紹介とGTK+の近況 について教えていただきました。
Ngraph-gtkはDebian wheezyから公式のリポジトリーに含まれているソフトウェアで、WindowsではMS-DOS時代から開発されているNgraphをGTK+に移植したものです。Ngraph-gtkの説明では、対応している様々な形式のグラフの紹介や、任意の近似曲線へのフィッティング、さらにNgraphスクリプトを使った自動処理について紹介しました。
開発の状況としては、Ngraphとの互換性よりも、機能強化や高速化に焦点を当てられているとのことです。追加機能の紹介では、対応している数学関数の追加や、図形描画機能の強化を取り上げました。最近はプレゼン用の機能を追加したとのことで、伊東さんご自身が今回のプレゼンでNgraph-gtkを利用していました。
高速化については、特に数式変換機能において、構文木を構築することで2倍程度の高速化に成功したとのことです。将来的にはRuby等のスクリプト言語への対応も検討されているそうです。
GTK+の近況については、Ngraph-gtkを開発する上で伊東さんが遭遇した問題点について、バグ報告やその後の進展について話しました。バグについては期待通りに修正されることもあれば、考え方の違いにより修正されないこともあるとのことで、他のユーザーの意見を期待しているとのことでした。
発表の最後では、フリーソフトウェアの素晴らしさについて言及していました。
ライトニングトーク
今回も10名の発表者によってライトニングトークが行われました。
内容は最古のDebianをインストールした話からopenSUSEで利用されているOpen Build ServiceというビルドツールでDebinパッケージを作る話まで、様々なライトニングトークが行われました。
幅広い内容のライトニングトークを聞くことができるのも、Debianのイベントならではだと思います。
まとめ
今回は1日の開催で約140名の方の参加がありました。10のセッション、10のライトニングトークが行われれ盛況に終わりました。
大統一Debian勉強会は毎年1回しか行われませんが、各地(東京 、
関西 、福岡 )での勉強会は毎月(福岡は隔月)行われています。
勉強会に対する希望・意見・取り上げて欲しいテーマ等ありましたら、debian-users@lists.debian.or.jp 、または各勉強会連絡先までお願いします。
また日本でDebconfを開催するにあたり、様々な情報や協力者が必要となっています。ご興味のある方はご連絡ください。