MOSA Multi-OS Software Artists

MOSAはソフトウェア開発者を支援します

  • iPhone/iPod touch アプリ紹介
  • MOSA掲示板
  • 活動履歴
  • About MOSA(English)

MOSA Developer News[MOSADeN=モサ伝]第280号

2007-12-18

目次

  • 「「Wonderful Server Life」    第61回   田畑 英和
  • 小池邦人のCarbon視点でCocoa探求
  • ターミナルの向こうから      第16回  海上 忍 

「Wonderful Server Life」  第61回  田畑 英和

  〜Leopard Server Setup編〜

 前回に引き続き標準構成でのセットアップについて解説します。今回は管理者アカウントの登録から解説します。スクリーンショットを用意してありますのでこちらもあわせて参照してください。

・セットアップ(標準構成の場合)
http://www.htabata.com/Site/LeopardServer/Pages/Setup_Standard.html

◇管理者アカウント
 「名前」「ユーザ名」「パスワード」を入力するいつもの管理者アカウントの登録です。ただし、Leopard Serverではちょっと注意が必要です。これまでのバージョンではセットアップ中に登録する管理者アカウントはローカルユーザとして登録されていましたが、「標準」構成(ワークグループ構成でも同様)の場合はネットワークユーザとして登録されます。
 「標準」および「ワークグループ」では自動的にOpen Directoryのマスターが構築されます。そしてセットアップ中に登録した管理者アカウントはネットワークユーザとして登録されるのです。この事実をよく覚えておきましょう。あまりないことかもしれませんが、「標準」構成でセットアップしたあとに、Open Directoryの役割を変更してスタンドアロンや複製にしたとします。この場合既存のネットワークユーザは削除され、セットアップ中に登録した管理者アカウントも削除されてしまいます。
 管理者アカウントが削除されてしまうとサーバ管理ができなくなってしまいますが、じつは自動的に「localadmin」というユーザ名のローカルユーザが登録され、このユーザは管理者権限を与えられています。ですのでlocaladminを使ってもサーバ管理ができるということです。localadminのパスワードはセットアップ中に登録した管理者アカウントと同じパスワードが設定されています。
 またrootアカウントにも同じパスワードが設定され、Tiger Serverと同様にLeopard Serverでも最初からrootアカウントが有効になっています。
 「詳細」構成でセットアップした場合のことも解説しておきますと、「詳細」構成では自動的にOpen Directoryのマスターは構築されず、セットアップ中に登録した管理者アカウントはローカルユーザとして登録されます。

◇ネットワークアドレス
 デフォルトではDHCPで取得したアドレスを使用しますが、静的なDHCPを使っていなければ固定のIPアドレスを手入力で設定したほうがよいでしょう。サーバですのでアドレスが動的に変わってしまうとサービスに影響が出る可能性があり、あまりよくありません。

◇ネットワーク名
 さきほどのネットワークアドレスで設定したDNSサーバ上にあらかじめサーバのレコードが登録されていれば、ネットワーク名は自動的に設定されます。手動で設定する場合、まずプライマリDNS名の設定がありますが、これはDNSで管理される名前を指定します。Tiger ServerではDNSサーバを参照して自動設定されるため、プライマリDNS名をセットアップ中に手動で設定できませんでしたが、Leopard Serverでは手動で設定できるようになりました。
 また、コンピュータ名も設定しますがこちらは「システム環境設定」の「共有」で設定する名前になります。

◇時間帯
 時間帯とネットワーク・タイム・サーバを設定します。ネットワーク・タイム・サーバはAppleが提供しているサーバを利用できますが、任意のサーバを指定することもできます。

◇サーバのバックアップ作成
 Leopardから導入されたTime Machineを使ってサーバのバックアップを設定します。しかし何をバックアップするのかをあらかじめよく検討しておいてください。たとえばデータベースのデータはロックをかけた状態でバックアップしないとデータの整合性が崩れてしまう可能性があります。
 このような場合にTime Machineを使うには、まずデータベースのバックアップ機能を使って安全な状態でバックアップを作成し、さらにそのバックアップをTime Machineでバックアップするといったやり方が必要になります。さらにリストア方法についても事前に確認しておく必要があります。
 もっともこれはクライアント版のLeopardでも同じことが言えるわけですが、どんなデータをバックアップするのかをよく理解したうえで使用するようにしましょう。

◇メールサービス
 セットアップ中にメールサービスの設定をおこなったり、メールサービスを無効にしたりできます。メールサービスの設定はセットアップ後に「サーバ環境設定」を使ってもできますので、ここではまだデフォルトのままでもよいでしょう。ただし、メールサービスを使用しないのであればあらかじめ無効にしておきましょう。必要のないものは動かさなければ、セキュリティを高めることにもなります。

