図 - みる会図書館


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

1. UNIX MAGAZINE 2006年2月号

特集 Mac OS X のアプリケーション開発 図 4 —ß寺オブジェクトを返すメソッド —(NSDictionary*)dictionaryRepresentation { [ [NSDictionary a110C ] NSDictionary* dict init] ; [dict setObject : title forKey: @"title"] ; [dict setObject: —URL forKey: @"URL"] ; return dict ; 図 5 一時オブジェクトを返すメソッド (AutoReleasePool を禾 ) ー (NSDictionary*) dictionaryRepresentation { [ [NSDictionary a110C ] NSDictionary* dict init] ; [dict setObject : title forKey: @"title"] ; Cdict setObj ect : —URL forKey : @"URL"] ; return [dict autorelease] ; ェクトかを知ることができないため、どうすればよいかが 分かりません。一時的に生成されたインスタンスなら re- lease してしまえばいいのですが、メンバーを release し てしまうとメモリエラーにつながります。 この問題に対して、 Cocoa では AutoReleasePooI と いう仕組みを用意しています。図 5 のプログラムは、この 仕組みを用いて図 4 を書き直したものです。 こうすれば、戻り値は AutoReleasePool に登録され たあとで返されます。 AutoReleasePooI は、一定の区切 り (GUI アプリケーションの場合は 1 イベント処理の終 了時 ) で、登録されたインスタンス宛に release を送信し ます。これによって、戻り値に用いたインスタンスを呼出 し側で release しなくてもすむようになったわけです。 NSDictionary に用意されている短縮メソッドを使え ば、図 5 のコードを図 6 のように書き直すこともできます。 Cocoa での慣例として、 init で始まるメソッド以外の 戻り値オプジェクトは、メンバーまたは autorelease され た一時インスタンスということになっています。したがっ て、自分で init/retain したもの以外は release する必要 はありません。 メンバー変数の後始末 インスタンスの解放はできるようになりましたが、メン バー変数として init したインスタンスの release メッセー ジをどこで発行するかという問題カっています。 自分の参照カウンタがいつ 0 になったかが分かれば、そ の時点で自分が参照しているメンバー・インスタンスに re- UNIX MAGAZINE 2006 . 2 図 6 一時オプジェクトを返すメソッド ( 完成版 ) しれませんが、 Objective-C では慣用句として使われてい なります。ほかの言語の感覚からいうと気持ちが悪いかも 代入していますが、これは自分自身への代入ということに 自身を表すレシーバです。、、 [super init]" の結果を self に self はメソッド内でつねに定義されている変数で、自分 おこない、自分自身を返しています。 を呼び出して各種の初期化 (-URL と -title のセット ) を 図 8 の initWithURL メソッドでは、親クラスの init バで、 init 系メソッドでよく利用されます。 super は親クラスのメソッドの起動に使う特殊なレシー 図 7 に、 super というレシーバカ咄てきました。 super 、 self なかでおこなうことができます ( 図 7 ) 。 れを利用して、メンバー変数の解放は dealloc メソッドの たとき、自分自身に dealloc メッセージを送信します。 です。 Cocoa のオプジェクトは、参照カウンタが 0 になっ これを実現するためのメッセージが dealloc メッセージ lease を送信し、きちんと参照を破棄することができます。 return se1f ; [self setTit1e : @" ()o Tit1e) " ] ; URL = CURL retain] , self Csuper init] , ー (id) initWithURL : (NSURL*) URL { 図 8 init メソッドの例 [super dealloc] ; [ URL release] ; [—title release] ; —(void)dealloc { 図 7 dealloc メソッド窈列 return dict ; [dict setObject : —URL forKey: @"URL"] ; title forKey: @"title"] , [dict setObJect : dictionary] ; NSDictionary* dict [NSDictionary ー (NSDictionary*) dictionaryRepresentation { Objective-C のすべてのインスタンスは、 NSObject* id 型、 nil ます。 27

2. UNIX MAGAZINE 2006年2月号

