このWikiは、OSDNの管理グループが運営しています。
OSDNを利用している開発者の方に、月ごとにインタビューを行っています。
TOMOYOは、Linuxに対する強制アクセス制御(MAC)の実装で、「使いこなせて安全」なLinuxの実現を目指すプロジェクトです。version 1.0は株式会社NTTデータにより開発され、2005年11月11日にGPLライセンスのオープンソースとして公開されました。
このプロジェクトを始める前は、約5年間事業部門で放送関係のシステム開発を行っていました。2003年の3月にR&D部門に異動となり、そこで与えられたテーマが「セキュアOS」であり、「独自にOSのセキュリティ強化を実現せよ」がオーダーでした。
「OSはとりあえずLinuxで良いが、どうやらSELinuxというものがあるらしい」というヒントはありましたが、それ以外は何もありません。今振り返ってみると、なかなか大胆なテーマ設定だと思います(笑)。
私はもともとの採用がNTTの横須賀の研究所で、入社以来、UNIX(BSD、SunOS)を触っていました。Cでプログラムを書いたり、当時活発だったJUNET(ネットニュースシステム)に自作のプログラムを投稿したこともあります。そのため、Linuxに抵抗はありませんでしたが、セキュリティやOS自体には関係していなかったので、最初はひたすら情報を調べることから始めました。調べるといっても、その頃は日本語の情報は皆無なので、外国の文献を読むしかありません。部下と一緒に片端からキーワードを検索して、検索結果を読み漁る日々が約3ヶ月くらい続きました。調べている期間はアウトプットが出ないわけで、気が焦りましたが、今振り返るとこのころ調べた内容が現在の活動の基盤になっていることを感じます。
SELinuxについては、既に公開されていたので、インストールしてみました。当時のSELinuxは現在のものと比べると、まだ簡単だったと思いますが、それでもかなりてこずったことを覚えています。プロジェクト発足からの取り組みについては、2005年11月に行ったVA Linux Kernel Conference 2005での講演、「TOMOYO Linuxへの道」で紹介しています。実はまさにこの講演の日の朝にTOMOYO LinuxのOSS公開の決裁がおりたため、発表の順番を待ちながら会場のロビーでソースのアップロードをしていました(笑)。
セキュリティの強化という観点からはLinuxユーザ全般となりますが、TOMOYO Linuxの場合、個人でも使える点が特徴であり、自宅サーバや企業の中小規模のサーバから始まり徐々に層が広がることを期待しています。
用途的には、最近、CE Linux Forumなど組み込み(Embedded)分野でのセキュリティに対する関心が高まっており、そちらが通常のサーバ系セキュアOSよりも早く始まるかもしれないと思っています。TOMOYO Linuxはもともとファイルシステムを選ばないなど組み込み用途に有利な性質を持っているのですが、BusyBoxと呼ばれるツールへの対応など組み込みユーザの要望に積極的に応えており、現在存在するセキュアLinuxの中ではもっとも組み込みに適したものとなっているはずです。
SoruceForge.jpのプロジェクト統計情報によると、今日(6月22日)現在、トータルのダウンロード数は10,040となっています。ただ、これはカーネルパッチ、ツール、バイナリパッケージなどの全てのバージョンを含んだ累計です。とりあえず導入して動かしてみた、というのを「利用」とするなら、のべ数百人程度の下のほうではないかと思います。公開して1年半でこの数値はずいぶん少ないと思われるかもしれませんが、内容の専門性を考えるとそれほど少なくはないと思います。
「セキュアOS」の起源は、情報漏洩防止にあります。それは、「ポリシーに基づきアクセスを制御する」ことにより実現され、クラッキングの抑止と被害の軽減、データの改ざん防止も可能にします。それらがセキュアOSの一般的な効能です。
ただし、「アクセスの制御」は必ずしもクラッカーの操作だけが対象となるわけではなく、管理者が誤ってコマンドを実行してもそれを拒否するということもできます。そう考えると実は大変現実的なものということが言えます。このあたりは、今後啓蒙していきたいと思っています。
TOMOYO Linuxについてはこれまで5本の論文を執筆していますが、辻井先生、石田先生などが審査員となられたNetwork Security Forum 2003に投稿したTOMOYO Linux最初の論文、「プロセス実行履歴に基づくアクセスポリシー自動生成システム」が、優秀論文賞をいただいた時は予想外の受賞に驚きました。この頃はTOMOYO Linuxという名前もありませんし、ポリシー自動学習機能も備わっていませんが、TOMOYO Linuxの心臓部は基本的にこの論文の内容から変わっていません。その後開発で行き詰まったとき、いつもこのときの受賞が心の支えになりました。受賞に感謝すると同時に賞に恥じない活動をしたいと心がけています。
その次は勿論、2005年11月11日にOSSとして公開を行った時です。プログラム自体は比較的早く整理できていたのですが、公開については企業における取り組みということで前例も少なく、ひとつひとつ課題を整理していくのに時間がかかりました。公開が実現するまでは、「いつになったら公開するのですか?」という質問を受ける度に胸がいたみましたし、開発メンバーに対しては成果を世に出してあげられないことを申し訳なく感じていました。自分としては一種の「借金」をしているような気持ちです。公開できたときは、ひとつの約束を果たしたような気がしました。
イベント以外の通常の活動ではリリースです。リリースを行うまでには大変多くの作業が必要で、それにはプログラム開発だけでなく、公開のための事務処理なども含まれます。共同作業なので連携、調整は欠かせません。複数人で行う作業は難しいですが、うまくいくと一人では得られない充実感があります。「うまく行っている」とはちょっと違うかもしれませんが、新しいバージョンをリリースするときにはとても気持ちが良く、達成感を感じます。多分メンバーも同じでしょう。リリースした後にダウンロード数が増えていたり、ユーザの喜びのコメントがあると、本当にうれしく思います。
やはり、プロジェクトの名称への反響が大きかったことです(笑)。
掲示板やblog等に名前に関する書き込みがどんどん増えるのを見て、予想外の展開に頭を抱えました。夜、自宅に帰ってから懸命にレスをつけて、睡眠不足で次の日会社に行くと、新しい書き込みや「板」ができています。一時はどうなることかと思いました。
私は、それまで2ch等あまり利用したことがなく、「祭り」になったら黙っているのが得策というようなことを知ったのは、騒ぎが一段落してからのことです。そもそも「祭り」とか「板」とか「中の人」という言葉自体も知りませんでした。自分の行ったことに対する責任を持ちたかったので、ひとつひとつの発言に身元がわかるようにして返答をつけていきました。
今でもたまに名前の由来について尋ねられることがありますが、Slashdot.jpのスレッドにそのころのやりとりが残っています(プロジェクトWikiのQ and Aにも記載してあります)。コメント175件というのは、Slashdotのこの種の記事としては異例に多いということを知ったのもあとからでした。
ひとつにはプロジェクトにおける自分のポジショニングがあります。私はTOMOYO Linuxのプロジェクトマネージャであると同時にNTTデータの社員で複数の役割を持ちます。役割が変わると、判断基準も変わります。開発者は基本的にプログラムを良くすること、公開することが目的となり、作業に集中するほどその思いは高まります。一方、会社はリソースに対するアウトプット、および計画という視点でプロジェクトを見ます。まずコストありきです。自分としては双方の言い分(視点)が理解できますが、それだけに難しい判断が必要なときもあります。時には、開発者でも会社でもない視点の課題や作業が生じることもあります。そうしたものは全て自分で対応するようにしています。
開発の内容自体についても、OSSの開発は企業が行うSIの開発とは多くの相違点があります。OSSのプロジェクトでは自主性、発想のユニークさなどが特に重要なのですが、企業によるプロジェクトのマネージメントという観点からは、機能や工程の管理が重要であって、一種相反するものがあります。それらのバランスのコントロールにはいつも配慮し、特に担当者のモチベーションを下げないよう注意しています。
まだ「広く認知される」というには至っていないと思いますが……。プロジェクトに名前がなく、全く無名の頃から、ひとつひとつの作業に心を配り、自分達のできる最良の仕事をすることを心がけてきました。「オープンソースだから、無料だから」という考えや妥協はありません。開発、講演会、イベント対応、サポートなど、あらゆる活動に自分達のできるベストを尽くしてきたことを誇りに思っています。
たとえば、これまで行った全ての講演会ではその全てについて、講演資料の他に当日配布資料を作成し、SourceForge.jpのプロジェクトホームから参照、ダウンロードできるようにしています。これは講演を聞き興味を持っていただいた方が情報を調べる際の作業を軽減することを目的としています。また、これまで他で話したことはありませんが、講演の本番で使用する講演資料は、一般公開するバージョンとちょっとだけ違った内容になっています。わざわざ足を運んでくださった方へのサービスであり、イースターエッグのような一種の遊び心です。高いレベルを維持しながらもユーモアを忘れたくないというのは、私のポリシーです。
オープンソースをダウンロード、インストールして使うのは簡単です。それを自分で改造するのも難しくはありません。改造した結果をホームページにおいて、メーリングリスト等でアナウンスすれば「公開」もできます。ただ、自分が開発した成果を多くの人に使ってもらうのは容易ではありません。もとのソースに反映してもらおうとすると、それはさらに困難です。
TOMOYO Linuxは、Linuxのカーネルと呼ばれる膨大なプログラムの改造として実装されており、自分達の開発成果をLinuxカーネル自身の中に反映することは「メインライン化」と呼ばれます。TOMOYO Linuxのプロジェクトでは、現在これに取り組もうとしています。メインライン化を行うことにより、作業成果はLinuxの中で生き続け、そのとき初めてプロジェクトとしてのLinuxへの貢献が実現されます。オープンソースは無料で使えるという認識が高いですが、全員が使う(take)するだけでは続きません。個人的には、give&takeの"give"は目的というよりも義務ではないかと思っています。
話がそれましたが、メインライン化は具体的には、LKML (Linux Kernel Mailing List)と呼ばれるLinux開発者のメーリングリストにパッチを投稿することにより行います。先週(6月13日)それを実行したところです。投稿した内容はプロジェクトのニュースの記事で参照できます。さらに、来週(6月27日)オタワで開催されるOttawa Linux Symposiumと呼ばれるLinux開発者の国際会議で、TOMOYO Linuxに関する発表を行うことになっています。TOMOYO Linuxの世界デビューです。メインライン化を目指すにいたった経緯と考えについては、先日ThinkITに寄稿した記事で詳しく紹介しているので、是非ご覧いただければと思います。
技術以外の目標は、TOMOYO Linuxの取り組みを、何らかの形でそれを世に送り出したNTTデータに還元したいということです。Linuxに代表されるオープンソースは日々さまざまなところで利用されています。オープンソースの発展に貢献した企業は、そのことによって評価されるべきです。適切な対価を受け取ることによりオープンソースも企業も、また利用者も幸せになります。メインライン化とは違った意味で難しい課題ですが、是非実現したいと思います。TOMOYO Linuxを使ってビジネスを始めたいという方があれば、いつでも連絡をお待ちしています。
比較的多かった要望は、GUI管理ツールの提供でしたが、こちらは6月18日に実現しています。
それ以外では、やはりメインライン化です。ユーザから見たときのメインライン化の意義は、色々ありますが、一番重要なのは、NTTデータがプロジェクトを終了してもTOMOYO Linuxが進化し続けることです。
TOMOYO Linux GUI
(→原寸で表示)
TOMOYO Linuxのプロジェクトでは、オープンソースの開発ということで、ソースコードだけでなく、可能な限りあらゆるものをオープンにしようということを最初から考えていました。講演の資料、論文、メーリングリストアーカイブ等ほぼ全ての情報をSourceForge.jpで参照することができます。また、過去の資料、例えば前述のLinux Kernel Conferenceで行った講演の資料「TOMOYO Linuxへの道」をお読みいただくと、プロジェクトとしての姿勢や考え方が、今と微塵も変わっていないことがご理解いただけると思います。それぞれの資料は全てイベントのためだけでなく、事後の参照を意識して(未来の読者に向けて)作成しています。
セキュアOSという言葉はかなり定着してきましたが、個人ベースでなく、プロジェクトとして取り組んでいるのは、国内ではTOMOYO Linuxくらいではないかと思います。それを企業活動として行っているという点はNTTデータの取り組みとして強調したいところです。
特に優秀なプログラマでも熟練したプロジェクトマネージャでもない自分がここまでこられたのは、優秀なメンバーに支えられ、そのメンバーを信じることができたからです。メンバーを信じられたこと、プロジェクトに対する自分のコミットと想いは誇りに思っています。
OSSとして公開した直後であれば、名前の変更ですが(笑)、今となっては、名前を変えるつもりはありません。とても良い名前で気にいっています。
プロジェクトの変更ではありませんが、できればプロジェクトマネージャとしてではなく、担当者(開発者)としてこのプロジェクトに関わってみたかった気持ちは正直言って少しあります。
プロジェクトの運営では、メールおよびSourceForge.jpで提供されているメーリングリスト、フォーラムなどの機能を活用しています。打ち合わせは各人の時間を拘束し作業の効率を下げるので、私はこのプロジェクトに限らず打ち合わせの回数は減らすようにしています。コミュニケーションツールと、挨拶を含めた日常のコミュニケーションから各人の作業状況を把握し、必要が生じたら打ち合わせを招集するというのがこのプロジェクトのスタイルです。定例の進捗はなく、打ち合わせを行わない週も珍しくありませんが、本当に必要と判断した時は作業の状況に関係なく何回でも何時間でも議論します。
多分私のことをTOMOYO Linuxの専任と思われている方が多いと思いますが、実際にはそうではありません。専業に近い状態になったのは2007年の4月からで、それまでは管理職としての業務と複数の開発プロジェクトを担当していました。最初の頃は、毎日のように半田さん(TOMOYO Linux初版の開発者、プロジェクトでのハンドル名は「熊猫」)と議論している時間があったのですが、途中から私のほうが急激に忙しくなったため、現在は空き時間ができたらメールで議論するという感じです。執筆など一定時間集中して作業が必要なものは、もっぱら自宅で作業しています。
特に「何時間」ということではなく、「使える時間」があれば、プロジェクトに関する作業をしていることが多いです。例えば、Wiki、LXR(ソースコード閲覧用CGI)の導入は私が行いましたし、Webコンテンツの整理などはそれこそ毎日見直しています。また、"TOMOYO Linux"に関する言及は定常的にモニターして、質問等に回答し、誤解があれば解くようにしています。直接開発を行わない自分としては、そうした部分でプロジェクトに参加するのは業務というよりは一種の趣味といったほうが近いかもしれません。
会社からはネットワークアクセスに制限があるので、メインの作業は自宅でWindows XPの端末から行います。Cygwin(Windows上でLinuxに近い環境を提供するツール)上にSubversionやSSH等の環境を構築して作業しています。このあたりのノウハウはいつか機会があれば紹介したいと思っています。
プロジェクトの活動履歴や細かなバージョン・ヒストリーははてなキーワード やプロジェクトニュースで見られます。
私は、はてなで日記を書いており、TOMOYO Linuxという名前が決まったときに何気なくキーワードとして登録してみたのですが、何故かそれが検索結果で上位にヒットするようになりました。検索された方に適切な情報を提供したいと思い情報をアップデートする作業を続けているうちにいつのまにか現在のようになりました。はてなのキーワードは一種のWikiなので、こうした使い方をして良いか最初は遠慮していましたが、最近は一人称で書くようになりました(笑)。書かれている内容は、文字どおりTOMOYO Linuxプロジェクトのあゆみを表しています。時間ができたらデザインを含め見直したいと思っているのですが、なかなか実現しません。
プロジェクトのWikiで開発協力者を募集しています。
今日(2007年6月22日)現在14名がTOMOYOプロジェクトの開発者として登録されています。開発に「協力」してもらえる状態を実現するのは、実はなかなか難しいのですが、バイナリパッケージの作成等は既に手伝っていただいていますし、ELCやOLSでの発表用にポスターを作成して送付いただいたりもしています。本当にありがたいことです。
OSSのプロジェクトマネージャを務めて、「使われること」が最大の貢献であることを学びました。SourceForge.jpの機能についてもそれを使うことが貢献だと思っています。なので、感謝の意味も込めて提供されている機能はできるだけ使うようにしています。ブラウザの言語設定によりコンテンツの表示言語を切り替えたりする機能もその例です。それにしても、これほどの環境が無償で利用でき、運用されているということには、驚きと感謝の念が絶えません。Subversionの機能は待望していたので、リリースされたときにはとてもうれしかったですね。
ぜいたくを言わせていただけば、プロジェクトマネージャとしてはWebサーバへのアクセスログは是非欲しいところです。それ以外は特に不便等感じていません。
(取材日:2007年6月22日)
今月のプロジェクトに戻る
[PageInfo]
LastUpdate: 2007-08-06 17:16:26, ModifiedBy: morihide
[License]
GNU Free Documentation License
[Permissions]
view:all, edit:members, delete/config:members