◇リモートアクセス
 ここでVPN(L2TP)の設定をおこなうのですが、実際にはセットアップしてもVPNは有効にはなりません。本来VPNの設定をおこなうには共有シークレットやVPNクライアントに割り当てるIPアドレスの範囲を設定する必要がありますが、セットアップ中にこれらを設定することはできません。なぜこのような実装になっているかは不明ですが、VPNを使用する場合にはセットアップ後に「サーバ環境設定」を使って設定しましょう。

◇クライアントコンピュータのバックアップ作成
 こちらはTime Machineを使ったクライアント用のバックアップ設定になります。この機能を利用すればクライアントコンピュータのバックアップをネットワーク経由でできるようになります。バックアップの設定をすれば、クライアント上ではサーバをTime Machineのバックアップ先として選択できるようになります。

◇ユーザアカウントの追加
 いよいよ最後のセットアップ項目です。セットアップ中にユーザアカウントの登録ができます。アカウントの登録はセットアップ後に「サーバ環境設定」を使ってもできますから、必ずしもセットアップ中に登録する必要はありません。またここでユーザを登録すると、初期パスワードにユーザ名を使うこともできますが、これはセキュリティ上はあまりよくはありませんので、もし初期パスワードをユーザ名にしたのであれば、なるべくはやくユーザにパスワードを変更してもらう必要があります。

さて、これでセットアップが完了です。セットアップが完了すればこれでいよいよLeopard Serverの運用が可能になります。それでは次回はLeopard Serverで新しく導入されたサービスについて解説する予定です。
                             次回へつづく

小池邦人のCarbon視点でCocoa探求(2007/12/14)

〜 CarbonプロジェクトからInfo.plistを移す 〜

前回は、プロジェクトの「Japanese.lproj」フォルダに日本語版のMainMenu.nibを追加してみました。今回は、ShinbunShi3プロジェクトのInfo.plistを編集してアイコンを追加してみます。それから、手始めとしてアバウトを表示するようなソースコードを書き始めます。

前回、「Japanese.lproj」(日本語版nibファイルを含む)を簡単に追加する方法を発見できませんでしたが、フォルダとその中身を作るには、MainMenu.nibを選択し「情報を見る」で表示されるダイアログの「一般」タブの「ローカライゼーションを追加」ボタンを使うことを教えてもらいました(有り難うございました)。しかし、残念ながら、この方法で作成されるnibファイルのメニューも英語表記です(涙)。Interface Builderが日本語ローカライズされたnibファイルを書き出せるわけですから、Xcodeでも指示に従い適切なローカライズnibファイルを出力して欲しいものです。

ところで、プロジェクトの一覧からMainMenu.nibをダブルクリックすると、必ず英語版のnibファイルがオープンされてしまいます。MainMenu.nibのもうひとつ下の階層に表示される「Japanese」をクリックしないと、日本語版のnibファイルはオープンできません。ならばと言うことで「English」の方を外してみると、今度は何もオープンしません(笑)。Mac OS Xの言語環境が日本語であっても英語版が優先されてしまします。このままだと、知らないうちに間違った言語の方のリソースを編集してしまい、再度アプリを起動して「あれ、何も変化していない?」と悩むことになりそうです。

アプリケーションがデフォルトリソース(nibファイルやローカライズ文字列)を、どのフォルダから持って来るかについては、 Info.plist「CFBundleDevelopmentRegion」情報で決まります。例えば、ここの設定が「English」で、現在の言語環境が日本語の場合、「Japanese.lproj」が存在すればその中身が使われますが、無い場合には代わりに「English.lproj」の中身が利用されるわけです。そんな訳で、ひょっとしてこの情報を「English」から「Japanese」に変更すれば、ダブルクリックで日本語ローカライズnibファイルの方がオープンされるのかと思ったのですが、結果は駄目でした。

このままでは日常的な操作環境として少々苦痛なので「Japanese.lproj」はとりあえずプロジェクトから外し、「English.lproj」のリソースを日本語ローカライズして使う事にしました。アプリケーションが完成したら「English.lproj」の中身を「Japanese.lproj」に複製し、英語版ローカライズをやり直すという作戦を取りたいと思います。続いて、「しんぶんし 2.0」で利用していた、Info.plistをそのまま「しんぶんし 3.0」のプロジェクトへコピーして現状ファイルと差替えます。細かな修正は後から行うとして、とりあえずバージョン番号などの記載だけは最新版に変更してみました。