図 5 リモートホストから DNS サーバーの制を許す言 (named. conf) key " rndc-key" { a190r 土む hm hmac-md5 ー secret " a51ZezYVD086VQPMUMxXwg= であることを未しています。 という設疋では、 DNS サーノヾーのネットワーク・インター フェイスのうち、 IP アドレスが 192.168.10.1 、ポート番 key ステートメントには、 rndc-confgen が出力した内 容をそのままコピーします。 号が 953 のものを使って rndc プログラムと通信します。 controls ステートメントでは、 rndc 用の通信ポート allow の remote-address には、 rndc プログラムの実 と、 rndc の実行を許すホストを以下の書式で指定します。 行を許可するホストの IP アドレスを指定します。図 5 の、 リモートホストから rndc プログラムを実行するときは、 a110W { 192 .168.10.100 ; } rndc-confgen カ咄力した内容を変える必要があります。 では、 IP アドレスが 192.168.10.100 のホストからの rndc controls { のリクエストだけを受け付けます。 inet address keys のん e 記には認証方式の識別子を指定します。 [port 〃 07 、 t ーれ社 mbe 司 a110W {remote-address ; DNS サーバーは、ここで指定したん e 記と一致する key keys { ん e リー記 ; ステートメントを探し、 rndc のリクエストの認証方式を決 定します。図 5 では、 address と 07 、た nun 訪 er は、 DNS サーバーが rndc の keys { "rndc-key" ; } リクエストを受け付ける IP アドレスと TCP のポート番 号です。 port の指定を省略すると 953 番のポートカ駛わ と指定しているので、図 5 の named. conf にある唯 ーの れます。 key ステートメント、 DNS サーバーがいくつかのネットワークに接続してい key "rndc—key" { て、 IP アドレスを複数もっている場合があります。そのよ うなときは、 address に、、 *"(IPv4) や、、 ::"(IPv6) と書く ことで、すべてのネットワーク・インターフェイスで rndc で指定された方式で認証をおこないます。 のリクエストを受け付けられます。逆に、複数のネットワ rndc. conf の言又疋 ーク・インターフェイスをもっホストで、特定の IP アド 次に、 rndc. conf ファイルについて説明しましよう。図 レスだけで rndc を受け付けるようにしたければ、 address 6 は、図 4 に示したホスト A の rndc. conf の例です。 にそのアドレスを言してください。 の設疋ファイルには、 図 5 の、 ・ key ステートメント inet 192 .168 . 10.1 port 953 認証方式の情報 controls { inet 192 .168 . 10 . 1 port 953 a110W { 192 .168 . 10 .100 ー } keys { rndc 用のポート指定と、通 { を許可するアドレス " rndc-key' options directory "/etc/namedb'l ・ north.example.com ソーンの 管理のための設定 zone "north . example . type master; file "north. example . com . 100 UNIX MAGAZINE 2006 . 2

3. UNIX MAGAZINE 2006年2月号

図 26 コネクションを張る Wind ow 戻る進む ホーム 2 Action: goForward Action: goBack Action: takeURLStringFrom 3 ー 3 3 を ) ( ) ( 0 」 MainMenu. nib English) lnstances 要 C な 55e5 ー lma 5 ー Sounds Action: goHome ib Outlet: URLField 「ⅱざ 5 Owner 1 1 「汁 R 脅 & 00 d を MainMen Outlet: webView Window UMMainContr... 図 27 UMMainControIIer. m -(IBAction)goHome : (id) sender { [_URLFieId setStringVaIue : @"http: //www. ascii ・ co ・ jp/books/magazines/unix. html"] ; [—webView takeStringURLFrom : -URLFie1d] ; ー (void) awakeFromNib { [self goHome] ; 図 28 ビルド里の操作 ビルド ビルドと実行 れ、、、ビルドとデバッグ " を選択するとビルド後にデバッグ がおこなえます。 今回紹介した程度のコード量なら、エラーカ起きること はほとんどないと思いますが、 Xcode のユーザー・インタ ーフェイスには、どこでもエデイタが起動できるという特 徴があります。たとえば、ビルドに失敗したときのエラー ウインドウでエラーメッセージをクリックすると、同じウ インドウ内で該当箇所のコードを開いて修正できるように なります。 う。これは、ツールバーの、、ビルド " アイコンを押せは凋始 、、ビルドと実行 " を選び、最初に示した図 14 のようなウィ されます。ビルド後、すぐに実行したい場合はビルドと実 ンドウが表示されれは完成です。 行アイコンを押し続けるか、右クリックすれば ( 2 ボタン テ、 / ヾッカ 以上のマウスを利用している場合 ) 、ビルドに関連する操作 のメニューを表示させることができます ( 図 28 ) 。 デバッガを起動するには、、、ビルドとデバッグ " を選ぶ こで、、ビルドと実行 " を選択するとビルド後に実行さ か、メニューから、、デバッグ " →、、デバッガ " を選ぶと表示 気ビルドと実行 da 朝 0 れ . fr 詹 1 9 ・・に X の実行可能ファイルを実行 m 9 ーに X 実行可能ファイルをデパッグ ビルドとデバッグ ( メニューから選択 ) ′をビルドとデバッグ マ又列 36 UN 工 X MAGAZINE 2006 . 2

4. UNIX MAGAZINE 2006年2月号

特集 Mac OS X のアプリケーション開発 図 20 UMMainControlIer. h #import く Cocoa/Cocoa. h> #import く Webkit/Webkit . h> ます。 @end ー (void) awakeFromNib ; —(IBAction)goHome: (id) sender; IBOut1et NSTextFie1d* _URLFie1d; IBOut1et WebView* _webView ; @interface UMMainContr011er : NSObj ect { UNIX MAGAZINE 2006.2 ここで lnterface Builder での作業に戻り、これらのメ の頭文字をとったものです ) 。 を解釈しやすくするためです ()B は、 lnterface Builder このように言するのは、 lnterface BuiIder がヘッダ 置き換えられます。 理の過程で、 IBOutlet は空白に、 IBAction は void に 上では特別な意味はありません。プリプロセッサによる処 IBOutIet" と、、 IBAction" は初登場ですが、プログラム イタ ( 図 21 ) が起動されるので、下線部を追加します ) 。 ます ( デフォルトの設定ではファイルの作成と同時にエデ UMMainControIler. h には、図 20 のように記述し 同時に *. h ファイルも作成されます ) 。 した ( 、 . h も同時に作成する " がチェックされている場合、 ます。今回は、 UMMainControIIer. rn という名前にしま ューの、、新規ファイル " で、 Objective-C class" を選択し コントローラを定義します。 Xcode に戻り、ファイルメニ ビューカイ乍成できたら、次はビューをコントロールする コードを書く れば、自由にレイアウトすることができます。 から、、 Guides" の、、 Disable Aqua GuideIines" を選択す そのような補助は不要だという人は、 Layout メニュー ようになっています。 線に合わせていけば、自然にきれいなウインドウカれる を作成するためのもので、 lnterface Builder でこの補助 terface Guideline に沿ったユーザー・インターフェイス ずです。これは、 Apple が定義している Aqua User ln- ドラッグしているときに、青色の補助線が表示されたは 図 21 ファイル作成時にも力されるエテイタ 000 ビルドピルして第行っ 、をし物 M n ( 00 国上は / / 1 ( 日破、 h ″を第一 : 国 ro は ト : UMM 卩 ( 0 献「は プし一クホイント く第択されたシンポルなし , プロジェクトグルーフ参 ・″ ea 1 第を明ノー ~ / 24 . - / / C y れし 2 5 - 」 : ( 1 、物第罍… . 4 い口 1 に re 鉾ロ・ 新 0 代イ / C88. す。同様に、 -URLField も UMMainController から 参照するので、 -webView をダブルクリックして決定しま 今回はメンバー変数 -webView を使って WebView を で関連づけることを、、コネクション " と呼びます。 に・印カイ寸いています ) 。このように、 lnterface Builder るかを選択します ( すでに関連づけされているものは、行頭 うなリストカ咄てくるので、 WebView をどこに関連づけ trol キーを押しながらドラッグします。すると、図 25 のよ troller から、 Window ウインドウの WebView まで、 con- ます、新しくできた立方体のアイコン UMMainCon- 要素を組み合わせていきましよう。 それでは、さきほどへッダに言した要素と、各ビュー 動時 ) に自動的にインスタンス化されることになります。 しているので、メニューバーが表示されたとき ( つまり起 インスタンス化されます。今回は MainMenu. nib を編集 これで、 nib をロードしたときに、さきほどのクラスが 化されて nib にタされます ( 図 23 ~ 24 ) 。 lnstantiate" をクリックすると、クラスがインスタンス このクラスが選択されているた態で Classes メニューの ( 図 22 ) 。 になり、クラス名 UMMainController が表示されます にドラッグ & ドロップします。すると、タブが、、 CIasses' MainController. h) を lnterface Builder のウインドウ 最初に、 Xcode からさきほどのヘッダファイル (UM- ふたたび lnterface Builder へ 作ったビューと関連づけましよう。 ンバー関数やメソッドを、さきほど lnterface Builder で 33

5. UNIX MAGAZINE 2006年2月号

図 3 国立天文台での EX -750 運用尉竟 た Web プラウザさえあればよいので、幅広い OS での利 用が可能です。 SSL で接続後、プラウザ上で TCP プロキ ・ソフトウェアか起動し、 EX ー 750 上で設定された組 合せの TCP リレーカ駛えます。 Windows 対応のダイナ ミック・リダイレクトというモードでは、 EX ー 750 で設疋 することなく、 TCP 通信が自動的に TCP プロキシーへ リダイレクトされ、よりシンプルにアクセスできます。 最後の Web アクセスでは、 SSL 通信における Web プ ロキシー機能力甘是供さ楸外部から内部の Web リソース への安全なアクセスが可能です。 EX -750 の設定 いつもながら、すこしでも安く上げるために筐体だけを 購入しました。今回は、設置から運用に至るまでの設定方 法と、私がはまった落し穴について報告します。 EX ー 750 の設定は、すべて Web プラウザ上でおこない ます。なんらかの問題で Web プラウザから設定できない ときは、シリアルポートや VGA 、 PS/2 キーポードを接 続して原因を調べますが、たいていは修理が必要な状態に なっています。 今回は、初期設疋時に設疋用 PC と EX ー 750 をクロス ケープルで接続し、利用する IP アドレスやホスト名、経 路などを設定しました。その後、運用ネットワークに接続 したうえで、台内ネットワーク経由で設疋をおこないまし た。なお、 EX ー 750 出荷時の IP アドレスはマニュアルに 定か表示されます。右上には、ホーム画面への、、移動 " 、、ヘ 記載されています。 ルプログアウト " カ哺時表示されています。 以下では、図 3 の運用環境での構築を例に説明します。 システムリソース ( ユーザー数とネッ ホーム画面では、 EX ー 750 のホスト名は vpn.nao-example.org 、 IP アド トワーク利用率 ) の状況や、ディスクと CPU の使用状況 レスは 192.168.0.1 とします。スマートトンネル・アクセ などが表示されます。より細かな内容は、、、 Monitoring スでは、クライアントに割り当てる IP アドレスを定義する の、 System Status" で見ることができます。 必要がありますが、今回は 192.168.10.10 / 24 ~ 192.168. 10.20 / 24 とします。 基本言又疋 EX ー 750 側での設定は、 Web プラウザでポート番号 SSL VPN の設定をする前に、 EX ー 750 上で IP アドレ 8443 へ HTTPS で接続しておこないます。今回の例で スや、ホスト名、 NTP ( 時刻 ) などの設定をおこないます。 いえば、下記の URL にアクセスすることになります。 EX ー 750 では、各項目について AMC で設定して保存 https ://vpn. nao—example. org : 8443 / console / し、それを反映させます。 AMC で設定を保存しただけで は、反映されません。設定を変更すると、 AMC の右上に 図 4 の画面でログインすると、、、 ASAP Management Console (AMC)" か起動します ( 図 5 ) 。 AMC では左側 Pending changes" と表示されます ( 図 6 ) 。これをクリ に設定項目の大分類が表示され、右側に各項目の詳細な設 ックすると、、、 Apply Changes" のページ ( 図 7 ) になる 外部ネットワーク 192.168.0.254 内部ネットワーク 192.168.0.0 / 24 192.168.0.1 EX -750 図 4 ログイン画面 ASAP Management C0n50 厄 3 可を、を扁 0 図 5 AMC 5 ま : れ第 0 第第こ第ⅸ Aventait ASAP Management ( 0n560 ^ 、℃ト取 い、ぐ物 ` 、、′ 0 、 00 1 はに 0 今 0 地物物 00 ! 0 角′′、、、ド、当ゆ、、 ` ( まい れ第物を一い 0 0 、ま、 0 い、ヤ毓新」 00 第を物を、 , ・物いは感い山・非 0 をを第 を 0 、を、秘 第・一 00 、′破を m 社れ、を 58 UNIX MAGAZINE 2006.2

6. UNIX MAGAZINE 2006年2月号

図 2 JavaScript 開発 " で、キーワード " をオ 方イル ) 第表示 ( 助ゆフ ) ゆ但 ) ツールヘルプ ^ 藤 x を使わ引コまてなキーワードをインクノメンタル強常 」”ロで複数国所のキーワードをハイライト 20 第 -1 ト % 11 キーワードをイング丿 / ノタル検常 で複数第所のキ、ワハイライトトお はてなキーワードをインク丿メ : みル検常 複第預のキーワードをハイライト 2 ズ← 1 ト 11 物 Ja い Sc 日開発 いやなプログ プコチ : づや第ケ : : てヴ嘉グ トガを・“′て第の - 7 ードを・、イテ・を 0 、・し 0 第 2 . 2004 JavaScript で複数物所のキーワードをハイライト 」心朝 0 ( で複図所のキーワードをハイライトせ秋い方法、すかーと 0 み氏に駅いたとこ う、决のよよコードをさらっと都いてくれた。キーワードにマウスカーソルを載せると、複数所に出現する 図 2 は、、、 JavaScript 開発 " のページで文字列、、キーワ 索引ナビゲータの概要 する「索引ナビゲータ」システムを作ってみました。 関連する索引キーワード間を飛びまわりながら動的に検索 ジに付けた、、タグ " を単純な索引として使えます。そこで、 よう。ソーシャルブックマーク・システムでは、Ⅵ b ペー 引を協調的に作成できれば、広範な応用が可能になるでし ク・システムでは情報の共有が重要です。多様な情報の索 本棚 . org2 や del. icio. us3 などのソーシャルブックマー がありそうです。 、、人が思いっくあらゆる表現で索引を蓄積する " 方式は効果 たり、キーワード自体が人によって違うこともあるので、 作れそうです。簡単で適切なキーワードの選択カ攤しかっ ん。人海戦術で臨めば、多くの表現を用いた多彩な索引が 表現を網羅した索引を 1 人で作るのは容易ではありませ し、さまざまな表現を自動的に生成できますが、あらゆる PermutedIndex システムでは、同義語を登録して展開 録しておけば、目的の情報が検索しやすくなります。 ざまな言い回しが考えられます。これらをすべて索引に登 トする " 、、時刻を合わせる " 、、時間を調整する " など、さま の内蔵時計の設定のような単純な作業でも、、、時計をセッ こでは「 JavaScript で複数箇 ころです。このページには JavaScript に関するリンクや ード " を検索するために、ローマ字で、、 ki ー w " と入力したと 162 3 http://del.icio. 11S/ 2 http://hondana.org/ 説明が登録されており、 図 3 モード 方イル 0 編第表示一」ゆフマーり⑧ツールワ を ) 1 ントリ編集 ( ・感 Sc " p 第 ) ー Mo れ a ト難可 0 第 工ントリ編集 ( s 朝 pt 開発 ) U ・第 / ん am u -0 / ′リ / bb レを ch ツ 0 001 トル ; 言を朝所冫 : ら : を万 7 「フ売 : 石 : J ョ aSc ⅱ国開 方イ・第 ) 表示助ゆカりマーり⑧ツール ~ に凹 図 4 注目キーワードの変更 を「 1 に当 0 0 壘ー竺ー齢「一一壟恒を 日本第 Ful 一退 E2 る -11- 四 入力支橋 で複数第廬のキ、ワトドをイライトイトお るれイライト震示など 2 ト 1 ト 20 ・第をインク丿メンタ丿レこ常 表示第 -11-81111 “を授り - はてなキーワードをイ : 堺丿んル常 いやなプログ ア 0 ミン′ ! / ウ 0 プ ; 、 : の : 1 : : 0 ( ト” ~ ~ 004 ” S 朝で複数第所のキーワードをハイライト 」観ロ 1 て複財医所のキーワードをハイライトさせ臥い方法かーと。物。 : 駅、とこ う、次のよーさらっと第いてくれた。キーワードこマウスカーソルを載せると、複第所こ出現する 図 2 では、、キーワード " に関連するエントリが表示され トリ内容の編集ができるようになります。 こで [ 編集 ] ボタンを押すと図 3 の画面になり、エン と、図 2 のように表示されるわけです。 、、ハイライト " に索引をつけてキーワード部分でソートする いうエントリの、、 JavaScript 複数箇所 " 、、キーワード " ば、、 JavaScript で複数箇所のキーワードをハイライト " と そのキーワードを含む文字列を同時に表示します。たとえ この索引システムでは、索引項目のキーワードに対し、 記事 4 がヒットしています。 所のキーワードをハイライト」というタイトルの webl 。 g ていますが、 こで右矢印キーを押すか、、ハイライト " をク リックすると注目キーワードが、、ハイライト " に変わり ( 図 4 ) 、この文字列を含む別のエントリも表示されるようにな ります。 こで下矢印キーを押すと、、、ハイライト " を含む次の工 ントリカ畩示されます ( 図 5 ) 。 こで日付の部分をクリックすると、今度は日付に従っ てソートされるため、日付順でエントリを眺めることがで 4 http://namazu.org/-satoru/blog/archives/000007.html UNIX MAGAZINE 2006.2

7. UNIX MAGAZINE 2006年2月号

図 29 ポップアップするウインドウ マジピンされたポート すうたこ弓 - ′ますし 0 「心色れ物は ) ライアント / ーパーアッしケーシ参ノこアク亡ス €Aventail OnDemand 国立天文台のネットワーク暄 . internal、Meb.nao—example.org 0 ロ弖アウト 0 , 、ルツ :Place 図 30 入力例・ 物最スータス ア 0 セス : を を : ウ 3 ン始 : 0 : 10 を物第します、 ダた ; る W 第、巧を 0 一 4 物 3 いイ ! ンのにアフスします。 ワうイントぎサ - - ) 簪 - アアリケ ~ アクセス工 ~ ジェント etwork reSOUt•CeS YO リ「 intranet. TO t below. For help, click the Help b リ on mmstrator. 接岐ステ ~ タス アクセ W をトまはび ) ライア : オ / サー セッツョン始 : 1 は 0 アクセスエージェント タがをる物 d ら物 ! ネワー クを換素しま ップアップ・ウインドウ ( 図 29 ) が開きます。このウイン ドウが開いているあいだ、さきほど AMC 上で設定した TCP プロキシーカ陏効になります。なお、 Access Meth- ods で、、 Auto-activate from ASAP WorkPlace" をチ ェックした場合は、 ASAP WorkPlace にログインした時 点で TCP プロキシーカ陏効となります。 TCP プロキシーが有効なあいだは、ローカルホスト ( 127.0.0.1 ) の TCP / 2300 番への接続 (telnet 127.0.0.1 2300 ) が PCI の 23 番 (telnet) へプロキシーされ、内部 リソースへの安全なアクセス 12 カ河能になります。 Web アクセス 3 つ目の VPN 接続方式である Web アクセスは、 EX- 750 の Web プロキシーにクライアント SSL 通信をおこな い、内部リソースへの安全なアクセスを実現する機能です。 多くの OS で使えますが、 Telnet や SSH などの Web と は異なる通信には対応できません。 これを利用するには、 URL を自分で入力する法と、 Web プロキシー・エージェント (Web proxy agent) を利用す る方法があります。前者の場合は、 ASAP WorkPIace の 、、イントラネットアドレス " 欄に URL を入力すればアク セスできます ( 図 30 ) 。 後者は Windows 以外では利用できませんが、 IE に Web プロキシーを自動的に設定するため、透的に使えま す。この機能は、 EX ー 750 か Resources などで言定された アクセス許可の内容をもとに ( プロキシーの ) 自動構成ス クリプト (proxy pac ファイル ) を作成し、 ASAP work- PIace 起動時に図 31 のように ActiveX によってこのスク リプトを設定します ( 切断すると自動的に解除されます ) 。 12 クライアントと EX ー 750 との通信は SSL で暗号化され、 EX -750 か ら PCI までは平文 (telnet) です。 図 31 自冓成スクリプトか組み込まれる は , 物ルユネワ薹グ = 鶩第ネ : - 構成 「「、一第ルアドし霊はプき = ゾサドを用導ない 物こは適用されません ) 广 [ AN にプロシサーバーを使用するにれ ) 験定はダイヤルアップまたは VPN プロキシサヨト マ自釚臍成スプトを使用する 設定を自・加出する N ゑ 0 」 VPN サービスへようこそ。このンステムは現在設験運用中です ようこそ masafurni Ob 駐Ⅳ orgot 、ね p き 0 N ー池「新一 A 610n1 に NAOJASAP 、 VorkPlace 図 32 オリジナル版、 VorkPlace 0 ロうア” 0 、ルプ 接袋スラータス アクをス : 鳧宝なットワ、 ~ ア ッション圏 5 を アクセス工 ~ ジェント 諸崧ファイルまた ツレ第な ; を誉 : を”ゞ ネ分ワークを物す。 UNIX MAGAZINE 2006 . 2 これによって入力された URL により、 (SSLVPN を用 いた ) プロキシーの有無力畔リ別され、透過的な内部リソー スへのアクセスを実現します。 ASAP WorkPlace の機能 ASAP WorkPlace は、 User Access の ASAP Work- Place ですこしだけ修正できます。図 32 は、デフォルトの WorkPIace に国立天文台のロゴを追加し、メッセージを 日本語にして、頻繁にアクセスするリソースへのリンクを 設けたオリジナル版です。 67

