データ - みる会図書館


検索対象: UNIX MAGAZINE 2006年2月号
45件見つかりました。

1. UNIX MAGAZINE 2006年2月号

ト名とバージョン番号を指定して呼び出す ( バージョン 番号を指定しない場合は、肩効なルールセットのなかで もっとも新しいものカ駛われる ) 。 BRMS は、 SOA の実現に重要な BPM にとって、 ビジネスプロセスにビジネスポリシーを柔軟に組み込む 重要な要素と註哉されている。現在、 ILOG JRules は 12 の BPM 製品との接続カ蔀寉認されている。 BPM ツールには、人間と人間、人間とシステム、シ ステムとシステム、データの制御など得意分野がある。 人と人、人とシステム 義、審査、回覧などのモデル、あるいは人間や部 署、グループ、権限のモデル ・作業リストの表示、電子メールによる作業や異常の 通知機能 ・作業の状況を入力する画面などのテンプレートや作 成機能 システムとシステム ・データベースの接続を容易にする機能 ・ CRM や ERP など、ひろく普及しているシステム に接続するコネクタ ・人間の作業によるシステム側の待ちが発生しないた め、一・ヨ殳的に高パフォーマンスの言気 テータ 書類をスキャンした画像データの匍胸 ・電子化した文書への電了署名や言正 BPM のべンダーはそれぞれの得意分野を伸ばすとと もに、他社の得意分野を取り込みつつある。また、 SOA を実現する複数の層をサポートするように機能を拡張し ている。 ー殳に、 SOA を実現するには複数のツールを組み合 わせる。人間による機械的な判断やチェック作業の自動 化には BRMS が威力を発揮する。たとえば、以下のよ うな業務では BPM と BRM の組合せがすでに適用さ れ、隹的な SOA 実現の例となっている。 保険業界での加入審査のチェック、見積り、支払い要 求チェック 金融業界での融資要求チェック ・通信業界での加入要求チェック、サービス変更要求チ ェック 公共機関での補助金要求の適格性チェック UNIX MAGAZ 工 NE 2006.2 NOTICE 複数業界での顧客向けキャンペーン適用チェック、顧 客への推奨商品の選択 SOA の実現においては、自動化とともに監視業務が 重要になる。機械には、どうしてもさまざまな問題が生 じる。性能の劣化や、メモリなどのリソースの増大、入 カデータの間違いなどである。システムの諡見業務を効 率化するには、これらの問題を検知し、視覚化する機能 が必要になる。 このような問題検知については、たとえば以下のう f で BRMS カ坏リ用されている。 ・通イ言業界でのネットワーク内のエラーの主原因推定 ・ネット・オークションでの不正出品の尉甫割出し 今後、システムによる判断や検査の自動化、問題の検 知などでの SOA の利用がいっそう進むと思われる。ま た、 BRMS により、法令や社内規定の遵守 ( いわゆるコ ンプライアンス ) の検査も自動化されていくだろう。こ れらは、たとえば人間による作業の前後で実施するパタ ーンが考えられる。人間がおこなう作業に先立ち、前提 となるデータに不正がないかを調べ、誤りがあれは前の 工程に戻す。作業後には、規定などにかかわる見落しが ないかを調べる。 対象となる作業のなかには、高度なものもある。ーリ として、米国の保険業界のケースを紹介しておこう。米 国では、原則として、保険金支払い要求にかかわる個人 情報にアクセスできるのは担当審査官だけと定められて いる。ただし、アクセス可能な情報の範囲は州ごとに規 定されている。 BRMS を導入すれば、全米共通のルー ルおよび各州ごとのルールを視覚化して管理できるだけ でなく、規定を遡見したアクセスに対しては情報を表示 しないといった措置もとれるようになる。 ☆ 以上、 SOA/BPM と BRMS の組合せについて、そ の概念と実装の両面から説明した。 次回は、 ILOG の視覚化製品を紹介する。 23 ( くにやす・おさむアイロの

2. UNIX MAGAZINE 2006年2月号

図 4 TCP と UDP 窈并用 コックピット プログラム ジョイスティック のテータ 動作の制御 映像表示 姿勢表示 → ← ← UDP TC P UDP UDP ロポットテーモン サーポ制御 各種制御 カメラ画像 センサー センサー / 画像データについては UDP でいいと思うが、そ るのだろうが、現状では UDP だから問題カ起こるという 送もおこなっていないので、帯域がスカスカという点もあ を使う機器はほとんと働いていない。まだビデオ映像の伝 トを介して無線接続という環境である。ほかに無線 LAN 線のノート PC を使っており、ロポットはアクセスポイン ことはない。実験では、有線のデスクトップ・マシンと無 もっとも、現在の実験環境でコマンドの伝送に失敗した トの応若を眼や耳で確認してい旨だ いということである。現在は、人間のオペレータがロポッ マンドがロポットに受信されたことを、 PC 側で把握した ここでいう、、確実 " とは、 PC 側からロポットに送ったコ でもない。 についても、ロボットの動力を確実に切りたいのはいうま ていることを期待してしまう。もちろん、停止のコマンド ンにする段階 ) では、この指示カ実にロポットに伝わっ と、ロボットをアクテイプにする段階 ( サーボの動力をオ はり確実に伝送したい。たとえばプログラムを起動したあ やタイマーなどの動作パラメータの変更の通知などは、や である。前述の WAKEUP や SLEEP 、あるいはサーボ の他の制御については、確実な伝送系を使いたくなったの 150 状況ではない。 確実に通信をおこないたいのなら、 UDP でもコマンド に対して応答を返すというプロトコルにより、相手側の状 態を認識するやりとりを実現できる。しかし、応答がなか ったときの再送処理などを考えると、 UDP にこだわるより も TCP を使うほうがはるかに簡単だ。これらの理由によ り、制御コマンドの伝送については、 UDP ではなく TCP を使うことにした。ただしジョイスティック、画像、セン サーデータなどの伝送は、刳麦も UDP のままである。 この変更により、コックピット・プログラムとロボッ トデーモン・プログラムのあいだのデータ伝送は、 TCP と UDP を併用することになる。ジョイスティック、ビ デオ、センサーデータは UDP で伝送し、動作パラメータ や状態の変更などの指示は TCP でおこなうかたちにした ( 図 4 ) 。トラフィックの量では、圧倒的に UDP が多いこ とになる。また、 TCP のステートフルな通信と UDP のス テートレスな通信を並行しておこなうことになるため、プ ログラムの基本構造にも手を加えなければならない。 この変更に際して、ロボットデーモン・プログラムの号数 を 1 つ上げることにした。 TCP 対応版はロポットデーモ ン 2 号 (rd2) である。これに合わせて、 Windows 側のコ ックピット・プログラムも、コックピット 2 型 ( Cpt2. exe ) という名前にする。 2 号プログラムでは、最初のバージョンでは手をつけなか ったビデオ映像やセンサーデータの伝送も始めるつもりだ。 現状報告 実祭のプログラミング作業は遅れ知末である。例によって、 の原稿を書き上げた時点で、書いた内容がすべて実現されている わけではない。 Windows 側の TCP の実装は中途半端、ロポ ットデーモン側の作り込みもチェックの途中といった状況である。 さらに、別のイ兼変更 ( 次回にとりあげる予定 ) にともなう変更処 理もあるので、ほとんどドンガラガッチャンである ( きちんと計 画を立てていない悪いプロジェクトの見本だ ) 。あげく、歩行練習 などにあてる時間がないという、なんとも情けない状能だ 年末年始の休みのころに、すこしまとまると嬉しいのだが・ ( さかき・まさのり ) UNIX MAGAZ 工 NE 2006.2

3. UNIX MAGAZINE 2006年2月号

特集▽ Linux のプロセス [ 2 ] 図 3 プロセスのアドレス 図 2 schedule() のコンテキストが切り替わる next プロセス prev プロセス schedule(){ schedule(){ 実 p 「 ev プロセスの next プロセスの ローカル変数 の ローカル変数 冫流 p 「 ev prev れ next next context_switch ( ) →・ context_switch ( ) FFFFFFFF カーネルモード スタック スタック領域 カーネル領域 カーネル ァータ領域 スイッチ カーネル テキスト領域 ズタッ C0000000 ユーザーモード スタック ユーザー領域 switch() から戻ってきた値を変数 prev に設疋し、 prev プロセス構造体へのポインタを取得します。 prev だけでなく、 schedule() 内のすべてのローカル 変数の内容が context-switch() の前後で変化します。 2 , 915 行目の第 1 引数が rq ではなく、 this-rq() となって いるのも同様の理由からです。 context-switch() の言田は彳杢します。 if (test—thread—f1ag(TIF—NEED_RESCHED) ) 2923 : できます。 2924 : goto need—resched ; 2925 : } このように、あるプロセスのコンテキストを保存し、別 のプロセスのコンテキストを戻してプロセスの停止と再開 せつかく next プロセスへ切り替わったところですが、 をおこなう処理をプロセス切替えとかコンテキスト切替え、 next プロセスに再スケジュールを促すフラグがセットされ あるいはタスク切替えなどといいます。 ている場合は、 2 , 771 行目から処理をやりなおします。タ 以降では、 Linux カーネルのプロセス切替え処理を説明 イミングによっては、このようなこともあるようです。 します。 、、再スケジュールを促すフラグ " については彳あ杢します。 ・・といいたいところですが、ユーザープロセスの仮想ア プロセスの切替え ドレス空間がどのように使われているかを知らないと、以 降の話は理解できないでしよう。そこで、まずはプロセス すべてのプロセスには、その実行状態を表す固有のデー のアドレス空間について説明します。 タがあります。たとえば、 プロセスの仮想アドレス空間 ・ユーザー領域のテキストやデータセグメントなど、ペー ジフレームのマッピング情報 プロセスのイ反想アドレス空間の内容を図 3 に示します。 ・ CPU のレジスタの内容 仮想アドレス空間は C0000000H の前後で大きく分か ・カーネルモード・スタック れていて、前半の 00000000H から BFFFFFFFH までの 領域を、、ユーザー領域 " と呼びます。一方、 C0000000H か などがあり、これらをまとめてコンテキストと呼びます。 ら FFFFFFFFH のほうは、、カーネル領域 " と呼びます。 ある時点でのプロセスのコンテキストを保存しておく ューザー領域には、プロセスを実行するためのテキスト と、その後、保存されたコンテキストをうまくもとの場所 に戻せば、プロセスの実行をその時点から再開することが 領域やデータ領域、スタック領域があります。通常、ユー ートッ領域寐 テキスト領域 00000000 73 UNIX MAGAZINE 2006.2

4. UNIX MAGAZINE 2006年2月号

連載 / Linux のツールたち 英辞郎 UNIX MAGAZINE 2006.2 14 http://www31.ocn.ne.jpFh-ishida/EBStudi0.html 13 http://openlab ・ ring ・ gr ・ jp/edict/fpw/ 12 http://www.sra.co ・ jp/people/m-kasahr/freepwing/ ると、デフォルトでは C:*Program FiIes*EBStudio フ ラ (ebstd168. exe) を入手して Windows マシンで実行す EBStudio のサイトからバージョン 1.68 のインストー 0 で、とりあえずはフリーライセンスのまま使うことにしま を入手しましよう。私は前方一致検索ができれば十分なの の機能を使いたい人は、登金斗・を支払ってライセンスキー ンデックスしか作成できません。後方一致や条件検索など ンスで利用する場合は、変換後の辞書で前方一致検索のイ ただし、 EBStudio はシェアウェアで、無償のライセ フォーマットに変換できるようです。 dio の最新版 ( バージョン 1.68 ) はデータを EPWING ルです。英辞郎の辞書バージョンにかかわらず、 EBStu- ブック系フォーマットの書籍データを作成するためのツー EBStudi014 は、 EPWING (JIS X 4081 ) または電子 用の変換ツール EBStudio を使うことにしました。 用できる変換ツールはほかにないようなので、 Windows は FreePWING カ駛えません。残念ながら、 UNIX で利 なので、これに対応したスクリプトを誰かカ胙成するまで 私カっている英辞郎 ( 第二版 ) の辞書バージョンは 81 いでしよう。 イト 13 で公開されている英辞郎用のスクリプトを使えばい Perl スクリプトカ必要ですが、電子辞書オープンラボのサ れています。独自形式の書籍データを変換するには専用の 成するソフトウェアで、 Perl のライプラリを中心に構成さ サプセットである JIS X 4081 形式 ) の書籍データを生 WING 形式 ( より正確には、 EPWING バージョン 1 の いうツールで変換できるようです。 FreePWING は、 EP- バージョン 79 以前の辞書データは、 FreePWING12 と れたため、その前後で変換方法が異なります。 があります。バージョン 80 で辞書データの形式カ畯更さ 独自形式なので、 EPWING フォーマットに変換する必要 バージョンが 1 つ上がるそうです。英辞郎の辞書データは れば、、、原則としてい泉項目数が 1 万以上増えたとき " に ン " という概念があります。 EDP のサイトの Q & A によ 英辞郎は日々成長を続ける英和辞典で、、、辞書バージョ ォルダにプログラムなどがインストールされます。このフ ォルダには、拡張子が、、 . ebs " のファイルがいくつかありま す。これらは、ツ作業環境定義ファイル " と呼ばれる辞書デ ータごとの設定ファイルです。英辞郎に関する設定ファイ ルもいくつかありましたが、 eijiro-cdr. ebs という設疋フ ァイルがもっとも新しいようなので、中身を以下のように 書き換えました ( 行頭の数字は行番号です ) 。 1 2 50 52 54 58 InPath=h : *eij iro* OutPath=e : *tmp*eij iro* Source=$(BASE)*Eijir081. txt ; 英辞郎 ;_;EIJIRO; Source=$ (BASE) *WAEIJ181. TXT ; ;EIJIRO; Source=$ (BASE) *RYAKU81. TXT ; ;EIJIRO; ( 55 ~ 56 行目は削除 ) Source=$(BASE)*REIJ181. txt ; ;EIJIRO; 1 行目の InPath は、英辞郎の辞書データ (). TXT) が 置かれているパスです。私の場合、内蔵 DVD マルチドラ イプは Windows XP の H: ドライプとして認識されるの で、そこに英辞郎の CD-ROM を入れると、辞書データは h : ¥ eijir 。¥というフォルダにあることになります。 2 行目の OutPath には、変換後の辞書データの出力先 フォルダのパスを指定します。出力先フォルダは、あらか じめ作成しておく必要があります。 50 ~ 56 行目の、、 Source=" には、辞書データのファイル 名を指定します ( 、、 $(BASE)" は、 1 行目の lnpath で指 定したフォルダに対応します ) 。英辞郎の場合は、ファイル 名に辞書データのバージョン番号が含まれるので、使って いる辞書バージョンに合わせて変更しましよう。 設疋ファイルを修正したら、英辞郎の CD-ROM をド ライプに挿入して EBStudio を起動します。ファイルメ ニューから、、開く " を選択し、さきほと畯更した言定ファイ ル (eijiro-cdr. ebs) を指定すると、 EBStudio の画面は図 4 のようになります。この画面の左上にある [ ! ] ボタンを クリックすると変換が始まり、作業ログカ哂面左下に表示 されます。私の環境では、この変換処理に約 3 分かかりま 0 変換が終了したら、出力先のフォルダ ( 上記の例では e:*tmp*eijiro) ごと FC4 にコピーします ( 以下の例で は、 /ext/dict/eijiro ディレクトリにコピーしたものとし ます ) 。 とりあえずこれで使えるようになるはずですが、辞書デ ータのサイズを調べると約 516MB もあります。そこで、 157

5. UNIX MAGAZINE 2006年2月号

連載 / Linux のツールたち 32 図 2 EB ライブラリの RPM パッケージ作成とインストール (FC4) [ て 00t@fc4 ~ ] # cd /usr/src/redhat/SPECS Croot@fc4 SPECS] # rpmbuild -bb eb. spec Executing(%prep) : /bin/sh —e /var/tmp/rpm¯tmp. 35581 + /usr/bin/bzip2 —dc /usr/src/redhat/SOURCES/eb—4.2. tar. b22 + rm —rf eb-4.2 + cd /usr/src/redhat/BUILD + unset DISPLAY export LANG + LANG=C cd /usr/src/redhat/BUILD + umask 022 書き込み中 : /usr/src/redhat/RPMS/i386/eb—debuginf0—4.2ー2. i386. rpm 書き込み中 : /usr/src/redhat/RPMS/i386/ebdev—4.2ー2. i386. rpm 書き込み中 : /usr/src/redhat/RPMS/i386/eb—4.2ー2. i386. rpm + cd /usr/src/redhat/BU 工 LD + umask 022 Executing(%c1ean) : /bin/sh -e /var/tmp/rpm-tmp. 55565 + cd eb ー 4 . 2 十 exit 0 Croot@fc4 SPECS] # Preparing ・ 1 : eb Cr00t@fc4 SPECS] # [r00t@fc4 SPECS] # Preparing ・ 1 : ebdev [root@fc4 SPECS] # ■ rpm rpm —Uvh —Uvh . /RPMS/i386/eb—4.2ー2. i386 . rpm . /RPMS/i386/ebdev-4.2ー2. i386. rpm します。ここでは /ext/dict というディレクトリを新た に作り、そこに 2 つの辞書 CD ー ROM のデータを置くこ とにします。 なお、以降では FC4 での実行例を示しますが、 SUSE 100 の場合もまったく同じです。 辞・典・盤 Pro 辞・典・盤 Pro に含まれる辞書データは EPWING 形式 なので、上でインストールした eblook や lookup を使う のなら、辞書データのフォーマット変換は不要です。辞書 CD-ROM を挿入すると、 /media/cdrom ディレクトリ に自動的にマウントされます。そのなかから、下記のファ イルやディレクトリ 10 を HDD 上の適当なディレクトリに コピーします。 ・ catalogs ファイル 11 10 その他のディレクトリには、 Windows 用の閲覧ソフトウェアなど力取め られています。 11 ファイル名やディレクトリ名では、大文字 / 小文字の区別はありません。 UNIX MAGAZ 工 NE 2006.2 EP 、 VING 辞書の、、カタログファイル " です。このファ イルに、辞書データのファイル構成などの情報が書かれ ています。 ・ koujien ディレクトリ 広辞苑の辞書データが収められています。 ・ readers ディレクトリ リーダーズ英和辞典の辞書データカ刈又められています。 catalogs ファイルには各辞書のパス名などカ第当されて いるので、これらのファイルやディレクトリの相対的な位 置関係を変えてはいけません。同様の理由により、片方の 辞書だけをコピーするわけにもいきません ( 特定の辞書だ けをコピーしたい場合は、 ebrefile コマンドを利用します ) 。 辞・典・盤 Pro に含まれる辞書データのサイズは、広辞 苑とリーダーズ英和辞典を合わせて約 265MB です。最近 は、ノート PC にも数十 GB クラスの HDD が入っている ので、 1 枚の CD-ROM 程度のデータなら微々たるもので しよう。ただ、それでもデータ容量は小さいに越したこと はないので、 EB ライプラリに含まれる /usr/bin/ebzip 155

6. UNIX MAGAZINE 2006年2月号

0 Linux のツールたち 横士鷓甦 電子辞書の利用 CD-ROM 版の辞書を使う 有償 / 無賞にかかわらず、コンピュータ上ではさまざまな 国語辞典や外国語辞典、百科事典などカ坏リ用できます。私 は英語のドキュメントを読み書きする機会がけっこうあり ますが、辞書カらないほと能ではないので、英和 / 和英 辞典は手放せません。 電子辞書の利用形態は、辞書データが収められた専用 ハードウェア ( いわゆる電子辞書 ) を用いる方法と、 CD- ROM などで提供される辞書データを PC 上のソフトウェ アで閲覧する方法の 2 種類に大別できます。前者は小型・ 軽量であり、専用設計なので起動も速いというメリットが あります。しかし、 PC で文章を読み書きしている最中に 辞書を引く場合には、 PC 上ですべての作業ができる点で 後者のほうが重宝します。 また、最近は辞書の検索サービスを無賞で提供する Web サイトも増えています。これらのサービスでは、 web プラ ウザさえあれは特別なソフトウェアは不要なので、利用し ている人も多いようです。とはいえ、いつもかならずイン ターネットに接続できるとはかぎりません。そういう場合 には、手許 ( ローカル (C) に辞書データがあったほうカ硬 利でしよう。 そこで、今回は Fedora Core 4 ( 以下、 FC4) と SUSE Linux 10.0 OSS 版 ( 以下、 SUSEIOO) で電子辞書を利 用する方法を紹介します。 PC では、さまざまなフォーマットの辞書データカリ用 できます。規格化されたものとしては、 EPWING コンソ ーシアム 1 カ甘是唱する EPWING や、ソニーが開発した電 1 http://www.epwing ・ or. jp/ UNIX MAGAZINE 2006 . 2 子プック (EB) 規格をベースとする EBXA など ( 以下、 、電子プック系フォーマット " と略 ) カ表的です。 UNIX の世界ではどちらも扱えますが、私自身は EPWING 形式 の辞書しカっていないため、今回はこの規格の辞書を使 います。 このほかにも独自フォーマットの辞書は各種あります が、これらに付属する閲覧ソフトウェアは Windows 用 がほとんどで、 UNIX 用のアプリケーションが含まれてい ることはめったにありません。したがって、 UNIX 上でこ れらの辞書を利用する場合は、 ( 可能であれは ) 辞書データ のフォーマットを EPWING に変換することになります。 2 3 今回とりあげる辞書は以下の 2 つです。 ・辞・典・盤 Pro アスキーから販売されている辞書 CD-ROM2 で、広辞 苑 ( 第四版 ) とリーダーズ英和辞典がセットになってい ます。辞書フォーマットは EPWING に準拠していま す。 ・英辞郎 ( 第二版 ) EDP (Electronic Dictionary Project) という翻訳 者グループカ騙纂した英和 / 和英辞典です。英辞郎のサ イト 3 から辞書データを購入することもできますが、今 回はアルク 4 カ刑行している CD-ROM 版を使います。 辞書フォーマットは独自形式です。 Linux 用の閲覧ソフ トウェア rdic5 も公開されていますが、オリジナルの辞 書データカそのまま使えるわけではなさそうです。そこ で、いったん EPWING フォーマットに変換し、辞・典・ http://www.ascii ・ co ・ jp/pb/jitenban/htm/pro. htm http://www.eijiro ・ jp/ 4 http://www.alc.co.jp/ 5 http://www.yasgursfarm.us/rdic/ 151

7. UNIX MAGAZINE 2006年2月号

連載 / Linux のツールたち [root@fc4 ~ ] # du -s /media/cdrom/* 図 3 ebzip コマンドによる辞書データの圧縮 2 3 /media/cdrom/catalogs ,/media,/cdrom,/icon . iCO 115312 /media/cdrom/kouj ien 156206 /media/cdrom/readers /media/cdrom/we 1509 /media/cdrom/win95 1221 [r00t@fc4 ~ ] # mkdir —p /ext/dict/jitenban-pro [r00t@fc4 ~ ] # ebzip ——level 5 ——keep -—output-directory /ext/dict/jitenban-pro /media/cdrom = > /media/cdrom/kouj ien/data/honmon を圧縮く = /ext/dict/j itenban—pro/kouj ien/data/honmon. ebz に出力 1 . 8 % 処理済み ( 2097152 / 116801536 バイト ) 3 . 6 % 処理済み ( 4194304 / 116801536 バイト ) = > /media/cdrom/readers/gaij i/gai48f00 を圧縮く = /ext/dict/j itenban—pro/readers/gaij i/gai48f00. ebz に出力 [root@fc4 ~ ] # du —s /ext/dict/jitenban-pro/* 完了 ( 2048 / 2048 バイト ) /ext/dict/jitenban-pro/catalogs に出力 = > /media/cdrom/catalogs をコピーく = 86016 ー > 16763 バイト ( 19 . 5 % ) 完了 ( 86016 / 86016 バイト ) 4 /ext/dict/j itenban—pro/catalogs 37904 /ext/dict/j itenban—pro/kouj ien /ext/dict/j itenban—pro/readers 43996 [root@fc4 ~ ] # ■ コマンドで圧縮することにします。 ebzip コマンドを実行するときは、 catalogs ファイルが 置かれているディレクトリを引数として指定します ( 引数 を省略すると、カレント・ディレクトリに catalogs ファ イルがあるとみなされます ) 。すると、 catalogs ファイル に書かれた構成情報にもとづき、圧縮した辞書データをカ レント・ディレクトリ以下に出力したあと、圧縮前のデー タファイルを削除します ( 圧縮されたファイルは、、、ファイ ル名 . ebz " という名前になります ) 。 その他のおもなオプションを以下に記します。 ・——level れれ 7 〃 圧縮率 (num) を 0 ~ 5 の 6 段階で指定します。直が 大きいほど圧縮率カ皜くなります。 —output—directory dir 圧縮後のファイルを置くディレクトリを変更する場合に 指定します。 —keep 圧縮前のファイルを削除したくない場合に推定します。 156 たとえば、 /ext/dict/jitenban-pro ディレクトリを作 成し、そこに CD-ROM の辞書データを最大限圧縮してコ ピーするには、 ebzip コマンドを図 3 のように実行します。 私の環境 (ThinkPad T43 と内蔵 DVD マルチドライ プ ) では、圧縮にかかった時間は約 2 分 15 秒でした。 du コマンドの実行結果から分かるように、圧縮後のサイズは 約 80MB で、圧縮前の 1 / 3 以下です ( 辞書データによっ ては、圧縮率があまり高くない場合もあります ) 。ただし、 ebzip による圧縮は EPWING 規格の圧縮方法とは異なる ため、圧縮後の辞書データは EB ライプラリでしかアクセ スできません。 EB ライプラリを使わない EPWING 辞 書の閲覧ソフトウェアでアクセスしたいときは、 ebunzip コマンドで圧縮データをもとに戻す必要があります。 説明は省略しますが、 EB ライプラリの ebrefile コマ ンドを使うと、辞・典・盤 pr 。のように複数の辞書が収め られたパッケージから特定の辞書だけを抜き出すことがで きます。 HDD の空き容量不足などにより、必要な辞書だ けを使いたい場合に利用するといいでしよう。 UNIX MAGAZINE 2006 . 2

8. UNIX MAGAZINE 2006年2月号

連載 / Linux のツールたち 図 4 EBStudio ファイル旧を集作 ) れ ' 泗ン ( Q) プ ( 印 書籍 曰 c ah を åh : i ⅳ Ei ⅳ 1 取を 団◆和英辞郎 回◆略語郎 日◆僻郎 eblook> ロ たとえば辞・典・盤 Pr 。のリーダーズ英和辞典を引く場 合には、 catalogs ファイルがあるディレクトリを book コ マンドで指定します。さらに、辞・典・盤 Pro には、、サプ ブック " として 2 つの辞書が含まれるので、 list コマンド ですべてのサプブックを表示してから、 select コマンドで 利用したいサプブックの番号を指定します。 eblook> book /ext/dict/j itenban—pro eblook> list 1 ・ koujien 広辞苑第四版 2. readers 研究社リーダーズ英和辞典 eblook> select 2 eblook> 目 電子書籍作成の実行 これで、リーダーズ英和辞典を参照する準備カいまし ebzip コマンドで圧縮することにします。 た。この状態で、、 list " という単語を検索・表示させるには、 辞・典・盤 Pr 。の場合とは違い、圧縮後のファイルを置く 図 5 のようにします。 search コマンドでキーワードⅱ st ディレクトリは圧縮前のファイルと同じ /ext/dict/eijiro を指定すると、マッチする辞書データのエントリが表示さ でかまいません。圧縮前のデータを保持する必要もないの れます。この例では 5 つのエントリがあるので、 content で、 ebzip コマンドを次のように実行します。 コマンドでいずれか 1 つの番号を指定すれば、それに対応 するエントリの内容が表示されます ( マッチするエントリ cd /ext/dict/eijiro ebzip ——1eve1 5 が 1 つしかなくても、内容を表示するには content コマン ドを予する必要があります ) 。 私の環境では、圧縮に約 1 分 30 秒かかりました。圧縮 図 5 からも分かるように、とりあえず単語の未を調べ 後のデータサイズは約 140MB で、辞・典・盤 Pr 。と同じ ることはできますが、辞書データに含まれる発音記号など く 1 / 3 以下になっています。 の外字は表示されないので、見やすいとはいえません。ま た、これまでの操作で気づいた人もいると思いますが、 1 回に検索できるのは 1 つのサプブックだけです。したがっ て、複数の辞書を対象とした、いわゆる、、串刺し検索 " はお こなえません。 串刺し検索はともかく、 eblook は一的な端末上で動作 する CUI ツールなので、ビットマップの外字が表示でき ないのは致し方ないところでしよう。 lookup lookup で辞書を検索するには、辞書データへのアクセ ス方法などの設定を ~/. emacs に追加します。今回のよう に複数の辞書パッケージを利用する場合、 ~ /. emacs には 図 6 の各行をします。 最初の 3 行は lookup. el をロードするための設疋で、 4 行目以降で辞書パッケージへの糸鰊寸パスを指定しています。 パスの前にあるキーワード、、 ndeb" は、、、 eblook を利用し ノ e 新ⅳ 0 ・ ( d 「 b 、 - EBStudio 英郎 Ctr ①②④ トルルト いン 先 使い方 私は Emacs と lookup の組合せで辞書を利用していま すが、せつかく eblook もインストールしたので、それぞ れの簡単な使い方を説明します。詳細は、各ツールの開発 サイトや、 RPM パッケージに付属する lnfo ファイルな どをこ覧ください。 eblook eblook を引数なしで実行すると、以下のように、、、書籍 ( 辞書 ) のディレクトリを指定しなさい " という意味のメッ セージとともに、サプコマンドの入力を促すプロンプトが 表示されます。 [root@fc4 ~ ] # eblook Warning : you should specify a bOOk directory first 158 UN 工 X MAGAZINE 2006 . 2

9. UNIX MAGAZINE 2006年2月号

サーボの乍時間 さて、 3D CAD とは無縁な我が家の制御ソフトウェア の話の続きである。前回までは、ジョイスティックやボタ ンによってサーポを操作する仕組みを説明してきた。 Speecys ロボットのサーボを制御する際には、角度指定 とともに、動作時間を指定することができる。たとえば 90 度の回転をおこなう場合、時間として 0 を指定すればサー ポは最高速度で回転し、 100 を指定すれば 1 秒かけてゆ っくり回転する ( 時間の指定は 10ms 単位 ) 。サーボの角 度は、現在の位置から 00 度という相対的な推定ではなく、 乍範囲 ( 士 120 度 ) 中の絶対角度を指定する。そのため サーボ側では、現在の角度値と指定された値の差を求めて 動作角度とし、指定された時間でこの角度ぶん回転するよ うに速度を調整している。つまり、同じ動作時間を指定し た場合でも、動作角度が異なればサーボの回転速度は変わ ることになる。 サーボの動作時間カ畯わると、ロボットの動きも変イけ る。サーボをゆっくり動かせば、ロポットの動きは緩漫に なる。速く動かすと、ギクシャクした感じになる。 現在の制御システムでは、プログラムが各サーボに動作 コマンドを送るのは、 UDP でジョイスティック・データ を受け取ったときだ。ネットワークから受信した行をトー クンに分解し、ジョイスティック・データを収めたコマン ドであれば、ジョイスティックの値やボタンのた態に応じ て、各サーポを操作するためのデータが算出され、サーボ にコマンドカ芍医られる。 たとえばジョイスティックをゆっくりと動かす、あるい は股関節を制御するボタンを押し続けるといった操作をし た場合、関節のサーポは、操作をおこなっているあいだは 動き続けることになる。このとき、サーポを滑らかに動か すための動作時間は明らかだろう。サーポ宛に操作コマン ドが送られる時間間隔と、サーボの動作時間を同じにすれ ばいい。 動作時間をこれより短くすると、乍したあと、次のコマ ンドが送られてくるまでサーポは止まって待っことになる。 つまり、連続した動きではなく断辛翹」作になるため、動き がギクシャクする。逆に動作時間を長くしすぎると、次の コマンドを受け取ったときに、まだ以前の動作カ院了して UNIX MAGAZINE 2006.2 連載 / ロボットのある暮らし 図 1 タイマー言とサーボの サーボの動作時間が短い場合、断続的な動きになる コマンド 時間 サーボの動作 サーボの動作時間とコマンドの間隔が同じなら、 サーボの動きは連続的なものになる コマンド 時間 サーボの動作 サーボの動作時間が長いと、次のコマンドまでに 動作が完了しない コマンド 時間 サーボの動作 に合うようにサーボの動 ( 寺間を定すれば、 PC 側がどの コックピット・プログラムから送られたインターノヾル値 述 ) でロポットに送るようにした。 参考データとして、この時間間隔を TIMER コマンド ( 後 始時と、インターバル・タイマーの定を変更したときに、 を使って変更することができる。そしてロポットの制御開 ている。この時間間隔は、設疋用のダイアログ・ボックス イック・データを読み出して、 UDP でコマンドを送信し タイマーを使って関数を呼び出し、そのなかでジョイステ PC 側のコックピット・プログラムは、インターバル・ ド受信間隔とサーホ助作時間を同じにすることができる。 る。ロポット側がこのサイクルを認識していれば、コマン 側がどのようなサイクルでコマンドを送るかで決まってく UDP で指示を受け取る間隔である。そしてこれは、 PC 単純に考えると、サーボにコマンドを送る時間間隔は、 追従できないことになる ( 図 1 ) 。 いない。つまりサーボの動作が遅れ、結果的に動イ信旨示に 145

10. UNIX MAGAZINE 2006年2月号

図 2 タイマーとサーボの重が旨示のダイアログ・ホックス 制御用インターバルタイマー マインタバルタイマ、動作 タイマー誾隔 月殳関節と蹊 タイミングの設定 サーボ動寺間 「タイマ、一問隔と同し 18 mS ような時間サイクルでコマンドを送信したとしても、ロポ ット側は滑らかに動くだろうと思っていた。しかし、実際 にはなかなかうまくいかない。理由の 1 つは、 Windows のインターバル・タイマーによるコマンド送イ言処理の時間 精度カ皜くないことのようだ。コマンド送信間隔とサーポ 動作時間を同じに設定しても、サーボの動きはギクシャク としている。つまり、サーボ用のコマンド送信間隔と、サ ーポ動作時間が一致していない ( コマンド送信間隔が長す ぎる ) のである。 思惑力れたので、 Windows 側のインターバル・タイ マーの時間間隔とサーボの動作時間を、別々に設定できる ようにプログラムを修正した。コックピット・プログラム のダイアログ・ボックスを変更し、タイマー時間間隔を通 知する TIMER コマンドとは別に、サーボの動作パラメー タを指示する SERVO コマンドを制御プロトコルに追加 したのである ( 図 2 ) 。 SERVO コマンドでは、サーボの動作時間 ( ミリ秒単位 ) と、股関節とくるぶしの動作単位角度 ( 度単位 ) を指定す る。動作単位とは、ハットスイッチによる関節操作の際に、 1 回の JOY コマンドの受信について、関節を何度動かすか という指定である。ボタンデータを 1 回受信するごとに の角度だけ関節を動かすので、この値を大きくすると、ノ、 ットスイッチで操作される股関節とくるぶしの動作が速く なる。この値は、インターバル・タイマーによるコマンド 週言間隔に合わせて調整することになる。 各種制御コマンド 12 月号ですこし触れたが、コックピット・プログラムは ジョイスティック・データだけでなく、いくつかの制御コ マンドも送信している。現時点では、以下のコマンドを使 っている。 146 インターバル・タイマーの設定 ところで、コマンドを送る時間間隔の定や、それにともなう サーホ動作時間の変更などは、そんなに頻繁におこなわなければ ならないものなのだろうか。 じつはこれは、プログラムをテストしたりデバッグする都合で ある。 PC 側からコマンドを送り、それに文す - るロポットの動作 をじっくり観察したい場合や、プログラムをデバッグするために 各種メッセージを表示させる場合などは、 1 秒に数回のコマンド 週言でも多すぎる。必要に応じて、 1 秒もしくは少に 1 回程度 にしたい。当初は毎回プログラムをリコンパイルしていたのだが、 効率カいので、メニューで変更できるようにした。したがって、 プログラムの作成や調整カ絲冬れば、この機能はほとんと不要にな るだろう。 ・ WAKEUP ロボットデーモン・プログラムか起動した段階では、サ ーボの動力はオフ ( トルクが発生していない状態 ) にな っている。ロポットは WAKEUP コマンドを受信する とサーホ助力をオンにし、初期姿勢になる。コックピッ ト・プログラムは、このコマンドを j 言したあと、ジョ イスティック・データ ( JOY コマンド ) の定期的な送信 を開始する。 ・ SLEEP このコマンドを受け取ると、ロボットは全サーボの動力 をオフにする。コックピット・プログラムは、このコマ ンドを週言したあと、 JOY コマンドの週言を停止する。 ・ QUIT ロポット側のプログラムを終了させる。サーボのトルク の制御はしないので、トルクがオンの場合は、その光態 を維持する。なお、コックピット・プログラムは終了し ない。 ・ TIMER コックピット・プログラムは、設定用のダイアログ・ポッ クスを使って、ジョイスティック・データを送る時間間 隔を変更できる。この時間間隔カ嗄更されたときには、 TIMER コマンドを使って新しい時間間隔をロポットに 通知する。 ・ SERVO ジョイスティック・コマンドを受信し、サーポを動作させ る際に、どれだけの時間で必要な回転操作を完了するか を示す。つまり、サーボの動作速度を指定することにな る。ハットスイッチによる股関節の動きの単位角度 ( ジ UNIX MAGAZINE 2006.2