Comments
Description
Transcript
小江戸らぐ活動報告集 - 小江戸Linuxユーザーズグループ
小江戸らぐ活動報告集 2011年冬号 目次 1. 上野でオープンソース翻訳カフェをはじめたよ 2 2. Porteus の紹介と日本語翻訳 6 3. Reudy1.9 で Twitter 人工無脳 22 4. Linux で写真を操作 32 5. クラウドブック DynabookAZ に Armed Linux をインストールしてみた 6. Slackware で省電力 PC に変身させてみた 40 48 7. さくらの VPS を利用して、 みんなで三代目サーバを構築してみた 1 52 上野でオープンソース翻訳カフェをはじめたよ おがさわらなるひこ [email protected] / twitter: naru0ga はじめに どうもこんにちは。おがさわらというケチな野郎でございます。 普段遣いはすっかり Linux (私は Ubuntu) なんですけど、いやここ数年でどんどん良くなっ てますよね。デスクトップマシンとして個人的には全然不満はないといっていいと思います。 ただ、じゃあホイホイ人に薦められるかというと、ちょっと難しいのが日本語ですね。ソフトの 日本語化のカバー率はすごい頑張ってると思います(私自身が使う分にはぜんぜん困らない レベル)が、100% じゃないと気にする人もいるというのもまた事実。またオンラインヘルプだと か、Web 上のドキュメントのマニュアルであるとか、そういう方は圧倒的に手が足りてないのも また事実です。ニュースレターの類だって英語だと大量に良質なものが発行されているのに、 日本語で読めるものは量・質ともに少ないというのが正直なところ。 「技術者たるもの英語ぐらい読めて当然」とかいってたら、Linux は技術者の玩具かってこ とになってしまうわけで、そーゆー世界は私としては断固としてイヤだといいたいです。つーか 実際、Linux ディストリビューションは技術者じゃなくても使えるようになってきているので、皆 さんそんな20世紀のイメージでモノをいわないですよね、ねっ? オープンソースを翻訳しよう! ところでオープンソースというのは「自分で状況を変えることができる」のが嬉しいところの 一つですよね。そう思いませんか? バグがあったら報告すれば直るかもしれない。自分で直 し方が分かる人は直しちゃえばいいかもしれない。翻訳は? ……そう、翻訳だって自分でで きることなんですよね。 だから、もりもり翻訳してくれる人が増えると日本のユーザーも増えるし、そうするとコミュニ ティのなかでの日本の位置づけもあがるし、ユーザー同士交流できるし、いろいろ幸せじゃな いですか。大げさにいっちゃえば「自分で世界を変えられる」ってのがオープンソースなわけで すが、翻訳もまた、そういう活動なわけです。 「とはいっても英語あんまり得意じゃないしなー」とか「自分は英語であんまり困ってないで すし」とか「そもそもオープンソースの翻訳ってどういう風にやられてるかわかんないから、なに から手をつけていいんだかよくわかんない」とかいろんなご意見はあるかと思うんですが、今 回は三つ目の「どこから手をつけていいんだか……」な人が参加するきっかけをつくれればい いな、というイベントとして、「翻訳カフェ」というのをはじめてみたのでその紹介です。 2 翻訳カフェって? 定義された用語なのかはわかんないんですが、ハックカフェとかいって「みんなで週1ぐらい でなんとなく集まって、それぞれで作業してちょっと意見交換とかもする」ってイベントがある みたいなんですね。 んで、そういうのがあればいいんじゃないかなー、上野とかならぼくが立ちあげてもいいけ どー、って 2011 年秋の OSC Tokyo の翻訳 BoF で話をして、そのあとついったでへろへろ書い てたら、おかのさんがサイトを作ってくれましたよ。 http://translatecafe.org/ こちらでホストされているイベントとしては「上野」「名古屋」「なんば」の三つがあるんです けど、私が関わっているのは上野なので、そこについてちょっと説明します。 上野翻訳カフェ 私は openSUSE というディストリビューション向けの openSUSE Weekly News (OWN): http://ja.opensuse.org/OpenSUSE_Weekly_News というものの翻訳をやってるんですが、家にいると気づいたらサボってしまったり家族が見て いる見たくもないテレビに気を取られたりしてダメなので、近くの喫茶店で作業をすることが多 いのです。 なので、ウチの近くじゃなくてちょっと都内の方に出れば、人が集まって色々相談とかしなが ら翻訳できるんじゃないかなーというのが元々の動機です。 上野翻訳カフェのページは: http://translatecafe.org/wiki/wiki.cgi?page=EastanTokyo なわけですが、そこから趣旨説明を引用します。 東京東部 (主に上野) で オープンソース系翻訳 カフェをやりましょう。 翻訳 カフェというのはコーヒーショップなどで各々翻訳したいものを持ち寄り、もくもくと翻 訳をするものです。 翻訳ネタがないけど興味はあるとか、作業を見てみたいとかいう人も歓迎です。お気軽にど うぞ。 ご希望とあらば「試しにこのプロジェクトやってみません?」みたいなネタを振ることもあるか も?? 3 もちろんせっかく同じ場所でやるので、情報交換や悩み事の相談なども (周りの迷惑になら ない程度に) やりましょう。 という会でございます。 動機にも書きましたが、一人だとサボっちゃうので誰か一緒にやりませんかー、というイベン トなので、基本的には喫茶店にパソコンなりなんなり持ち寄って会社帰りとかにふらっと寄って やっていただくようなものを想定してます。 「うーん翻訳って興味あるけど、何をやればいいかしら……」という方、よろしければいくつ かお手伝いをお願いしたり、翻訳プロジェクトを紹介したりしますので、ぜひぜひふらりと寄っ てくださいませ。前述の Web ページでも書いていますが、 毎週月曜日 20:00〜21:001 場所:Cafe ルノアール上野公園前店 (http://www.ginza-renoir.co.jp/caferenoir/061.htm) Twitter ハッシュタグ: #translatecafetk でやっております。場所は変わるかもしれないので、もし初参加の時にはハッシュタグをつけて つぶやいてくれたほうが確実です。 上野翻訳カフェ FAQ 上野翻訳カフェにちょっと興味をお持ちいただいた方からお寄せいただいた質問にお答え します2。 質問 1.参加費とか必要ですか? お金を徴収することはないです。ただ会場が喫茶店なので飲み物代などは各自払っていた だく必要はあります。 質問 2.何か用意していくものはありますか? 基本的には一人一人が翻訳する場なので、個人で必要なものを持ってきてください。今の ところ会場にしている Cafe ルノアール上野公園前店の場合、電源は壁際から取れます。また 地下ですが各種携帯は入るようです (WiMAX や Xi は無理?)。BB Mobile が利用できるの で契約していると色々便利かもしれません。 質問 3.参加申請とかはどこでするの? 特に必要ないです。強いていえば Twitter で #translatecafetk つけてつぶやいてくれれば。 1 コアタイム。必ずしもこの時間にいることは必須ではありません。 2 なお、質問は捏造です :-P 4 質問 4. 月曜日/上野は都合が悪いんだけど…… 別に翻訳カフェが複数あって悪いというルールはないので、ご自身の都合がよい曜日/場 所で開催してくれるといいなーと思います :) イヤ冗談抜きでいろんなカフェが立ち上がってくれればいいなって思いますし、私も時間が あえばお邪魔したいなーなんて考えてますのでヨロシク! 質問 5. オンラインで参加できますか? IRC とか ust とか。 オフラインで集って作業効率を上げましょうという趣旨ですから、オンラインとのやりとりで 作業効率を下げるようなことは考えてません。ust なら流しっぱなしでいけるじゃんって話もあり ますが、ust 映えしない素材なので…… 終わりに オープンソースの翻訳ってなんだか敷居が高いのか、なかなか新しい人が増えないって声 があるんですけど、とりあえず気軽に集まれる場所があればなにか起きるかなーという実験と いうかそんなことを思ってます。ぜひぜひお立ち寄りをお待ちしてます! 5 Porteus の紹介と日本語翻訳 おかの [email protected] (@okano_t) はじめに 小江戸らぐでは、イベント (コミケや OSC) で Slax-ja のライブ CD を配布してきました。 Slax-ja は、Slackware ベースのライブ CD ディストリビューションである Slax を、小江戸らぐ 主宰のはとちゃんが日本語化したものです。 はとちゃんは Hiyoco というディストリビューションの自作を目指しており、その模索のため に既存のディストリビューションをいじったりしており、Slax の日本語化もその取り組みの一環 のようです。 Slax は 2009 年リリースの 6.1.2 以来、新バージョンがリリースされておらず、Slax-ja も 6.1.2 ベースのままでした。これに業を煮やしたはとちゃんが別のオモチャを探した結果、2011 年の夏コミでは Porteus というディストリビューションを日本語化した Porteus-ja 1.0 というラ イブ CD を作成・配布することになりました。はとちゃんが別のオモチャに目覚めなければ、こ れからもしばらくは Porteus-ja を配布することになると思うので、思いつくままに記してみます。 Porteus 概要 Slax からの派生ディストリビューション まずは Slax について簡単に説明します。 Slax 公式 web サイトのドキュメンテーション1によれば、Slax6 の特徴として、以下の 4 点が 挙げられています。ひとことでいえば、小っちゃいってことは便利だねっ、ということです。 • 小容量: 改良された圧縮ファイルシステムにより、本体、モジュールとも極小サイズ で、8cm の CD に収まる。 • 可搬性: AUFS (UnionFS の後継) により、ライブ CD でもいじくりまくれる • 多機能: デスクトップに KDE を採用し、便利なアプリケーションがいろいろ入ってい • る 多言語対応: 公式リリースは 28 言語に対応している 多言語対応といいつつ日本語には対応していないので、オリジナルの方向性を維持しつ 1 Slax: documentation key features http://www.slax.org/documentation_key_features.php 6 つ日本語対応させたのが Slax-ja です。ただし、8cm CD には収まらないサイズになっていま す。 Porteus 1.0 の誕生 Porteus は fanthom 氏らによる Porteus チームが Slax を派生させたディストリビューション です。 当初は Slax remix という名前で、派生ディストリビューションといったものではなく、Slax の カスタマイズ版でした。新しいデバイスを使いたい、あるいは Zen Kernel を使いたい人向けと して、Zen Kernel をメインに、いくつかのソフトウェアの更新などがおこなわれました2。なお、 Zen Kernel は、本家 Linux カーネルに入っていないドライバ等を組み込んだデスクトップ指向 のカーネルです。坐禅を組んだ Tux のロゴが使われています。名称の由来は見つけられませ んでしたので、ご存知の方は教えてください。 その後の Slax remix にはさまざまな変更が加えられましたが、本家 Slax の新バージョンが 一向に出ないこともあったりして、改名して独自のディストリビューションとして、2011 年 6 月 にバージョン 1.0 がリリースされました3。 Porteus という名称は、Portablility と Proteus の合成語です4。 Portability (可搬性) は、そのまんま「小っちゃいって事は便利だねっ」ということです。ただ し、Slax は 8cm サイズの CD に収まることをウリにしていましたが、Porteus では 300MB ほど にまでなっています。 Proteus (プロテウス) はギリシャ神話の海神で、自分の姿を好きなように変える能力を持っ ています。モジュール化によりカスタマイズが容易であるという、Porteus の「柔軟性」をあらわ しているとしています。 64 ビット版と 32 ビット版が用意されています。カーネルは 2.6.38.8、ユーザーランドは Slackware 13.37 ベースです。デスクトップ環境は KDE 系と LXDE が選べます。KDE 系デス クトップは、64 ビット版が KDE 4.6.4、32 ビット版は Trinity 3.5.12 (Trinity は KDE3 系から派 生したデスクトップ環境) と異なっています。これは、KDE4 は古いマシンにとっては重すぎる という判断によるものであり、今後も 32 ビット版を KDE4 に移行する予定はないようです。 基本的な方向性は Slax と同様なので、Slax 利用者で新しいデバイスやソフトウェアを使い たいという人にもオススメのようです。なお、モジュールの形式が Slax とは変わっており、この あたりの互換性はありません。 2 3 4 [Slax-Remix] v01/2.6.32-zen4 ready to download! http://www.slax.org/forum.php? action=view&parentID=54463 Porteus v1.0 announcement (2011/6/20) http://porteus.org/forum/viewtopic.php?t=613&p=4664 'Porteus' as a new name for 'Slax-Remix' project! (2011/01/05) https://porteus.org/forum/viewtopic.php?f=35&t=117 7 Porteus-ja とは Porteus の 32 ビット版をベースに日本語化したものです。具体的には、かな漢字変換、フォ ント、日本語翻訳、壁紙の追加などをおこなっています。「IPA フォントを 8 ポイントにすると、 ビットマップがきれいに表示される」というあたりにこだわりがあるのだそうです。 2011 年の 8 月例会 (夏コミ 1 週間前) で、はとちゃんから「今試してるけど、まだ動いてな い」という報告があり、その後なんとか動いたので、サークル参加の前日夜から当日朝にかけ て、はとちゃんが泣きながら CD-R を焼いてレーベルを印刷したというシロモノです。 ということで、売り子は詳細を知らないままコミケ本番に臨んだというアレなことになったりし ました。どのぐらいアレかというと、「今回の付録は新しいディストロですよー」などと言って 売っていたものの、「Porteus」の読み方すら知らなかったというぐらいです。はとちゃんによれ ば「ポルテウス」とのことですが、Google 様にお伺いを立てると、別の説もあるようです。 Porteus の今後の予定 Porteus プロジェクトでは、Porteus 1.1 とその後に向けたロードマップを提示しています5。こ れによると、半年ごとのリリースを計画しており、2 回に 1 回は Slackware のリリースに合わせ た追従をおこなった整数番号のリリース (1.0, 2.0, ...)、残りは小数番号のリリース (1.1, 2.1, ...) です。 1.1 のスケジュールスケジュールは、10 月中旬に RC1(カーネル 3.1.0)、11 月中旬に RC2、12 月 6 日に 1.1 リリースという計画となっていました。これに対して 10 月 12 日に RC1、11 月 22 日に RC2 がリリースされましたが、これを書いている 12 月 16 日午前 0 時 (JST)段階では 1.1 はリリースされていません。 Linux カーネル 3.1.x の採用など、1.0 からの変更点の一覧がフォーラムに掲載されていま 6 す 。なお、64 ビット版では KDE の更新がおこなわれており、1.1RC2 では KDE 4.7.3 (11 月 2 日リリース) が採用され、1.1 本番では KDE 4.7.4 (12 月 7 日リリース) が採用される見込みと なっています。一方、32 ビット版では、(Trinity 3.5.13 が 11 月 1 日にリリースされていますが)、 Porteus 1.1 で Trinity の更新をする計画はないようです。 Porteus-ja の今後は? Porteus 本体は半年ごとのリリースを計画しているので、うまくいけば、コミケ開催ごとに新 版を作れるかもしれません。 Porteus 本体の動向が不明ですし、はとちゃんの気分と余裕にもよりますが、Porteus 1.1 が 年内にリリースされれば、これを日本語化した Porteus-ja 1.1 を冬コミまでに作れるかもしれま 5 6 Porteus-1.1 release schedule (2011/9/5) http://porteus.org/forum/viewtopic.php?f=35&t=782 Real time changelog for upcoming Porteus-1.1 release http://forum.porteus.org/viewtopic.php?f=44&t=747 8 せん。間に合わなければ Porteus-ja 1.0 を配ることになるでしょう。 「日本語化の成果を Porteus 本体にマージしないの?」という疑問があるかもしれません。こ れもはとちゃん次第でしょう。上流へのマージにはかなりの労力がかかりますし、マージ後も保 守を続けなければなりません。はとちゃんは Hiyoco への模索を続けているところなので、 Hiyoco を Porteus ベースで作ると決断すれば別ですが、そうでなければ労力をかけてまで マージする気にはならないかもしれません。 Porteus-ja の翻訳状況 デスクトップ環境では、ふつーに日本語の表示や入力ができます。 ……が、一部メッセージは英語のままです。 これは KDE 翻訳プロジェクトが怠けたわけではありません。Porteus の KDE 系デスクトッ プ環境は KDE そのものではなく、派生品の Trinity であり、Trinity 独自のメッセージが翻訳 されていないため、それらは英語で表示されているのです。また、Porteus 独自のメッセージも 翻訳されておらず、英語の表示となっています。 9 Trinity について Trinity は KDE3.5 から派生したデスクトップ環境です。 http://www.trinitydesktop.org/ リポジトリーは KDE の SVN リポジトリーにありましたが、11 月 に (3.5.13 のリリースを機 に) 独立した git に移行しました。 http://websvn.kde.org/branches/trinity/ http://git.trinitydesktop.org/ Trinity の web サイトには、Help Wanted! (手助け求む) The Trinity team is currently looking for help in the following areas: (Trinity チームでは現在、以下の分野で手伝ってくれ る方を探しています)として、「Language translation/support」(言語対応と翻訳) と書いてありま す。しかし、翻訳プロジェクトのようなものはなさげです。 配布物では KDE 3.5.10 の翻訳メッセージをそのまま使っています。というか、SVN のソー スリポジトリーには KDE 3.5.10 の配布物 tarball がそのまま突っ込まれていました。git リポジ トリーでは展開された個々のファイル単位に改められていますが、内容は KDE 3.5.10 のまま です。 http://websvn.kde.org/branches/trinity/3.5.13_frozen/kde-i18n/ http://git.trinitydesktop.org/cgit/tde-i18n/tree/ 一方、Trinity のメッセージ原文は「KDE」を「Trinity」に変更するなど、KDE 3.5.10 とは異 なっています。これらは翻訳されていないので、原文のまま表示されるというわけです7。 で、これを小江戸のみんなでなんとかしなイカ? というわけですよ。イベントで CD を配ると きに、「うちのスケベオヤジが一人で作りました」というよりも、「小江戸らぐのメンバーみんなで 作りました」といったほうが、それっぽいじゃないですか。 メッセージの修正方法 「翻訳ってどうやるの?」という向きのために、Porteus-ja 1.0 (Trinity 3.5.12) の現物をもとに 簡単に説明してみます。 KDE3 といえば Konqueror、Konqueror といえば KDE3、というわけで、Konqueror を例にと ります。まずは、すでに翻訳されているメッセージに手を加えてみましょう。 KDE3 系の Konqueror を日本語環境で起動すると、「デスクトップを征服せよ!」というメッ セージが表示されます。これは "Conquer your Desktop!" の日本語訳です。この日本語メッ セージを書き換えてみます。 7 一般的な話として、ソフトウェアが更新されるとメッセージも更新されるため、同様の問題が発生しま す。新規に翻訳するより、原文の更新に合わせて翻訳を更新する作業のほうが大変なこともしばしば です。 10 メッセージカタログのバイナリー (MO ファイル) は /usr/share/locale/ja/LC_MESSAGES/ 以 下に置かれていて、Trinity はこれをもとに日本語メッセージを表示しています。たとえば Konqueror 用のメッセージカタログは konqueror.mo です。 ここでは、既存の日本語訳を書き 変えてみます。 MO ファイルは人間が読めなさげなバイナリーなので、msgunfmt(1) で、人間が読める形式 (PO ファイル) にします。 % msgunfmt /usr/share/locale/ja/LC_MESSAGES/konqueror.mo mo \ -o konqueror.po PO ファイルの内容はこんなかんじで、原文と日本語訳のセットがたくさん並んでいます。 msgid "Conquer your Desktop!" msgstr "デスクトップを征服せよ!" このファイルを適当に書き換えてやります。 msgid "Conquer your Desktop!" msgstr "デスクトップを侵略するでゲソ!" あとは、msgfmt(1) で MO ファイルを作って、元あった場所にインストールします。 # msgfmt konqueror.po \ -o /usr/share/locale/ja/LC_MESSAGES/konqueror.mo 11 Konqueror を起動しなおすと、PO ファイルを修正したとおり、メッセージが変わります。 MO ファイルを全部書き換えれば、イカっぽい Porteus のできあがりです。なお、Porteus-ja 1.0 に標準で入っている gettext の日本語メッセージは 112,714 個です。 実際にやらなきゃいけないこと Konqueror の例では、既存の翻訳メッセージを書き換えただけなので、このような方法でよ いですが、Trinity 翻訳をまじめにやろうとすると、この方法は使えません。 コメントや未訳メッセージなどは MO ファイルでは失われているので、まじめに Trinity 翻 訳をなんとかしようとすると、メッセージカタログの雛型 (POT ファイル) を作成して作業する 必要があります。 ここでは、Trinity アプリケーションの「ヘルプ」メニューから「About Trinity」(Trinity につい て) を選んだときに現れるウィンドウを例にとります。 12 さきほど説明したような事情により、英語の表示となっている部分があります。というか、ほ とんど英語になってしまっており、実質的に「バグや要望を報告」のタブしか日本語になってい ません。 KDE 3.5.10 では、このウィンドウのメッセージはすべて翻訳されていました。 この「KDE について」タブ内ののメッセージについて、KDE 3.5.10 のソースの該当部分を 見てみましょう。 13 KDE 3.5.10 のソース : kdelibs-3.5.10/kdelibs/kdeui/kaboutkde.cpp const QString text1 = i18n("" "The <b>K Desktop Environment</b> is written and maintained by the " "KDE Team, a world-wide network of software engineers committed to " "<a href=\"http://www.gnu.org/philosophy/free-sw.html\">Free Software</a> development.<br><br>" "No single group, company or organization controls the KDE source " "code. Everyone is welcome to contribute to KDE.<br><br>" "Visit <A HREF=\"http://www.kde.org/\">http://www.kde.org</A> for " "more information on the KDE project. "); i18n() の引数がメッセージの原文です。これに対応するメッセージカタログは以下のように なっています。このメッセージカタログにもとづいて i18n() が原文に対応する日本語メッセー ジを返すので、日本語メッセージを表示することができます。 KDE 3.5.10 のメッセージカタログ : kde-i18n-ja-3.5.10/messages/kdelibs/kdelibs.po #: kdeui/kaboutkde.cpp:34 msgid "" "The <b>K Desktop Environment</b> is written and maintained by the KDE Team, a " "world-wide network of software engineers committed to <a " "href=\"http://www.gnu.org/philosophy/free-sw.html\">Free Software</a> " "development." "<br>" "<br>No single group, company or organization controls the KDE source code. " "Everyone is welcome to contribute to KDE." "<br>" "<br>Visit <A HREF=\"http://www.kde.org/\">http://www.kde.org</A> " "for more information on the KDE project. " msgstr "" "「K デスクトップ環境」は KDE チームによって開発され、保守されています。世界中のソ フトウェア開発者のネットワークが<a " "href=\"http://www.gnu.org/philosophy/free-sw.html\">フリーソフトウェア </a>の開発に参加しています。" "<br>" "<br>KDE のソースコードは特定のグループや企業、組織がコントロールしているのではあり ません。どなたでも自由に KDE の開発に参加してい ただけます。" "<br>" "<br>KDE プロジェクトの詳細については <A HREF=\"http://www.kde.org/\">http://www.kde.org</A> " "をご覧ください。" 一方、Trinity 3.5.12 では以下のようになっています。基本的に KDE 3.5.10 と同じですが、 メッセージの原文 (i18n() の引数) が異なっています。 14 Trinity 3.5.12 のソース : kdelibs/kdeui/kaboutkde.cpp const TQString text1 = i18n("" "The <b>Trinity Desktop Environment</b> is a fork of the " "K Desktop Environment version 3.5, which was originally written by the KDE Team, " "a world-wide network of software engineers committed to <a " "href=\"http://www.gnu.org/philosophy/free-sw.html\">Free Software</a> " "development.<br><br>No single group, company or organization controls the " "Trinity source code. Everyone is welcome to contribute to Trinity.<br><br>Visit <A " "HREF=\"http://trinity.pearsoncomputing.net/\">http://trinity.pears oncomputing.net</A> for more information " "about Trinity, and <A HREF=\"http://www.kde.org/\">http://www.kde.org</A> " "for more information on the KDE project. "); しかし、Trinity 3.5.12 のメッセージカタログは KDE 3.5.10 のままなので、このようにメッ セージの原文が変わると、(そのメッセージに対応する日本語メッセージがないので) 表示が 原文になってしまうというわけです。 文中の「KDE」を「Trinity」に置き換えただけのメッセージもけっこうありますが、この例のよ うに「KDE」のままの部分などもあるので、機械的に s/KDE/Trinity/g と置換すればいいという わけでもありません。 具体的な手順 KDE のような gettext を使って国際化されているソフトウェアでは、通常は PO ファイルの 雛形 (PO の Template ということで、POT ファイルといいます) が用意されており、それを使っ てすぐに翻訳を始めることができます。POT ファイルの内容は PO ファイルと同様の形式をし ていますが、以下のように訳文が空になっており、原文だけが並んでいます。空になっている部 分に訳文を入れれば PO ファイルになるという寸法です。 msgid "Conquer your Desktop!" msgstr "" しかし Trinity では、翻訳プロジェクトが存在しないこともあってか、POT ファイルが用意さ れていません。ソースツリーからメッセージを抽出して POT ファイルを作成するところから始め る必要があります。xgettext というコマンドを使ってメッセージを抽出することができ、通常は make 一発で POT ファイルが作れるようになっています。 Trinity は GNU Autotools を使っており、configure を通さないと Makefile が作れません。 作りたいのは POT ファイルだけなのですが、ファイルを読み解くのも面倒そうなので 15 configure を通してみることにします (Trinity の構築に必要なライブラリー等を全部入れること になります)。 Trinity のソースからの構築方法は、以下のページにあります。 http://www.trinitydesktop.org/wiki/bin/view/Developers/HowToBuild Trinity 3.5.12 の配布物 kdelibs-3-5-12.tar.gz を取ってきて展開します。configure したのち に、admin ディレクトリーにある cvs.sh を実行すれば POT ファイルができます。 以下、Ubuntu 11.04 での作業例ですが、これで合っているのかは激しく謎なので詳しいか た教えてください。 # apt-get install automake libtool kdelibs4c2a libx11-dev $ tar xvzf kdelibs-3.5.12.tar.gz $ cd kdelibs $ cp -pR /usr/share/libtool/config/ltmain.sh admin/ltmain.sh $ cp -pR /usr/share/aclocal/libtool.m4 admin/libtool.m4.in $ make -f admin/Makefile.common $ ./configure --prefix=/opt/kde3 \ --includedir=/opt/kde3/include/kde \ --mandir=/opt/kde3/share/man \ --infodir=/opt/kde3/share/info \ --with-extra-libs=/opt/kde3/lib \ --sysconfdir=/etc \ --localstatedir=/var \ --libexecdir="\${prefix}/lib/kdebase-kde3" \ --disable-rpath \ --with-xinerama \ --enable-closure \ --without-arts $ mkdir po $ sh admin/cvs.sh package-messages 上記ページの説明どおりに configure すると、aRts を要求されますが、すでに Ubuntu の パッケージはないので、--without-arts を追加しました。つーか、ここは Trinity で作業するのが ヨサゲ? これで kdelibs.pot ができあがりますので、KDE 3.5.10 の日本語メッセージカタログ kdelibs.po とマージします。 % msgmerge kdelibs.po kdelibs.pot -o trinitiy-kdelibs.po マージされたメッセージカタログを適当に編集します。 #: kdeui/kaboutkde.cpp:34 msgid "" "The <b>Trinity Desktop Environment</b> is a fork of the K Desktop " "Environment version 3.5, which was originally written by the KDE Team, a " "world-wide network of software engineers committed to <a href=\"http://www." "gnu.org/philosophy/free-sw.html\">Free Software</a> development.<br><br>No " "single group, company or organization controls the Trinity source code. " 16 "Everyone is welcome to contribute to Trinity.<br><br>Visit <A HREF=\"http://" "trinity.pearsoncomputing.net/\">http://trinity.pearsoncomputing.net</ A> for " "more information about Trinity, and <A HREF=\"http://www.kde.org/\">http://" "www.kde.org</A> for more information on the KDE project. " msgstr "" "「Trinity デスクトップ環境」は K デスクトップ環境 (KDE) バージョン 3.5 から派生 しました。" "KDE は、もともと KDE チームによって開発されたもので、世界中" "のソフトウェア開発者のネットワークが<a href=\"http://www.gnu.org/philosophy/" "free-sw.html\">フリーソフトウェア</a>の開発に参加しています。<br><br>Trinity の" "ソースコードは特定のグループや企業、組織がコントロールしているのではありませ" "ん。どなたでも自由に Trinity の開発に参加していただけます。<br><br>Trinity プ ロジェク" "トの詳細については <A HREF=\"http://" "trinity.pearsoncomputing.net/\">http://trinity.pearsoncomputing.net</ A> を" "、KDE プロジェクトの詳細については <A HREF=\"http://www.kde.org/\">http://www.kde.org</A> " "をご覧ください。" MO ファイルにコンパイルしてインストールすれば、こんなふうに日本語表示になります。 17 一人でやるなら、しこしこ作業すればよいですが、Trinity のような大規模なソフトをみんな でやろうとすると、進捗管理とか提出とかを自動化しないとたぶん死ねます。 さて、どうしよう 勝手にすすめてよいの? KDE や Trinity のライセンスは GPL ですから、ライセンス的には勝手に翻訳してもよいの です。しかし、上流とコンタクトを取らないと、上流が翻訳に配慮してくれなかったりするなど悲 しいことになったりするので8、Trinity プロジェクトには連絡をすべきでしょう。ただし、現在の Trinity プロジェクトには翻訳のための作業基盤 (翻訳作業用のリポジトリーやメーリングリス ト等) が何もない状態なので、下手に連絡すると、「じゃあ、お前がやれ」とかいって全部押し 付けられたらアレだなー、と二の足を踏んでいたりします。 また、もし小江戸らぐ以外で誰かが Trinity 翻訳を手がけていたりしたら、作業が重複して 無駄になったりして悲しいことになるので、そのあたりも確認が必要でしょう。こちらは、2011 年 11 月に開催された OSC2011 Tokyo/Fall で JKUG (日本 KDE ユーザ会) さんがブース出 展していたので、尋ねてみました。 ブース担当者は翻訳をしない人であるという前置きつきでしたが、すでに KDE3 の翻訳は メンテナンスしていないので、Trinity の翻訳にあたって JKUG との調整は不要ということでし た。 いまさら Trinity 翻訳? ただ、JKUG の方からは「でも、いまさら KDE3 ベースなの? KDE4 に移行しないの?」と いった声もありました。Porteus の 64 ビット版は KDE4 に移行していますが、32 ビット版を KDE4 ベースに移行する予定はないとしています9。 問題は、いつまで 32 ビット版がメンテナンスされるかです。小江戸らぐには古いマシンに優 しい環境を好む人が多いと思うので、Porteus-ja を積極的に 64 ビット版に移行するようなこと は当面ないと思います。あとは Porteus 本体が 32 ビット版のメンテナンスをいつまで続けてく れるかです。 なんとなく先が見えている感もあるのですが、せっかく日本語化をしているので、翻訳にも 関心を持ってもらえんかな、と考えています。 余談になりますが、KDE4 でなくあえて KDE3 を使いたい人がいるのと同様に、GNOME でも GNOME3 があまりにアレなので GNOME2 を使いたいという人がいます。GNOME2 か 8 9 *BSD プロジェクトにおける ドキュメント管理 http://people.allbsd.org/%7Ehrs/N+I2005/sato-n+i.pdf FAQ: Do you have any plans for switching the 32-bit edition to KDE-4.x? http://porteus.org/faq.html#21 18 ら派生した MATE というデスクトップ環境があり、これの README にはなにやら QB っぽい 生物がいます10。ナウなヤングの関心を惹きたければこっちを翻訳した方がいいかもしれませ んが、はとちゃん的には GNOME ってどうなんですか。 Trinity の今後 前述のとおり、Trinity 3.5.13 がすでにリリースされているほか、将来の 3.5.14 や 3.6 等のリ リースも計画されています。 Trinity 3.5.13 では PO ファイルのリポジトリーへの格納形態が変わっており、3.5.12 にくら べると、翻訳のコミットがしやすいかもしれない状態になりました。ただし、内容は更新されてお らず、POT ファイルや翻訳のための作業基盤も用意されていない状態です。 翻訳に関心のある方へ Trinity 以外にも Porteus 関連の翻訳対象はいろいろあります。具体的には KDE4 や LXDE、あるいは通常のユーザーコマンドなどです。これらは Porteus に取り込まれているだけ でなく、複数のメジャーなディストリビューションでも採用されています。Trinity の将来に懸念 をお持ちの場合は、Trinity 以外の翻訳プロジェクトを覗いてみて、自分に合いそうなプロジェ クトに参加するというのもよいでしょう。これらの翻訳プロジェクトのなかには、小江戸らぐメン バーが参加しているところもあるので、翻訳プロジェクトに直接連絡するのが怖ければ小江戸 らぐのメーリングリストや例会で、あるいは翻訳カフェ (なるひこさんの記事参照) などで相談 してみてもよいでしょう。 KDE4 JKUG に翻訳プロジェクトがあります。 http://www.kde.gr.jp/pukiwiki/index.php?TranslationAssignments KDE 開発者メーリングリスト (Kdeveloper) と Wiki で活動していますが、最近はあまり活 発ではないようです。 翻訳作業は、オフラインで PO ファイルを編集する形態です。KDE4 系で現役のブランチは 複数あり、同一のメッセージが各ブランチにあることから、効率的に作業するために翻訳専用 の作業領域を用意して、各ブランチのメッセージを統合したファイルを用意し、これを翻訳する といった工夫をしています。 LXDE LXDE 本家 (lxde.org) に翻訳プロジェクトがあります。 http://wiki.lxde.org/en/Category:Translations Wiki とメーリングリストで活動し、翻訳作業には pootle を利用しています。 10 https://github.com/Perberos/Mate-Desktop-Environment 19 TP (the Translation Project) フリーソフトウェアパッケージの翻訳を集積しているプロジェクトです。 http://translationproject.org/team/ja.html coreutils や bash などの GNU ソフトウェアのほか、いくつかの GNU 以外のソフトウェアの メッセージ翻訳をおこなっています。 メーリングリストで活動していますが、個々のパッケージの翻訳をしている個人の集合体と いったかんじで、全体での訳語統一や査読などはおこなわれていません。 成果物はソフトウェアパッケージ本体に取り込まれており、本体をインストールすれば翻訳 もインストールされるため、環境によっては利用者が意識する必要がないこともあります。 JM (Japanese Manual) プロジェクト Linux 関連のオンラインマニュアルを翻訳・配布しているプロジェクトです。 http://linuxjm.sourceforge.jp/ メーリングリストで活動していますが、最近の活動は活発ではなく、多くのマニュアルが原 文よりかなり古い状態になってしまっています。 翻訳作業はオフラインで roff ファイルを直接翻訳する形態です。個々のパッケージの更新 (原文への追従) は積極的にはおこなわれておらず、やりたい人 (原文の更新に気づいた人) が作業する、といった空気です。 また、ソフトウェアパッケージの開発元へのマージも積極的にはおこなわれておらず、JM プ ロジェクトとして成果物を一まとめにして配布しているのみです。Debian などのディストリ ビューションでは、この一まとまりの成果物をパッケージ化していますが、内容が古くなってい ることから、取扱いをどうするかという議論も一部にあります。 JM プロジェクトの成果物の一部は、Porteus-ja に間接的に含まれています。 Porteus-ja で $ man man すると、man コマンドのオンラインマニュアルが日本語で表示されます。 この日本語マニュアルは JM プロジェクトが翻訳したものです。man コマンドのパッケージ 本体にこの日本語マニュアルが取り込まれたために、日本語マニュアルがインストールされま す。Porteus-ja には、man のほか、shadow, rpm の日本語マニュアルがインストールされていま すが、これらも同様です。ただし、多くのマニュアルは英語マニュアルより古い内容となってい ます。これは、過去に日本語マニュアルがマージされたものの、新しい日本語マニュアルの マージがおこなわれていないことが原因です。 複数の翻訳プロジェクトにまつわる話題 JM の説明で述べたとおり、JM プロジェクトと TP の翻訳対象には関連があります。たとえ ば rpm コマンドでは、 20 $ rpm --help の結果など、各種メッセージが日本語で出力されますが、この翻訳は TP でおこなわれて います。一方、rpm コマンドのオンラインマニュアルの翻訳は JM プロジェクトでおこなわれて います。同じソフトウェアの翻訳ですが、両プロジェクトはそれぞれ独立して活動しています。 より一般的な話として、Porteus はひとつの OS なので、ドキュメントや翻訳に一貫性を持た せるべきという意見もあるかもしれません。しかし、現在は上述のようないくつかのプロジェク ト (翻訳に関するポリシーはそれぞれ異なる) の成果物をそのまま使っており、全体での訳語 統一などはおこなわれていません。 Ubuntu の翻訳プロジェクトなどではそのような努力もおこなわれており、また Ubuntu と GNOME の翻訳プロジェクトのようにプロジェクト間で連携するような動きもありますが、プロ ジェクトによっては、このような他プロジェクトとの連携に積極的でないところもあります。 21 Reudy1.9 で Twitter 人工無脳 −レンタルサーバでここまでできる− 高倉 佑輔 [email protected] (@huideyeren) はじめに 最近「高倉家」と言えば、世間では3匹(+1 匹)の謎のペンギンが登場してヒロインが「生存 戦略」とか叫ぶアニメが大いに話題になっておりますが、私は興味が斜め上に逸れる性格ゆ えか、なぜかペンギンつながりで Linux の技術を頑張る方向に進んでおります。大ブームを 巻き起こした某魔法少女アニメでも CM ネタで謎の白い液体に興味を持ったり 、あげくの 果てには登場人物の誰かに海老蔵よろしく灰皿テキーラを飲ませる役の絵をリクエス トしたり と妙な方向に進むのはよくあることであります。そのペンギンの出て来るアニメですが、 撮り溜め状態でなかなか見ている余裕がないもので。親から早く消してほしいと口酸っぱく言 われております。残念ながら我が家のレコーダーはソニー製ですが最新モデルではないため、 DLNA も HDD 増設もできないのが頭の痛い所です。 それはそうとして、私は自宅のノートパソコンでも Linux(ubuntu 11.10)を使用しております が、Windows に比べ、Flash の安定性には劣るものの、日常的に使うには不便のないレベルと 実感しております。ここまでの話はどうでも良いものですが。 そんな私が熱を上げている Linux ですが、今回はレンタルサーバを利用して人工無脳と呼 ばれる自動的に発言を生成するプログラムを利用して Twitter 上に自動 Post するシステムを 構築してみようと思います。手順等練れていないところもあると思いますが最後までお付き合 いいただければ何よりです。 人工無脳とは そもそも人工無脳とはどういうものでしょうか。人工無脳とは、チャットボットとも呼ばれる、 トップダウン的に「人らしさ」のモデルを作り出そうというプログラムのことを指します。プログラ ムのアプローチとしては、ただ単に決まったワードに反応して適当な対応を返すだけのものか ら、マルコフ連鎖をもちいるもの、人間同士の会話ログから全自動で学習し、単語を置き換え て人間らしい発言をするものまで様々あります。主な人工無脳プログラムとしてはししゃも、酢 鶏、うずら、ARISA 等があります。分類からすると、ししゃも、酢鶏はマルコフ連鎖をもちいたも の、ARISA はキーワードに反応するものです。なお、うずらの中身については非公開となって いますし、アルゴリズムも公開されていません。Twitter で、人間だと思っていたアカウントが実 22 は人工無脳だった、ということもよくある話だと聞いています。 その人工無脳の中で、私が選んだのは Reudy(ロイディと読む)というプログラムです。この プログラムは東京工業大学ロボット技術研究会(当時)の市川宙(@gimite)氏によって Ruby で書かれたオープンソースのプログラムで、結構面白い発言をしてくれます。メカニズムは 人間同士の会話ログから単語や文脈を学習し 類似するログがあればそれに対する返事をベース発言とし ベース発言中の単語を相手の発言中の単語に置換して人間らしい会話を生成する という感じです。面白いプログラムでしたが、IRC と Lingr のチャットにしか対応しておらず、 Twitter で使うには Twitter の IRC インターフェイスを使わなければいけない状態でした。また、 Ruby1.9 では日本語処理の都合上動かない、という問題点もあります。詳しくは、 http://rogiken.org/SSB/reudy.html をご覧ください。 その、Reudy を Ruby1.9 上で動くよう改変し、Twitter 用のインターフェイスを付け加えた ものが Reudy1.9 です。このプログラムは Glass_saga 氏によって書かれました。これに関する Rubyist Magazine の記事が http://jp.rubyist.net/magazine/?0035-Reudy にあります。改変箇所はエンコーディングや String の扱い、Twitter 対応や設定ファイルの YAML 化、日本語形態素分析エンジンの MeCab の利用などです。詳しくはその記事をご覧 ください。ソースコードは https://github.com/Glasssaga/Reudy19 にあります。私は、このプログラムをレンタルサーバで Twitter bot として動かしています。対 象のアカウントは「前半分スキンヘッドな男 bot」こと@maehanbun です。Twitter ではフォロー したユーザのタイムラインを会話の過去ログとして認識する仕様で、ツイートごとに発言を 行っていく形になります。 23 インストールと環境設定 ここからは、実際にインストールした手順を紹介してみようと思います。さて、レンタルサーバ ですが、私は割安な Serversman@VPS の Standard プランを選びました。スペックとしては以 下のとおりになります。 OS:標準は CentOS(5.5)、Debian(5)や ubuntu Server(10.04LTS)も選択可能。 しかも 32bit と 64bit も選択可能。 メモリ:最大 2GB 最低保証 512MB、保証メモリは最大1 GB まで 256MB 単位で 399 円/月で追加可能 ハードディスク:30GB +10GB で 105 円/月 標準料金:980 円/月 OS は標準で CentOS が入っていますが、わざわざ ubuntu を入れなおしました。CentOS で は、 Serversman@VPS 独自のオンラインストレージにアクセスするソフトウェア Apache(おなじみ Web サーバー) Perl(スクリプト言語) Yum(パッケージ管理ツール) のみのシンプルセット以外に様々な用途に応じたセットが選べ、エンジニアセットに至っては Web 系言語の定番である PHP のみならず Java やサーバー管理ツールの BlueOnyx すら付 いて来る太っ腹ぶりですが、ubuntu ではシンプルセットしか選べません。しかし、パッケージが 新しく(CentOS5.5 では PHP5.2 系が標準で使えないことが何よりの問題)、また豊富なことが ubuntu の特徴で、なにせ、今回 Reudy1.9 を動かす上で必要になる Ruby1.9 は CentOS には 用意されておらず、1 からインストールしなければいけないのが問題です。 ここからが実際の手順です。なお、参考程度に#は root 権限での操作、$は一般ユーザー権 限での操作になります。なお、Reudy1.9 はバージョンアップ途上であり、過去にインストールし た時から手順が変わっている場合があります。今回記載の手順は実際に検証していないので、 その旨ご了承ください。また、ユーザー名は huideyeren のままになっていますので、読み替え ていただければ幸いです。まず、サーバーが開通したらはじめにすることはパッケージを最新 にすることです。インターネットに公開するサーバーだけに、セキュリティは万全にする必要が あります。 24 # apt-get update 次に、日本語関連ファイルのインストールをする必要があります。Serversman@VPS ではイ ンストール直後の ubuntu Server は英語のロケールしかインストールされていませんが、 Reudy1.9 は日本語プログラムなので、日本語ロケールが必要になります。 # apt-get install language-support-ja # dpkg-reconfigure locales で、OS のアップグレードです。Serversman@VPS の ubuntu では、基盤が OpenVZ のため、 カーネルのアップデートはできないようです。 (なお、10.10 までのアップグレードはできましたが、その先のアップグレードを中止してしま いました。でもなんとか動いているようです) # apt-get upgrade 次に今回の目玉となる MeCab をインストールします。これは ubuntu のレポジトリにあるパッ ケージを使用します。 # apt-get install mecab で、MeCab 開発ファイルのインストールです。これも ubuntu のレポジトリにあるパッケージを 使用します。 # apt-get install libmecab-dev MeCab の IPA 辞書については別の場所からダウンロードする必要があります。もしかしたら もうないかもしれません。その時はご容赦ください。 # wget http://archive.ubuntu.com/ubuntu/pool/multiverse/m/mecabipadic/mecab-ipadic_2.7.0+20070801-3_all.deb で、MeCab の IPA 辞書をインストールします。これはダウンロードしたので普通に dpkg を使 います。 # dpkg -i mecab-ipadic_2.7.0+20070801-3_all.deb その後、MeCab の IPA 辞書を UTF-8 に変換する必要があります。もともと IPA 辞書は EUC-JP しか用意されていないので、ここで変更する必要があるようです。 25 # /usr/lib/mecab/mecab-dict-index -d /usr/share/mecab/dic/ipadic -o /var/lib/mecab/dic/ipadic -f euc-jp -t utf-8 -p で、make に必要なのをインストールします。ついでに Ruby1.9.1(とかいいながら実際には それより新しいバージョン)が入ります。 # apt-get install make g++ ruby1.9.1-full 次は、ユーザーを作成します。便宜的にユーザー名は huideyeren のままにしてあります。 # useradd -m huideyeren -s /bin/bash その後に、ここが厄介な Ruby バインディングのインストールです。私はソースコードからの インストールが大嫌いで、基本パッケージがある時はそれを使いますが、今回はパッケージが ないのでソースコードからコンパイルしてインストールします。 # wget http://jaist.dl.sourceforge.net/sourceforge/mecab/mecab-ruby0.98.tar.gz # tar -xzf mecab-ruby-0.98.tar.gz # cd mecab-ruby-0.98 # ruby1.9.1 extconf.rb # make # make install 無事 MeCab の Ruby バインディングのビルドが通ったら、テストをします。ここでもついてく るプログラムは EUC-JP なので、UTF-8 に変換しなければなりません。 # nkf -w8 test.rb > test2.rb # ruby1.9.1 ./test2.rb 次に、git をインストールします。これも ubuntu のレポジトリにあるパッケージを使用します。 # apt-get install git これが終わってやっとユーザでログインします。ついでにパスワード設定もしておくことが必 要です。 git から reudy1.9 のソースコードをダウンロードします。 $ git clone [email protected]:Glasssaga/Reudy19.git 26 ここで Initialized empty Git repository in /home/huideyeren/Reudy19/.git/ The authenticity of host 'github.com (207.97.227.239)' can't be established. RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts. Permission denied (publickey). fatal: The remote end hung up unexpectedly というエラーが発生しますが、これは暗号鍵を github に登録することで切り抜けられました。 また、Glass_saga 氏によれば、 $ git clone https://[email protected]/Glasssaga/Reudy19.git という方法もあるようです。 で、また root に戻って必要な gem パッケージをインストールします。ruby 用の TwitterAPI ラ イブラリである rubytter と、標準入出力の処理をより賢くするためのコマンドラインインター フェースを提供するライブラリの highline です。 # gem1.9.1 install rubytter highline ここまで来て標準入出力で動かしてみることができます。ちゃんと応答が返ってくることを 確かめてみましょう。 $ ruby1.9.1 ~/Reudy19/stdio_reudy.rb public -m たまにバージョンアップがあります。その際は $ git pull とするとバージョン管理システムによって自動的に更新が行われます。 Twitter の Bot として動かすには、Twitter の API 登録を行う必要があります。これは https://dev.twitter.com/apps/new で登録できます。で、public フォルダ内の setting.yaml にある以下の項目を編集します。 27 • :key: Twitter の API 登録の際に明示された key 値 • :secret: Twitter の API 登録の際に明示された secret 値 • :nick: ここを bot の名前に編集 • :nicks: ここも bot の呼び名に編集 • :respond_to_notice: true(IRC 向けの設定項目ですがここも変更しておくとよいでしょう) • :speak_with_privmsg: true(ここも IRC 向けの設定項目ですが編集しました) • :default_mode: 3(デフォルト値は 2、3 にすると更新頻度数が上がる) • :wait_before_speak: 2(デフォルト値は 0) • :name: ここも bot の名前に編集 ここまで来たら実際に動かすのみです。このままコマンドを叩けば Reudy のプロセスが起動 するはずです。で、1 時間に 350 回という Twitter の API の上限回数を迎えると自動的に Reudy が落ちてくれるはずです。それまでは発言してくれるでしょう。 $ ruby1.9.1 ~/Reudy19/twitter_reudy.rb public -m 万が一 Reudy のプロセスが落ちてしまった際のために cron 登録をしましょう。なお、cron で は標準では「LANG=C」になっており、そのまま実行しようとするとエラーになります。コマンド 実行時に ruby1.9.1 の前に 「LANG=ja_JP.UTF-8」を付け加えることで回避できます。そのた め、コマンドはこうなります。 cd /home/huideyeren/Reudy19 && LANG=ja_JP.UTF-8 ruby1.9.1 /home/huideyeren/Reudy19/twitter_reudy.rb /home/huideyeren/Reudu19/public -m 1>>/home/huideyeren/Reudy.log 2>>/home/huideyeren/Reudy-err.log で、完成、というところでしょうか。 終わりに @maehanbun の現状ですが、私の環境では MeCab を使用しようとすると英語とかスペイン 語とかの文章しかツイートしなくなるようです。また、現在 Reudy オリジナルの単語学習エンジ ンで使用していますが、ただ単に元発言のソースも明らかにせずにリツイートする bot になって しまっています。現に「自分の発言を勝手に使わないでください」という苦情が来たり、大阪 府・大阪市選挙のおり、誰かがリツイートしたものを@maehanbun が非公式リツイートしてしま いましたが、元の発言者より@maehanbun のほうが公式リツイートが多く、元の発言者が不思 議な気持ちを抱いていたという事象も起こっています。これはフォロワー数が多いためか、「過 28 去ログを読み込み発言に対する回答から単語の置換えを図っていく」という Reudy のアルゴ リズムでは対応が難しいせいなのかもしれません。もしかしたら Twitter はつぶやきゆえに相 手への返答を想定しない一方通行的な発言が多く、なかなか学習できない影響や、フォロ ワー数が少ないほうが人間同士の会話に見えて学習しやすいという推測から、アルゴリズム を見たほうがいいような気がします。さらに、いつの間にか韓国語のツイートまで非公式リツ イートするようになっていました。ログそのままとはいえ、日本語の途中にハングル文字が急に 現れたりするかもしれないので、今後の事象についてはくわしく観察していきたいと思います。 なにより最大の問題は、アフィリエイトや名誉毀損、差別用語など不適切な単語や発言をその ままツイートしてしまうことで、これについてはアルゴリズムの本格的見直しをしなくてはならな いことから、次のエンジンの登場に期待しています。もしかしたら Hadoop で MapReduce した ほうが効率的に単語を学習できるのではないかと思ってしまうほどです。もしかしたら自然言 語処理で Hadoop を使った Twitter bot が早く現れないかとか、ニンゲンの作る芸術としての 短歌をツイートし、さらにはお題に合わせて短歌を詠み、しまいには Twitter 上でのニンゲンの 発言のタイムラインをもとに人の短歌を評価してくれる bot が早く現れないかとわくわくてかて か状態です。 みなさんもインストールして、ぜひとも笑える Twitter ライフを送れることを祈っております。 29 Linux で写真を操作 - 写真の管理、現像、投稿 KenichiroMATOHARA http://hpv.cc/~maty/ (@matoken) はじめに 最近 Linux でも写真をお手軽に扱えるようになっているのでそれを簡単にまとめてみました。 何かの助けになれば幸いです。 撮影した写真の管理 撮影したデータを PC に移して何時でも見られるようにします。カメラのメディアを PC に挿 入することで認識します。USB 接続の場合は USB マスストレージや PTP(Picture Transfer Protocol)として認識されて写真転送が可能になります。認識すると普通にファイルコピーが可 能となります。 iPhone/iPad は PTP で認識します。Android の場合は Andorid 端末側で USB マスストレー ジを有効にすることで認識するようになります。カメラアプリによって保存場所が異なる場合が あるので注意して下さい。 私は写真管理には F-Spot/Shotwell/Picasa を併用しています。それぞれメリットデメリットが あります。 F-Spot1 F-Spot は Ubuntu10.04 迄 Ubuntu の標準フォトマネージャでした。認識する画像の種類が 多いのが魅力です。ただ画像が多くなると重くなってきます。SIGMA DP1 というカメラの RAW 形式である X3F 形式については読み込みは可能ですが画像はノイズだらけの何が 写っているのかわからない画像になってしまいます。これは RAW のエンジンとして dcraw が 使われているのですが、この dcraw が SIGMA DP1 の X3F に対応していないのが問題のよう です。(同拡張子の別のカメラには対応している。) Shotwell2 Shotwell は Ubuntu10.10 から標準のフォトマネージャになりました。F-Spot の写真を読み込 1 2 http://f-spot.org/ http://yorba.org/shotwell/ 30 む機能があるので F-Spot 空の移行は楽だと思います。F-Spot に比べて動作が軽くなっていま す。読み込んだ画像を時間などによりグループ化する機能も付いているので整理しやすいで す。しかし、F-Spot に比べて機能が少なく物足りなく感じます。例えばフォトストレージサービス の数が少なかったり認識する画像が F-Spot に比べて少ないなどです。未対応の画像は無視 されます。後者は SIGMA DP1 というカメラの RAW 形式である X3F 形式に対応していない ので個人的に致命的です。 Picasa3 Picasa は Google が作成したフォトマネージャです。Google のフォトストレージサービス4と 同じ名前なので混乱します。Linux 用も提供されていますが、内部で Wine を使い Windows バイナリを動作させているようです。最近のバージョンには追従していないのですが5、 Windows 版の Picasa3.9 を Wine 上で動作させている方も居るようです6。 画像の認識する種類は多く動作も軽いです。画像は自動的にコンピュータ内から検索して 読み込みます。私は自分が写真を置いているフォルダのみ指定しています。しかし偶に db か 何かが壊れるらしくそうなると直ぐ落ちてしまいます。その場合は一旦設定を削除して再度写 真を読み込んでいます。 現在私は F-Spot をメインに Shotwell / Picasa を補助的に使っています。複数の画像管理ソ フトの利用方法としては先ず F-Spot でメディアやカメラから写真を読み込み、~/Pictures 以下 に保存します。Shotwell では手動で、Picasa では自動で写真を読み込ませています。この時 Shotwell / Picasa では写真をコピーしないようにします7。コピーするとその分容量が圧迫され てしまいます。 以前 MacOS X の iPhoto を利用していましたが動作も軽く顔認識やジオタグ機能もあって 未だ負けているなと感じました。でも Shotwell で写真のグループ化を取り入れたりとそのうち 追いつくのかなと期待しています。 写真の現像 最近まで写真を撮影するときはカメラで自動的に生成される jpeg を主に利用していました が最近 RAW+jpeg 撮影(両形式を同時に保存する)をメインにするようになりました。書き込み 3 4 http://picasa.google.co.jp/ https://picasaweb.google.com/ 5 6 Linux 版は 3.0/Windows 版は 3.9 http://wiki.winehq.org/picasa / http://groups.google.com/group/google-labs-picasa-forlinux/browse_thread/thread/45db5ff773d10792# 7 Shotwell は「元の場所でインポート」 31 速度のこともあるのでもう少し慣れたら RAW 一本にしようかと思っています。 RAW というのは通常カメラのセンサから読み込んだデータをカメラ内で jpeg 形式に変換 しますが、RAW はセンサのデータを jpeg などに保存せずそのままの形式で保存したものです。 このままでは画像として利用できないので PC 等で変換します。この処理を一般に RAW 現像 と言います。 RAW 現像のメリットとしてはホワイトバランスやコントラストなどを操作し自分の思うような 画像に出来ることです。jpeg でもある程度操作は可能ですが RAW の場合は色深度等が深 いので jpeg よりも自由度が高いです8。場合によっては露出に失敗した写真をある程度見れ る写真にするといったことも出来ます。但し飽和してしまった白トビや黒つぶれ部分は救うこと が出来ません。デジタルカメラになってからフィルム以上に暗い画像を救うことが安易になっ た気がします。9 10 11 以下の画像は左がパラメータをいじらずに現像したもの、右が露出などを変更して街並み が見えるようにしたものです。 私は現在 Ufraw/dcraw という現像ソフトを GIMP という画像編集ソフトと組み合わせて利 用しています。 UFRaw12 UFRaw で RAW ファイルを開くと GUI の画面が開きます。左側のパラメータで現像処理を し、右下の保存ボタンで ppm 形式で保存できます。ppm で保存した場合 exif 情報(カメラの 撮影データなど)が消えてしまうようです。保存ボタンの右の GIMP アイコンを押すことで現像 したデータを GIMP に送ることができます。その後 GIMP で jpeg ファイルなどに保存できます。 8 jpeg8bit に対し RAW は 12~16bit 等 9 ピンぼけやブレなどは救えません 10 ブレについては修復技術は幾つかあるようですが未だ実用出来ではなさそうです 11 小型のピンぼけしないカメラというものが最近発表されました案外安いです http://www.lytro.com/ 12 http://ufraw.sourceforge.net/ 32 dcraw13 dcraw は基本的にコマンドラインで動作するようです。以下は実行の例です。これで書き出 された 16bit PSD ファイルを GIMP 等で開いて処理しています。 $ dtdcraw -3 -w -g 0.45 -b 1.5 hoge.DNG -3 → 16bit PSD 書き出し -w → カメラのホワイトバランス利用 -g → ガンマ値 0.45 -b → 明るさ補正 +1.3 コマンドラインでの操作というと面倒そうに見えますが、同じような条件で撮影した画像を1 枚あたりを付けてその後一気に現像といったことができるので大量の現像に便利です。 GIMP との連携 Ubuntu には gimp-ufraw / gimp-dcraw といった GIMP と連携するパッケージがあります。こ のパッケージを導入すると RAW ファイルを GIMP で開くとそれぞれ UFRaw / dcraw で開か れて処理後 GIMP に画像が渡されるようになります。このとき dcraw はコマンドラインでなく簡 易な GUI 画面が開かれます。このパッケージは排他となっていてどちらかしか導入できませ ん。私は UFRaw はそのまま GIMP に画像を渡す機能があるので gimp-dcraw を導入していま す。 13 http://www.cybercom.net/~dcoffin/dcraw/ 33 マイナーな RAW 形式の現像 UFRaw/dcraw を利用して RAW 形式のファイルを現像していますが、全ての RAW 形式に 対応しているわけではありません。私は SIGMA SP1 というカメラの X3F という RAW ファイ ルがどちらでも現像することが出来ませんでした。そこで別の方法を考えました。 Wine で Windows 用の純正ソフトを動作させる方法と、RAW 形式を標準形式の DNG 形 式に変換する方法です。 Wine を利用した純正ソフトでの現像 Wine という Windows の API を実装して Windows アプリケーションを動作させるプログラ ムがあります。動くもの動かないものがありますがこれで Windows 用アプリケーションを Linux 上で動作させることが可能です。 これでメーカー純正の現像ソフトを利用してみます。SIGMA の場合 SIGMA Photo Pro と いうアプリケーションです。日本語が化ける部分が少しありますが X3F 形式のファイルを開い て現像、jpeg 形式で保存と行ったことが可能になりました。 34 Adobe DNG Converter を利用して標準 RAW 形式に変換 RAW 形式はカメラの生のセンサデータなのでメーカーやカメラごとに違うのですが、標準 形式もあります。Adobe が提唱している DNG(Digital Negative)という形式です。この形式に 則っていれば大抵の現像ソフトで幻像が可能になります。最近の RAW 対応カメラだと独自 形式と DNG の両方に対応していることが多いです。手元のカメラだと Pentax K-7 というカメ ラは Pentax 独自の PEF と DNG の2つの形式に対応しています。PEF だと Picasa なども対応 していないのでカメラ側で DNG に設定しています。 Adobe はこの DNG 形式への変換プログラムを配布しています。Adobe DNG Converter ( http://www.adobe。com/products/photoshop/extend.displayTab2.html )です。例によって Windows/MaxOS X 用ですが、Windows 用を Wine で動作させることが可能です。DNG 形式 にしてしまえば UFRaw でも dcraw でも現像可能です。X3F 形式も DNG 形式に変換が可能 なので SIGMA DP1 も問題ありません。 35 幾つか現像方法を紹介しましたが、他にも色々な RAW 現像ソフトがあります。色々試してみ るのも良いかもしれません。 フォトストレージサービスへのアップロード 写真を各種フォトストレージにアップロードすると色々な人に公開することができます。 私は主に Flickr14というサービスを利用しています。Pro アカウント15を取得すると画像が無 制限にアップロードできるようになります16。これで jpeg ファイルを全て非公開でアップロードし 14 http://www.flickr.com/ 15 有料年間$24.95〜 http://www.flickr.com/upgrade/ 16 http://www.flickr.com/help/limits/#28 36 てバックアップ替わりにも使っています。 Facebook は長辺が 800pixel と一寸もの足りませんが無制限にアップロードできます。 Google の Picasa は最近 Google+と連携して Google+からアップロードした画像については 長辺 2048pixel 以下であれば無制限にアップロードできるようになりました。 ここでは Flickr へのアップロード方法と、Picasa の Google+領域へのアップロード方法を説 明します。 Flickr へのアップロード Poster17という Flickr へのアップローダがあります。このプログラムを利用すると簡単に写真 のアップロードが可能です。アップロード前にタグ付けや説明セットの選択、パーミッションの 設定などが可能です。初回起動時にはブラウザを利用した認証が必要です。 以下の例では 2GB しかアップロードできないように見えますが、表示が Flickr に追従でき ていないだけで実際は無制限にアップロードが可能です。 F-Spot や Shotwell からも Flickr へ直にアップロードすることが可能です。Picasa はプラグイ ン18を導入することでアップロードできるようになるようですが、Picasa 上で Upload したい画像 を選択し、Poster へ画像をドラッグアンドドロップすることでアップロードができるので使ってい ません。 17 http://burtonini.com/blog/computers/postr 18 http://picasa2flickr.sourceforge.net/ 37 Facebook への投稿 私はあまり使用していないのですが、Shotwell からの直接アップロードが可能です。19 Picasa へのコマンドラインからのアップロード Picasa は現在無料での利用で 1GB 迄アップロードが可能です。しかし、最近 Google+から アップロードした写真は長辺が 2048pixel に自動的に縮小されますが無制限にアップロード できるようになっています。実はこれは Picasa のアルバム名で判別しているようです。Instant Upload というアルバムにアップロードすると自動的に長辺 2048pixel に縮小され、このとき PicasaWebAlbam の容量は消費されません。 Google+の画面からアップロードしてもいいのですが、GoogleCL20というプログラムがありま す。このプログラムによってコマンドラインから Google のサービスにアクセスできるようになり ます。Picasa への写真のアップロードも可能です。この原稿執筆時点での最新版は 0.9.13 で した。Windows/deb/その他の3種類のアーカイブがあります。環境に合わせて導入して下さい。 初回起動時はブラウザが起動して認証を求められます。この時のブラウザは JavaScript と Cookie が必須です。ssh 経由でのサーバへの導入時は w3m が起動して認証に失敗しました、 この時は xorg と firefox を導入して X 転送経由で認証を行いました。 以下は Picasa の Instant Upload アルバムに sample.jpg という写真をアップロードする例で す。 $ google picasa post --title 'Instant Upload' sample.jpg More than one match for title Instant Upload 0) Instant Upload 1) Instant Upload 2011-12-07 2) Instant Upload 2011-09-29 - 2011-12-07 3) Instant Upload 2011-09-29 4) Instant Upload 2011-09-29 5) Instant Upload 2011-08-10 - 2011-09-29 Please select one of the items by number: 0 Loading file FlickerUpLoader.png to album Instant Upload Loading file sample.jpg to album Instant Upload これでアップロードされました。「Instant Upload 年月日*」というアルバムは自動的に作成さ れてしまうようです。作成される条件は Google+からアップロードされたものだと思うのですが 未確認です。ここでは手動で 0 番目のアルバムを選択しています。 アップロードした写真の URL は list コマンドで取得可能です.アルバム内の全ての URL が 取得できてしまうので grep コマンド等で制限すると良いでしょう。 $ google picasa list --title 'Instant Upload' | grep sample.jpg sample.jpg,https://picasaweb.google.com/103792214056489833385/InstantU pload02#5687551805414416146 19 「ファイル」→「公開」→写真の公開先「Facebook」 20 http://code.google.com/p/googlecl/ 38 ワイルドカードを使ったり find コマンドと組み合わせると大量の写真の一括アップロードも 可能です。以下はカレントディレクトリ以下の*.JPG ファイルを一括アップロードする例です。 $ find . -type f -name "*.JPG" -print0 | xargs -0 -I{} sh -c "yes '0' | google picasa post --title 'Instant Upload' {}" おわりに 今のところこのような感じで Linux でも写真の処理に不自由なことは無くなってきました。 Wine に依存している部分を解決していけたらなと思っています。最近は画像をインターバル 撮影して動画にしたり、HDR(high dynamic range imaging)にも手を出しています。これもそ のうち発表できたらと思っています。 39 DynabookAZ に Armed Linux を インストールしてみた 羽鳥健太郎 [email protected] はじめに 東芝 Dynabook AZ(通称”あずにゃん”)は、 キーボードのあるノートブックサイズの Android 端末で、クラウドブックのニックネームで2010年 夏に発売されたものの、パームレストにある"本製 (R) 品は Windows OS ではありません”が嫌われ たかのか、はたまたタッチパネルでなかったことや Android Market に入れなかったことが嫌われ たのか、当初 44,700 円ほどの価格が12月には 2万円前後で投げ売りされていました。 東芝では完全になかったことにしたい製品の ひとつなのかと思いますが、下にありますように人 気がなかったのが不思議なくらいの魅力あるス ペックになっています。海外では AC100 という名称で販売されており、これをハックしたコン テンツが数多く発表されています。Ubuntu では、11.10 から正式リリースするということで、 早速 DynabookAZ に Ubuntu 11.10 をインストールしてみました。 液晶サイズ CPU メモリ規格 フラッシュメモリ 無線 LAN Bluetooth 駆動時間 幅 x 高さ x 奥行 詳細スペック 10.1 インチ 解像度 NvidiaTegra250/1GHz 画面 DDR2 PC2-4200 メモリ容量 16 GB eMMC 対応 メディアスロット IEEE 802.11b/g/n インタフェース 2.1+EDR 準拠 Web カメラ 7 時間 OS 262x21x189.8 mm 重量 WSVGA (1024x600) LED バックライト 512MB SD/SDHC/MMC カード USB2.0/USB-B/HDMI 130 万画素 Android 2.1(現在 2.2) 0.87 kg 情報収集 “あずにゃん”の情報は、まずは2ちゃんねるで最新情報が入手でき(12/17 現在 Part6 ま で)、そのまとめ wiki (http://www45.atwiki.jp/dynabookaz/)で全体像を把握すること ができます。 40 しかし、“あずにゃん”の Ubuntu に関する情報は、Ubuntu Wiki の AC100 のページで す(https://wiki.ubuntu.com/ARM/TEGRA/AC100)。ここには詳細が網羅されており、 こちらを丁寧に読みながら進めていけば、“あずにゃん”の Armed Linux は成功します。ただ し、2ちゃんねるを横目で眺めるのも忘れないようにします。 インストール 事前準備 “あずにゃん”に Armed Linux をインストールするためには、次のものを用意します。 • Mini-USB ケーブル(A コネクタ-mini-B コネクタ) ← 付属品 • LinuxPC 本体 • USB メモリまたは SD カード(最低容量 1 GB) • 1〜2時間程度の時間(ダウンロード時間を含む) LinuxPC 本体は、どんなディストリビューションでもよいの(もちろん Slackware でも)で すが、Ubuntu または Debian が楽だと思います。LinuxPC 本体から“あずにゃん”に bootimage を転送するときに、nvflash という nvidia が提供しているツールを用います。こ れに.deb ファイルが用意されており、nvflash を適切な場所にインストールしてくれます。他の ディストリビューションは、それを自分で意識しなければなりません。 ダウンロード インストールのために、以下のファイルをダウンロードします。 Oneiric Installer Oneiric(Ubuntu 11.10)の リリースディレクトリ (http://cdimage.ubuntu.com/releases/11.10/release/)から、次の2つのファイルをダ ウンロードします。 • Bootimage ubuntu-11.10-preinstalled-desktop-armel+ac100.bootimg • Preinstalled rootfs ubuntu-11.10-preinstalled-desktop-armel+ac100.tar.gz ダウンロードに失敗したものをインストールすると、“あずにゃん”が文鎮になりますので、ダ ウンロードした後は必ず md5sum で照合してください。文鎮といっても、“あずにゃん”は軽い ので、あまり役に立ちません。 ここで選択のミスをしました。2ちゃんねる情報では、無線 LAN の安定性が悪くて、 Ubuntu 12.04 の alpha 版または Daily Build のほうが場合によっては安定すると いうので、最初に Daily Build からインストールしました。インストールは、内蔵のフ ラッシュメモリか、SD カードを選択できるはずなのですが、選択画面を表示すること なく内蔵のフラッシュメモリにインストールされました。 ここは、まずは OneiricU(Ubuntu 11.10)のインストールをお勧めします。 41 nvflash Bootimage は、nvflash ツールを使って mini-USB ケーブルを介して前述したとおり USB メモリまたは SD カードに入れた Preinstalled rootfs を“あずにゃん”のブート時に内蔵のフ ラッシュメモリに展開するために必要です。 Nvidia のページから、以下のファイルをダウンロードします • Install nvflash using a debian package http://ac100.grandou.net/nvflash#debian_ubuntu_package 実際には、そこからさらに.deb ファイルのリンク先に飛ばなくてはなりません。最終的に 以下の.deb ファイルをダウンロードしました。 http://share.grandou.net/debian/nvflash/nvflash_20110628-2_all.deb 他のディストリビューションについては、Install nvflash using a debian package の前 に nvflash のインストール方法が記述されているので、そこを参照してください。ここでは、 ホームディレクトリ以下の~/tools ディレクトリに展開するようになっていますが、 Ubuntu/Debian では、nvflash.bin が/usr/lib/nvflash ディレクトリにインストールされる ので、同様にすればよいでしょう。 インストール インストールは、次の2つのフェーズでやります。 ブートイメージの展開 ① “あずにゃん”のバッテリーをフル充電にするか電源ケーブルを接続します。 ② “あずにゃん”をシャットダウンします。 ③ mini-usb を“あずにゃん”から LinuxPC 本体に接続します。“あずにゃん”の miniusb ソケットは本体右側の電源コネクタの左隣です。 ④ リカバーモードで“あずにゃん”を起動します。CTRL キーと ESC キーを押しながら、電 源ボタンを押します。スクリーンには何も表示されません。 ⑤ LinuxPC 本体でターミナルまたは端末(KDE ならばコンソール)を開いて、次のコマン ドを実行します。 $ nvflash --bl /usr/lib/nvflash/fastboot.bin --download 6 /path/to/ubuntu-11.10-preinstalled-desktop-armel+ac100.bootimg ← 3 行ではなく続けて 1 行のまま (注) fastboot.bin のパスは自分がダウンロードした ubuntu-11.10-preinstalleddesktop-armel+ac100.bootimg の置き場所によります。適宜変更してください。 ⑥ LinuxPC 本体のターミナルで、nvflash の実行が終了して、”success”のメッセージ が表示されたら、”あずにゃん”の電源ボタンを数秒間押し続けてシャットダウンします。 Preinstalled rootfs のインストール ① ubuntu-11.10-preinstalled-desktop-armel+ac100.tar.gz を USB メモリの最初の パーティションにコピーします。 42 (注) tar.gz ファイルを展開したり、dd コマンドでのコピーは不要です。コピーした後に、 ちゃんとコピーされているか、md5sum で確認しましょう。 ② Reboot with the USB メモリを挿入したまま再起動してから、簡単な説明に従って進 めます。すべてが終了したら再起動しますが、それまで 20〜30 分程かかります。. インストールの注意 • 外部メディアにインストールするときは、Preinstall rootfs を入れていない USB メモリま たは SD カードが対象となります。その USB メモリまたは SD カードは空にしておいてイ ンストール前にスロットに挿入しておきます。内蔵 eMMC メモリの mmcblk0 の代わり に、SD カードの mmcblk1 にインストールされます。僕の場合は、それはできませんでし たが...。 • ホームディレクトリを暗号化するオプションが用意されていますが、デフォルトでは動きま せん。暗号化するときは、別途 AC100 の最後にある暗号のガイドに従って作業してくだ さい。 • デフォルトではヘッドフォンからのみ音が出ます。サスペンド/レジューム後は動作しなく なります。スピーカーから音を出すときは、別途 AC100 の最後にあるガイドに従って作 業してください。 これで再起動すると、LinuxPC 本体と同じようなログイン画面が表示され、ログインすると 見慣れた Unity2D のデスクトップ環境が使えるようになります。 動かしてみると分かりますが、とってももっさりしています。いくら”あずにゃん”の CPU が Nvidia Tegra250 2Core 1GHz であっても、メモリは 512MB しかないのでは、Unity2D を常用するのは厳しいので、次からは常用するためのチューニングをします。 43 チューニング デスクトップの変更 Ubuntu の派生ディストリビューションに、デスクトップが KDE ならば Kubuntu、Xfce ならば Xubuntu、LXDE ならば Lubuntu があるのは、Ubuntu 使いならば釈迦に説法だと思います。 LXDE は最近流行りの軽量デスクトップで、消費メモリも Unity2D の半分ということらしいの で、デスクトップを LXDE に変更します。といっても、次のコマンドを実行するだけです。 $ $ $ $ $ sudo sudo sudo sudo sudo apt-get apt-get apt-get apt-get apt-get update upgrade install lubuntu-desktop purge ubuntu-desktop autoremove これで、LXDE がインストールされました。再起動してデスクトップに LXDE を選択すると、 LXDE が起動します。ずいぶん感覚的に軽くなりました。 キーボードの設定 “あずにゃん”のキーボードは、PC のキーボードと若干違います。もっとも困るのは、106 日 本語キーボードに設定したとしても、 | キーや \ キー(または¥キー)が表示されないことです。 これは、~/xmodmaprc に次のようにキーコードを登録します。 $ cat .xmodmaprc keycode 81 = backslash bar keycode 84 = backslash underscore これを起動時に読み込ませるため、~/.profile の最終行を次のようにします。 44 $ cat .profile # ~/.profile: executed by the command interpreter for login shells. # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login # exists. (snip) xmodmap ~/.xmodmaprc また、”あずにゃん”には、ファンクションキーや Del キーが明示的にないようにみえます。こ れを確認するには xev を利用します。ターミナル上で、xev を入力すると、Event Tester という ウィンドウが表示され、特定のキーを押して離すというイベントが発生する度に、以下のように、 キーコードが表示されます。 KeyPress event, serial 35, synthetic NO, window 0x6800001, root 0xb6, subw 0x0, time 58524961, (820,849), root:(823,872), state 0x0, keycode 119 (keysym 0xffff, Delete), same_screen YES, XLookupString gives 1 bytes: (7f) "" XmbLookupString gives 1 bytes: (7f) "" XFilterEvent returns: False KeyRelease event, serial 35, synthetic NO, window 0x6800001, root 0xb6, subw 0x0, time 58525137, (820,849), root:(823,872), state 0x0, keycode 119 (keysym 0xffff, Delete), same_screen YES, XLookupString gives 1 bytes: (7f) "" XFilterEvent returns: False これによりスペースキーの左にある *キーが Del キーで割り当てられていることが分かりま す。ファンクションキーも、F10 キーがどこにあるのか調べることができます。 ひとつ注意したいのは、音量を下げるキーの左にあるキーは、マウスをオン/オフするキーな ので、これを押してしまうとタッチパッドが無効になりポインタが動かなくなります。このときは 慌てず、再度このキーを押せばタッチパッドが有効になります。 フォントの変更 Ubuntu 11.10 は、アンチエイリアスをオンにしたフォントが用意されていますが、エッジが ぼんやりして個人的に好きではありません。ここは、ビットマップフォントのエッジを効かせた フォントできめたいところです。 まずは、定番の IPA フォントをインストールします。 $ $ $ $ sudo sudo sudo sudo apt-get apt-get apt-get apt-get update install ttf-ipafont-gothic install ttf-ipafont-mincho install ttf-ipafont-uigothic インストール後に、設定から「ルックアンドフィールを設定します」を選択し、ウィジェット・タ ブの下にある、デフォルトのフォントを、IPA UI ゴシック 9 に設定します。 アンチエイリアスをオフにするために、/etc/fonts ディレクトリにある fonts.conf を local.conf としてコピーし、そこに次のように下線部の文字列を挿入します。 45 <!-- Turn off antialiasing for fonts in the 9-14 pt. range --> <match target="font"> <test qual="all" name="size" compare="more"> <int>8</int> </test> <test qual="all" name="size" compare="less"> <int>15</int> </test> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match> 最後に、.gtkrc-2.0 にもフォントの設定をして完了です。 $ cat .gtkrc-2.0 gtk-font-name="IPA UIGothic 9" ビデオドライバの変更 nVidia のビデオドライバを入れることにより、Armd Linux でもフラッシュを見ることがで きるようになります。まずは/etc/apt/source.list の最下行に、下線部の文字列を挿入します。 $ cat /etc/apt/sources.list # /etc/apt/sources.list # deb http://jp.archive.ubuntu.com/ubuntu/ oneiric main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports/ oneiric-security main restricted universe multiverse # deb http://jp.archive.ubuntu.com/ubuntu/ oneiric main universe restricted multiverse # deb http://jp.archive.ubuntu.com/ubuntu/ oneiric multiverse restricted universe main deb http://ports.ubuntu.com/ubuntu-ports/ oneiric main universe restricted multiverse # deb http://jp.archive.ubuntu.com/ubuntu/ oneiric-updates main restricted universe multiverse deb http://people.debian.org/~jak/ac100/ unreleased main non-free 次にドライバをインストールします。 $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AC2A5FFE00823EC2 $ sudo apt-get update $ sudo apt-get install tegra-libraries=12~alpha.1.0-0ac3 $ sudo apt-get install xserver-xorg-video-tegra=12~alpha.1.0-0ac3 Arm 用のフラッシュのライブラリもついでにインストールしておきましょう。 $ sudo wget -O /usr/lib/mozilla/plugins/libflashplayer.so http://kotelett.no/ac100/phh/Android2.2/libflashplayer.so Firefox や Chorome でフラッシュのあるコンテンツに飛ぶと、上部に”The Flash plugin was blocked because it is out of date.”と表示されますが、"Run this time”ボタンで 46 対応してください。 おわりに これで”あずにゃん”が完璧な Armed Linux に生まれ変わったのかというと、まだまだ発 展途上です。たとえば、DropBox はインストールしていないので、クラウド上で他の Linux や Windows とファイルの共有ができません。Evernote の Java 版である NixNote もインス トールされていないので、情報共有ということもなかなか難しいです。 それらは今後の課題ということで、使える Mobile Linux 環境を手に入れたという喜びの ほうが優っていて、さらによくしたいと思っています。冬のボーナス商戦で、UltraBook がひと つの目玉になっていますが、僕にとっては”あずにゃん”のほうが輝いていて、当分は手放せ そうにありません。 最後に、小笠原さんをはじめ小江戸らぐのメンバの方々がいなければ、この素晴らしい環境 を手に入れることができませんでした。本当にありがとうございます。 47 Slackware で省電力 PC に変身させてみた ハード的には失敗したけどソフト的に成功か... 羽鳥健太郎 [email protected] はじめに 昨年から SD カードの価格が急落して、16GB のもので 2,000 円ほどで購入できるように なり、その SD カードに軽薄短小な Slackware まわりのディストリビューションをインストール してみるということをしていました。その中で、3.11 東日本大震災が起こり、世の中は一気に 節電モードに。モバイル PC としてメインで使用している Acer AspireOne AO531h は、 CPU が Intel Atom のネットブックで、そもそも省エネな PC なのですが、これをさらに省電力 PC にできないか、ちょっとやってみました。 やったことは、2つあります。ハードウェア的には SSD への換装で、ソフトウェア的には電力 管理ツールの導入です。SSD への換装は、AO531h には元々 SD カードのスロットが 2 つも あり(1 つは extension として謎なスロットで、一旦挿入すると取り出せない代物ですが)、そ れを利用して SD カード版 Linux を利用していると、薄々そうだよなぁと思っていたのですが、 内蔵の HDD って無駄じゃないのかなぁと。思い切って抜いちゃうということもありですが、そ こまで大胆になれないので、まずは SSD に換装することにしました。電力管理ツールの導入 は、Slackware にさえ標準インストールされている PowerTop というツールを試してみました。 HDD を SSD に換装 換装した SSD は、Silicon Power SSD E20 64GB という 2.5" SATA II 仕様のもので、 NTT-X から 6,980 円で購入しました。この SSD への手順は、データを移行して換装というス テップです。 まずデータの転送ですが、できるかぎり手を抜きたいので、既存の HDD の内容をそのまま 転送することにします。この手の作業用に無償のツールはいろいろありますが、対象となる HDD のファイルシステムの構成が、NTFS + ReiserFS と少し前の Slackware 的には正し いものの、今となってはマイナーなものです。しかも容量が HDD:160GB、SSD:64GB と 60%減となっていて、空き容量的には問題ないものの、そのまま移行できるか不安があります。 ものは試しということで、HDD のデータをそのまま SSD に持っていくツールを Clonezilla、Easeus、TrueImage の 3 種類ほど試してみました。Clonezilla は、台湾発の LiveLinux で名前のとおりクローンのイメージを作成してくれるものです。Easeus は、YIWO Tech Ltd.が開発したフリーウェアでハードディスクのコピーができるというものです。 TrueImage は、Acronics が開発している定番のディスク管理ツールで、以前に購入した 48 9.0 という6世代前のものです。結果的には、Clonezilla と Easeus は ReiserFS が認識され ずに移行できず、TrueImage がそのままいけました。TrueImage も、CD 単体で起動してみ ると Live Linux そのものだったので、ReiserFS も大丈夫だったのかもしれません。 次に換装ですが、AO531h の分解は、AO531h-MCK11 - Acer Aspire One Wiki(http://aspire.toro-kuro.net/index.php?AO531h-MCK11)を参考に進めました。 AO531h のネジは、止めてある箇所により形状も長さも違うので、白い紙にネジを並べてどの 箇所のネジであるのかメモを書きながら解体していきます。最初のキーボードを外すところで、 ツメを割らないようにして外すところが最も難しいところで、あとは淡々と進めることができます。 小一時間ほどで換装することができました。 軽量化 SD カードと同じようにフラッシュメモ リで構成されている SSD は、ディスク のような可動部分などがないために軽 量化も期待できます。しかし、届いたも のの筐体はスチール製で、HDD が 91㌘であるのに、SSD が 72㌘とほと んど変わりがありません。そこで、保証 シールを破って中身を取り出しました。 中身を直接 AO531h に入れるわけは いかないので、クリアファイルに筐体で型どりをして、同じようなケースを作成し、それとともに 装着するようにしました。これにより HDD よりも 60㌘の軽量化ができました。 性能比較 HDD や SSD のパラメータ設定や情報を取得する hdparm コマンドを使って、HDD と SSD の性能について比較してみます。 # hdparm -iTt /dev/sda ← HDD の計測結果 /dev/sda: Model=Hitachi HTS543216L9SA00, FwRev=FB2OC40C, SerialNo=090521FB0201VCFY8DMA (snip) Timing cached reads: 1280 MB in 2.00 seconds = 640.26 MB/sec Timing buffered disk reads: 158 MB in 3.01 seconds = 52.42 MB/sec # hdparm -iTt /dev/sda ← SSD の計測結果 /dev/sda: (snip) Timing cached reads: 1258 MB in 2.00 seconds = 628.98 MB/sec 49 Timing buffered disk reads: 344 MB in 3.01 seconds = 114.41 MB/sec これを3回繰り返してみました。 ① Timing buffered disk reads: 384 MB in 3.00 seconds = 127.96 MB/sec ② Timing buffered disk reads: 388 MB in 3.01 seconds = 128.74 MB/sec ③ Timing buffered disk reads: 388 MB in 3.01 seconds = 128.91 MB/sec SSD の性能は、HDD の2倍強の性能が出ていますが、仕様にある読込速度 250MB/sec には遠く及びません。後に、AO531h のチップが SATA I 仕様であったた めに、SSD の SATA II の性能を活かせないことが分かりました。 省電力 当初の目的である省電力の性能はどうでしょうか。これを正確に計測するには、ワット チェッカーのようなツールを使用すれば完璧なのですが、そこまで用意できませんでした。さら に、次に紹介する PowerTop での計測も可能でしたが、その計測も忘れていました。いつもの ように、いつの間にか本末転倒モードです。 というわけで体感的には、いままで HDD の環境であれば 90 分間だったものが、120 分間 ほど使えるようになりました。3 割ほど電力消費量が抑えられているようです。これで、忘れて いた計測をしようとしていたところで、悲劇は起こりました...。 突然ファイルシステム崩壊 いつも別れは突然やってくるものです。OSC 2011 Tokyo/Fall 初日の11月 19 日に、突然 ファイルシステム全体が read only になってしまうようになりました。再マウントすることもできず に、再起動すると数分だけ通常のモードで作業することができますが、すぐに read only になっ てしまいます。これでは仕事になりませんので、SSD から HDD に戻しました。 これで僕の2週間ほどの短い SSSD 生活は終わりました。原因は何だったのでしょうか。ひ とつは ReiserFS という SSD の利用をまだ考えられていない頃のファイルシステムを使用した というところだと、僕は思っています。ファイルシステムのパラメータで、discard というものがあ り、これは SSD に対して使用していた領域が不要になったことを明示する trim コマンドを SSD に送信するものです。ext4 にはこのパラメータが用意されていますが、当然 ReiserFS にはあり ません。ということで、今のシステムを使用するほうが「幸せ」になれると見をもって経験しまし た。 PowerTop の利用 SSD に失敗したため、それに代わるものとしてソフト的に何なないかなぁと思ったときに思 い出したのが、日経 Linux の特集や小江戸らぐのオフで matoken さんが紹介した PowerTop という電力管理ツールです。これを su(スーパーユーザ)で実行すると、省電力に つながる次のような方法を教えてくれます。 50 ① STATA リンク電源管理の有効 ② デバイスの電源管理の有効 ③ 無線の省電力モードの有効(使用していないときはオフ) ④ VM の書き戻し間隔を5秒から15秒に これにより、特に何もしていない状態で、12.0W から 9.4W まで28%も抑えることができまし た。稼働時間に換算すると3セルのバッテリーで 0.4 時間ほど延ばすことができました。 さらに、kernel の設定で、CONFIG_PM_ADVANCED_DEBUG をすることにより、実行 中の電源管理の統計情報を得ることができたり、CONFIG_INOTIFY を有効にすることで、 ファイルやディレクトリの変更を検出するポーリング処理をせずにイベントを待つなど、さらに 細かな電力管理することが可能なようです。kernel を触りたくないので。パスします。 また PowerTop は、これは再起動すると元に戻るので、必要に応じて使うことができます。 おわりに PowerTop の 2.0 版にあたる PowerTop2 のベータ版も、配布されています。当初はこちらの ほうが省電力効果が高いかと思って試したのですが、イベントの処理が異なるようで、効果を 素人が把握するのは難しく感じました。 51 さくらの VPS を利用して、 みんなで三代目サーバを構築してみた 羽鳥健太郎 [email protected] はじめに 小江戸らぐのサーバは、現在二代目です。2002年8月から小江戸らぐの活動がはじまり、当 初は東芝 Dynabook PORTEGE620CT でしたが、2005年にU−Buddieという省スペース 型デスクトップ PC に移行して、そのまま運用しています。たいしたトラブルもなく、まる7年も稼 動しているなんて「奇跡の一本松」並です。さすがにディスクのパリティエラーが出るようにな り、時々 fsck をかける程度で、何とかしなければなぁと思っていました。でも、バックアップは とっていないという怖い状況です。ちなみに、Linux Users' Group でありながら、いずれの OS も FreeBSD です。 一方、小江戸らぐでは、毎月オフを開催して、今年は何事もなく淡々と100回を越えることが できました。毎回、自分がやったことや躓いていることを持ち寄って勉強していますが、毎回均 一にネタが揃うわけではありません。この日も宴会まで時間が余りそうだったので、「そうだ、み んなで三代目サーバを構築してみよう」と思いついたのが始まりです。 さくら VPS(仮想専用サーバ) 現在のように自宅サーバでの運用、今風な言い方をすればオンプレミスな環境では、外に いながら思い立ったときにサーバ構築なんて当然できません。そして、みんなで構築するなら ば、当然外部環境ということで、以前から低価格で気になっていた、さくらの VPS に申し込む ところから、みんなでやることにしました。 さくらの VPS で、選択したサービス仕様は次のようになっています。 メモリ ディスク容量 CPU 512MB 20GB ネームサーバ 5 ゾーン ネットワーク 100Mbps 共有回線 IP アドレス 標準 OS グローバル IPv4 アドレス×1 CentOS 5 x86_64 データ転送量 管理者権限 無制限 root 権限付与 月額費用 980 円(2 週間の無料お試し期間あり) 仮想 2 コア 52 インストール作業開始 こういう環境がすぐに利用できるなんて、僕たちはなんて幸せなんだろうと思いつつ、早速 OS のインストールです。通常は、IP アドレス、標準 OS の項があって、その下のrootパスワー ド入力と再入力のテキストボックスがあり、それに root パスワードを入力して、確認ボタンを押 せばすぐにインストールできます。 しかし、ここは小江戸らぐです。いままで FreeBSD で運用してきたので、FreeBSD をカス タム OS インストールのページで選択します。FreeBSD は、8.1 と現行より1つマイナーバー ジョン分古いもので、32bit 版の i386 と 64bit 版の amd64 が用意されていました。 ここからは、見慣れた FreeBSD のインストール画面がはじまります。おおよそのインストー ル手順は次のとおりです。 ① インストーラの起動 いつものアスキーアートの FreeBSD 文字画面 ② 地域とキーボードレイアウトの選択 日本で Japanese106 キーボード ③ Standard インストールの開始 ④ パーティションの設定 ディスク全体を新規パーティションに割当 ⑤ FreeBSD スライスの設定 20GB なので/usr、/var を多めに ⑥ 配布パッケージの選択 Minimal を選択 ⑦ インストールメディアの選択 ネットワークインストールのため FTP 53 ⑧ ネットワークの設定 VPS コントロールパネルにあるネットワーク情報 ⑨ FreeBSD のディスクへの展開 ⑩ サービスの設定 リモートのために ssh 起動設定は Yes ⑪ タイムゾーンの設定 UTC で Yes にして Japan を選択 ⑫ その他 OS の設定 ⑬ ユーザアカウントの設定 とりあえず自分のものを ⑭ root パスワードの設定 ⑮ OS インストールの終了 ご苦労様でした ⑯ VPS の停止と起動 ヽ(^o^)丿 この日は、ssh にて IPV4 アドレスを直接たたいて、VPS サーバと通信できることを確認し て終了しました。みんなで話しながらのサーバ構築は楽しいけれど、よくよく考えると、着替え を見られているような恥ずかしさがあります。恥ずかしくならないぐらいの立派なものがあれば よいのですが、これが本当の自分の実力ですので、タオルなどで隠さず堂々と見せてしまいま した。つぎは成長したねと言われるぐらいになりたいものです(気概だけ)。 その後したこと・できてないこと お試し期間の2週間は、あっという間に過ぎて有料化になりましたが、まだ本格稼働に移れ ない状態です。とりあえずは、これまでしたことをあげておきます。 • koedolug.dyndns.org をさくらの VPS と DynDns.com に設定 • DokuWiki による小江戸らぐの紹介ページの表示 本来の目的である、小江戸らぐサーバの移行の道程からすると、30%ぐらいでしょうか。他 に残っている主な項目をあげておきます。 • rsync による小江戸らぐサーバにあるデータの koedolug.dyndns.org への移行 • Postfix でのメールサーバ構築 • fml8 による ML 構築(国産 ML エンジンにこだわりが...) こうやって書いてしまうと、餅は餅屋に頼みたいなぁと気弱になったりしますが、コミュニティ のサーバなので、頑張っていればどこかできっと助けてくれる神が降りてくると信じてます。 えっと、神でなくてもお手伝いしてくれる方について絶賛募集中です。 おわりに 今回は VPS で構築したわけですが、こういうクラウド環境のようなもので一緒にサーバ構 築を勉強するのも、新しいインストールパーティのように思えて、技術の共有化のツールとして 使えるということを感じました。何より、プラットフォームをすぐに構築できるというか、再インス トールできるので。やり直しやすいというのが安心感を与えます。こういった、Try&Error がで きる環境を利用して、みんなで技術を磨いていきましょう。 54 55 編集後記 この本は埼玉県川越市(小江戸)を中心とした Liunx User Group 小江戸らぐの活動報告集です。ほぼ毎月活動報告会を開催しており、 その内容の幾つかを纏めたものです。報告会ではちょっとしたネタから 濃いネタまで幅広い内容が特徴です。興味があったら是非参加してみ てください。今回の表紙は何時もの SonQ さんが多忙なため萌 0%の 物になってしまいました.売上に響かなければいいのですが…. (matohara) 小江戸らぐ活動報告集 LinuxUser 2011年冬号 発行 2011年 12 月 29 日 著者 おがさわらなるひこ おかの KenichiroMATOHATA 高倉 佑輔 羽鳥 健太郎 表紙 KenichiroMATOHATA 印刷 情報印刷株式会社 みかんの樹事業部 発行・販売 小江戸らぐ(Koedo Linux Users' Group) http://hatochan.dyndns.org/koedolug/ 56