8. UNIX MAGAZINE 2006年2月号

連載 / ネットワークとセキュリティ 図 3 基本言諚の終了 —DXML_VAR=\"var\" —DOSSECHIDS —c os_xml . c os_xml—access . c os_xml—node—access . c os—xml—variables . c gcc —DXML—VAR=\"var\" —wall ーエ .. / —I.. /headers -DLOCAL —DUSE—OPENSSL ¯DARGVO=\" os—xml\" ・ make [ 1 ] : Entering directory ( /usr/local/src/ossec—hids-(). 5/src/os-xm1' Making os-xml Running the Makefi1e 5 ー lnstalling the system 図 4 プログラムのコンパイル Press Any Key tO continue visiting us online at http: //www. ossec. net/hids/ Any questions about the configuration can be solved by /var/ossec/etc/ossec. conf and add a new localf 土 le entry. If any want to monitor any other file , Just change /var/log/secure /var/log/messages 3.7 ー Setting the configuration to analyze the following logs : ー RESULTS START HERE ー 3.1 ー Do you want e—mail notification (y/n)?y What ' s your e—mail address? true@example . com What ' s your smtp server ip/host? localhost アラートが発生した場合に電子メールで通知するかどう かを指定します。この例では、電子メールによる通知機能 を有効にし、 true@example.com 宛にメールを送信する ように設疋しています。また、メールを送信する SMTP サーバーとして localhost を指定します。 3.2 ー DO you want tO run the integrity check - daemon? (yes/no) y Running syscheck (integrity check daemon) ファイルの整合性チェック機能を有効にするかを指定し ます。今回はファイル整合性チェック機能を有効にするた め、、、 y " と入力します。 UNIX MAGAZ 工 NE 2006.2 定します ( 図 2 ) 。今回はアクテイプ・レスポンス機能を利 次に、アクテイプ・レスポンス機能を効にするかを指 Rootkit 検知機能を有効にするため、、、 y " と入力します。 Rootkit 検知機能を有効にするかを指定します。今回は Running rootcheck (rootkit detection) detection engine?(yes/no)y 3.3 ー DO you want tO run the rootkit - 用する設疋とし、 hosts. deny ファイルの動的更新機能を有 効にするため、両方とも、、 y " を入力しています。 これで OSSEC HIDS の基本的な設定が完了し、設疋 ファイルカイ乍成されました ( 図 3 ) 。続いてプログラムのコ ンパイルがおこなわれます ( 図 4 ) 。 コンパイルカ墹題なく終了すると、図 5 のようなメッセ ージカ示されます。 最後に、適当なキーを入力すればプログラムのインスト ールは完了です。 chkconfig への対応 現在のバージョンの OSSEC HIDS は、 /etc/rc. d/init . d/ossec に起動用スクリプトをインストールするものの、 chkconfig に対応していません。そこで、 chkconfig に対 応させるために走師カ用スクリプトを修正します。 # vi /etc/rc . d/init . d/ossec テキストエデイタで起動スクリプトを開き、 5 行目に図 6 の内容を追加します ( 、、 description" のコロン以降の説 明は適当な内容でもかまいません ) 。 次に、現在の OSSEC HIDS の起動スクリプトの状況 を表示します。デフォルトの状態では自動起動するように # /sbin/chkconfig ——list ossec 設疋されていないはずです。 49