Info.plistの内容はXMLで記述されていますのでエディタで直接編集してもかまいませんが、プロジェクトのターゲットを選択し「情報を見る」で表示されるダイアログの「プロパティ」タブでも編集できます。CarbonプロジェクトからのInfo.plistには「主要クラス」と「主要Nibファイル」がないので、ここに「NSApplication」と「MainMenu」を入力しておきます。こうしておかないと、Cocoaアプリケーションとして起動できませんので注意してください。Info.plistにはアイコンファイルの名称「ShinbunShi3.icns」も記述されていますので、そのファイルをプロジェクトのResourcesグループに追加すれば、Makeされたアプリケーションにアイコンが表示されます。

さて、ようやくアプリケーション開発の本作業へ入れる準備が整いましたので、さっそくアバウト表示に挑戦します。Carbonアプリケーションの場合は、Carbon Eventとしてコマンドの’abou’を送信すると、アプリケーションクラスのDefault Handlerがスタンダードアバウトを表示してくれました(Mac OS X10.4から)。この仕組みの実装はCocoaアプリケーションの方が早く、NSApplicationのorderFrontStandardAboutPanel:メソッドを呼び出すことで実現できます。MainMenu.nibでは、MainMenuのアバウト(メニュー項目)はFile’s Owner接続されており、上記メソッドがデフォルトでアサインされています。つまり、このメソッドを独自の物と差し替えれば良いわけです。

アバウトダイアログ(Cocoaではパネル)を表示する処理自体は大変簡単ですが、初めてCocoaで取り組む場合には考えなくてはいけないポイントがあります。アバウト用パネルオブジェクトはMainMenu.nibの中に作って良いかどうかです。MainMenu.nib内のオブジェクトはアプリケーションが起動された時に、すべて読み込まれてインスタンスが生成されます。NSWindowやNSPanelの場合には、インスペクタの「Visible At Launch」オプションをオフにしておけば、アプリケーション起動時には表示されませんので、後から適切な時点で表示すれば良いことになります。

そういう訳で小規模なアプリケーションの場合には、すべてのモデル、ビュー、コントローラのオブジェクトをMainMenu.nibに詰め込んでも問題ないですし、その方が管理し易いかもしれません。しかし、大規模なアプリケーションの場合には、関連するモジュールごとにクラスを分けて、必要とされるnibファイルもMainMenu.nibから分離しておくべきでしょう。管理すべきファイルは増えますが、起動時間も短縮でき、開発作業の分担も容易になります。今回は、大規模なアプリケーションではないですが、実験的な意味合いもあるので、アバウトのビューやコントローラは別ファイル(About.nib)として編集してみることにします。

アバウトメニューの選択で呼ばれるメソッドは、アプリケーション自身のコントローラ(ApplicationController)に用意しておきます。今回は実践練習ですので(笑)アバウトには「OK」ボタンをひとつ用意し、それのクリックでアバウトを閉じるようにしてみましょう。そのためには、NSWindowControllerのサブクラスであるアバウト用のコントローラ(AboutController)も必要です。よって以下のような2つのコントローラ・クラスを準備しました。各クラスのインスタンス変数は、ローカル変数と区別しやすくするためにアンダーバーを含むように表記しています。

@interface ApplicationConroller : NSObject
{
   AboutController *about_Controller; // オープンされたアバウトパネル
}
- (IBAction)openAboutWindow:(id)sender; // アバウトパネルを開くメソッド

@end

@interface AboutController : NSWindowController
{
   IBOutlet id ok_Button;         // OKボタンのアウトレット
}
- (IBAction)closeAbout:(id)sender; // アバウトパネルを閉じるメソッド

@end


次回は、Interface BuilderでMainMenu.nibとAbout.nibを編集してから、ソースコードを記述し上記の2つのクラスのを実装してみます。Leopardの「XcodeTools」に付属している「Interface Builder 3」は、以前のバージョンから操作体系が大幅に変更されていますので、その辺りを注意深く調べてみたいと思います。
つづく                                

ターミナルの向こうから      第16回  海上 忍

〜 ドキュメントに使う図のつくりかた その3 〜

 前回は、Graphvizを利用した具体的な作図術を紹介しました。今回は、Pythonをラッパーとして使う「pygraphviz」など、別の角度から見たGraphviz活用術を紹介します。

・次のOmniGraffleでGraphvizがサポートされます
 Mac用作図ソフトの定番「OmniGraffle」が、近々バージョン5.0へとアップデートされます。数ある新機能のなかで本連載的に注目なのが、Graphvizのサポート。完全互換というわけではありませんが、シンプルな構成のDOTファイルであれば、そのまま開くことができます。
 第14回以降で紹介したDOTファイルのサンプルを開いてみたところ、第14回のサンプル3点はいずれも開くことができましたが、ノードの形状の書き分けに問題があるようです(「egg」を指定してもOvalのまま)。第15回のサンプルは、リスト2は意図どおり表示されましたが、リスト3の家系図はいくつか線が表示されただけでした。残念ながら、DOT言語完全サポートというわけではないようです。
 なお、OmniGraffle 5.0の動作環境はMac OS X 10.5以降、つまり現時点では
Leopard専用。Tiger以前のシステムでは起動できないので注意してください。

OmniGraffle
http://www.omnigroup.com/applications/omnigraffle/

・pygraphvizを使う
 Graphvizには、他のスクリプト言語から利用するための各種ラッパーが存在します。ここに紹介する「pygraphviz」は、名前からもわかるとおり、PythonからGraphvizの機能を利用できるという便利な実装です。
 同じPythonを利用したラッパーとしては「pydot」(http://code.google.com/p/pydot/)もありますが、こちらはすべてPythonで記述さ
れ、生成したDOTファイルの処理を外部のGraphviz処理系に依存するのに対し、pygraphvizはCで記述され、Graphvizのライブラリを利用して自力でDOTファイルの処理を行います。

pygraphviz
https://networkx.lanl.gov/wiki/pygraphviz

 このpygraphvizは、第13回で紹介したCUI版バイナリパッケージ(http://
www.ryandesign.com/graphviz/)に含まれています。インストールしただけでは利用できないため、ターミナルから以下のとおりコマンドを実行してください。

- - - - -
$ export PATH=/usr/local/graphviz-2.14/bin:$PATH
$ export PYTHONPATH=/usr/local/graphviz-2.14/lib/python2.3/site-packages

※:インストールしたパッケージにより、「graphviz-2.14」のバージョン名
部分が異なります。ご自分の環境にあわせ、適宜読み替えてください。
- - - - -


 これでpython対話シェルを起動(ターミナルから「python」を実行)すれば、pythonからGraphvizの機能を利用できるようになります。詳細はチュートリアル(https://networkx.lanl.gov/wiki/pygraphviz/Tutorial)を参照していただくとして、以下の実行例を見れば、どのような処理が可能になるか理解していただけると思います。

- - - - -
from pygraphviz import *
i=AGraph()
i.add_edge('Namihei','Fune')
i.layout()
i.draw("isono.png")
- - - - -


・AjaxでGraphvizですか!
 つい最近、面白いサイトを発見しました。T.Ashitani氏の手によるAjaxの機能を利用したGraphvizの実装で、名称もそのまま「Ajax/Graphviz」。WebブラウザのテキストボックスへDOT言語を入力すると、画面へただちに結果が反映されます。いちいちファイルを生成してdotコマンドで処理する手間は不要、インタラクティブに作図できるので、DOT言語の手慣らしに最適です。第15回でサンプルとして紹介した「磯野家家系図」をモディファイしたものを挙げておきますので、コピー&ペーストで試してください。

Ajax/Graphviz
http://ashitani.jp/gv/

- - - - -
edge [ dir=none];
node [ fontsize=12,shape=box];
波平; カツオ;
node [ fontsize=12,shape=ellipse];
舟; サザエ; ワカメ;
node [shape=none,style=filled,height=0,width=0,color=black,label=""];
   "波平_○_舟"; "○_サザエ"; "○_カツオ"; "○_ワカメ";
   { rank=same; 波平; "波平_○_舟"; 舟} 波平 -> "波平_○_舟" -> 舟;
   "○_サザエ" -> サザエ;
   "波平_○_舟" -> "○_カツオ"; "○_カツオ" -> カツオ;
   "○_ワカメ" -> ワカメ;
   { rank=same; "○_サザエ"; "○_カツオ"; "○_ワカメ"} "○_サザエ" -> "○_カツオ" -> "○_ワカメ";
- - - - -

◇MOSAからのお知らせと編集後記は割愛します◇

 

 MOSA Developer News   略称[MOSADeN=モサ伝]
        配信停止 mailto:mosaden-ml@mosa.gr.jp
 記事内容に関するご意見 mailto:mosaden-toukou@mosa.gr.jp
      記事投稿受付 http://www.mosa.gr.jp/?page_id=850
Apple、Mac OSは米国アップル社の登録商標です。またそのほかの各製品名等
はそれぞれ各社の商標ならびに登録商標です。
このメールの再配信、および掲載された記事の無断転載を禁じます。
特定非営利活動法人MOSA  http://www.mosa.gr.jp/
Copyright (C)2007 MOSA. All rights reserved.