9. UNIX MAGAZINE 2006年2月号

図 17 lnterface Builder の走カ UMMainContrOller ツ UMMain. アクテイプターケット アクシコン ビルドビルドして実行 グループとノアイル ー、 AppK 心 n10W0 「 k を CO ( 0 me 青 0 を ( 0 代 00 い . 朝 am を WO 慮 トこ - 0 ー Sourc い をを FOu 月 da れ On はロ n WO ⅸ トに」を rame 物 0 ー 驀督 0 円、ⅲ ng ー (EngliSh) ト ~ ~ 円 Odu ( ト 0 ーターグット : 」 M 田 0M0 仙 . ⅲ b ( E れ 0h5 トノ実け可前ファイル トこ工ラーと第物 すズ検第結第 : 立い 'M 第 n ( on 0 - P 「 0 を X. 0 ( h トー」一ノックマーク トー SCM ・フロシェクトのシンポル ~ ィまをファイル トー・ N 旧フ / イル 図 18 インスタンス一覧 「 ) ( ) コ MainMenu. nib (EngIish) ⅲ 5 ねれ ( を 5 ( ね 55 lmages ー Sounds Nib MainMenu 物報工アイタ ツツイル、薑みー塾、を第スコ ード 0 0 材ロロ朝材ロ 0 0 Window 0 日 R ぐ sponde 「 MainMenu. nib の部分をダブルクリックし、 lnterface Bu ⅱ de 「を起動する 図 19 lnterface Builder での操作 Window を ) 進む ホーム ( 0 ( oa - ( on レ 0 Button Button ( 0 ( 00- Tex itch io Mini 5 い : em 防 Text rem ipsum d 引 0 「引【住は いー FO Te ~ 010 :. ( 0 れ 50 ( ー 0 ー au 「 ciliium こ d の i 引 ( ⅲ 9 pe ( し . sed dO △ Sm Ⅱ SY em FontTe eiusmod : empo 「 incididunt System Font Text ョけト 0 ′ 0 0 一 0 い「 0 m ュ 00 物 , 2001 / 01 / 01 9 : 00 ( 0 ( 0 き・・ C phi ( 5 Ⅵ 0W5 token - ( こ ) Tey : の、 , つ , , Tex ー 5 この 3 つのウインドウは タブで切り替えて表示 する ( 同時に表示され るわけではない ) 9 集する MainMenu. nib はメー ーの表示に必要なリ に、、 W ⅲ d 。 w " という名前のウインドウもあります。この ーーユーーノミ ソースが格納されているので、起動時に自動的に読み込ま Window に、各種のコントロールを貼り付けていきます。 れます。 インスタンス一覧で、 W ⅲ dow " をダブルクリックする Xcode から MainMenu. nib をダブルクリックして開 と表示されるウインドウに、パレットからドラッグ & ドロ くと ( 図 17 ) 、図 18 のようなインスタンス一覧が表示され ップでコントロールを貼り付け ( 図 19 ) 、さらに、貼った ます。この一覧には、メニューバー (MainMenu) のほか ボタンをダブルクリックしてキャプション文字列を編集し penGL 32 UNIX MAGAZINE 2006.2

10. UNIX MAGAZINE 2006年2月号

図 30 フィールドと見ている URL との同期 (UMMainController. m) (void)webView: (WebView * ) sender didFinishLoadForFrame : (WebFrame * ) frame [ URLFie1d setStringVaIue : [ [ [ [frame provisiona1DataSource] request] URL] abs01uteString] ; 38 します。 入力する画面カ覡れるので、 VaIue を図 31 のように指定 上のセレクタから、、 Binding" を選択すると、バインド先を キー十 I キーを押すとインスペクタが表示されます。一番 terface Builder の URL フィールドの上で Shift 十 Apple たとえば、さきほどの Web プラウザを作成する場合、 ln ー ます。 上のみで実現でき、ビューのネ礬ヒに追随することができ coa Binding を利用すれば、これを lnterface Builder にしている事項とは直接関係のない無駄なものです。 Co- 雑化すると入り組んできますが、プログラムカ体当に問題 こうしたビューの同期用コードの呼出しは、ビューが複 見ている URL との同期に必要なコードです。 さきほど作成した Web プラウザで、 URL フィールドと 用のコードを言杢しなければなりませんでした。図 30 は、 タを保持するモデルやほかのビューに通知するため、同期 従来の Cocoa では、あるビューの変更を、実際にデー ータとビューを連結させる部分を簡単に杢する手法です。 Cocoa Binding は、コントローラを作成する過程で、デ は Objective-C で直接書く手段しか用意されていません。 ビューを簡単に構築できますが、コントローラについて lnterface Builder では、アプリケーションに必要な Cocoa Binding 扣 ur ネットワークを簡単に利用できます。 NSNetService/NSNetServiceBrowser を使い、 Bon- してライプラリ名を出力します。このように、 Cocoa では 図 29 のプログラムは、ネットワーク上の iTunes を検索 IP べースに載せ替えたものといえるでしよう。 ひらたくいえば、 AppleTalk や Windows Network を ワーク上のほかのデバイスがそのサービスを利用できます。 リケーションをネットワークにつないだ瞬間から、ネット Bonjour 上では、サービスを提供するデバイスやアプ 図 31 Cocoa Binding マ ue Bind@ Bind to: web Ⅵに (WebView) は ( on 0 Key. MOdel Key Path: main 「 ramelJRL V きを T n 0 「 m : 池物 5 日 ng Muit•pIe ぬに池 ( む 00 匚ー A ミ YS p nts AopIicatjon MOd A に費ー ( 00d に on ツ記 b 厄 ロ ( 0 に on ツ EnabIed ロ ( 0 に 00 ツ H 記 d00 ロ朝れ tvnu 。 u 引 y 5 ぬ R 5 FO 「 Not Appl•c ヨ b 第 K を 匚ー V き物 d immed*tepy M ⅵれ 0 地 VaIues 円一 ( を hO 細「 : 、 0 池ロ i00 P に ( を ho に : 図 32 Cocoa でシリアライズ (void) encodeWithC0der : (NSC0der * ) encoder { [encoder encodeObject : —title] ; [encoder encodeObject : これだけで完了です。テキスト・フィールドは、つねに WebView で見ている URL を指すようになりました。同 じ仕組みを用いて、ロード中のプログレスパーなども簡単 に実現できます。 これらは、 Objective-C の動的な特徴を最大限に活かし て実装されていますが、 Cocoa Binding によって隠蔽さ れているため、プログラマーは本来の作業に集中できます。 Core Data Cocoa Binding と lnterface Builder のおかげで、ビ ューとコントローラに関する単純作業の大部分は省略可能 になりました。 Mac OS X 10.4 から提供された Core Data は、これらに加えてモデルレイヤでの単純作業を軽 減してくれます。 Cocoa でのシリアライズは NSCoder などのクラスで サポートされていますが、これを用いてシリアライズをお こなうには、図 32 のようなコードを書く必要があります。 この程度のコードなら単純なので簡単に書けますが、モ デルカ夏雑になってくると、コード量が増えて保守しにく くなります。 UNIX MAGAZINE 2006.2