MOSA Multi-OS Software Artists

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

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

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

2007-12-04

目次

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

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

  〜Leopard Server Setup編〜

 Leopard初のアップデート10.5.1がリリースされました。クライアント版とサーバ版の両方がリリースされています。TigerのころはIntel Macリリース後、クライアント版はPPCとIntel、サーバ版はPPCとUniversalというようにCPUごとにアップデートが分かれていましたが、Leopardではクライアント版もサーバ版もそれぞれ最初からUniversal版として提供されているため、アップデートもUniversal版のみの提供となっています。
 またTigerのアップデート10.4.11もリリースされました。PantherからTigerにアップデートするときは、Tigerのリリース前にPantherの最終OSアップデートがリリースされていましたが、今回はLeopardリリース後のアップデートとなっています。おそらく10.4.11でTigerのOSアップデートは最後かと思いますが、セキュリティアップデートなどは今後もまだリリースされるのではないかと思います。

◇標準構成のセットアップ
 さて、それではいよいよセットアップです。前回はLeopard Serverに3つのサーバ構成があることを解説しましたが、「標準」構成でのセットアップについて解説していきます。
 標準では各種サービスが最初から自動設定されるため、将来「詳細」構成に移行する場合でも参考になります。ただし、「標準」と「ワークグループ」は新規インストールの場合しか選択できません。セットアップ画面のスクリーンショットも用意しておきましたので、こちらも参考にしていただければと思います。

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

 なお、セットアップ(インストールも)はリモートでも実行可能ですが、今回の解説ではサーバ機を直接操作してセットアップするものとします。

 インストールが完了するとセットアップの開始です。まずは「ようこそ」画面が表示されます。とっとと次の画面に進みセットアップを開始したいところですが、ここで「Command + Q」でシステム終了することができます。なんで
これからセットアップが始まろうとしているときに、いきなりシステム終了の話をするのだと思いでしょうが、今後検証などの目的でなんどもセットアップを繰り返したい場合は、ここでまずはシステム終了してシステムのイメージを作成しておくと便利です。
 システム終了してインストール後のボリュームをイメージ化しておけば、インストールディスクを使わなくてもいつでもイメージからインストール直後の状態のLeopard Serverをリストアすることができます。イメージの場合、インストールディスクから再インストールするよりもかなり早くリストアが可能ですので、時間の節約になります。
 イメージの作成方法ですが、もう1台Macがある場合にはFireWireケーブルを用意し、ターゲットディスクモードで起動したLeopard Serverを接続して、
「ディスクユーティリティ」でボリュームをまるごとイメージ化することができます。またパーティションを分けてMacを使用している場合は、別パーティション上のシステムから起動してイメージを作成することもできます。ちなみにプリンタドライバのインストールを省略して、圧縮してイメージを作成したところ約3.53GBになりました。ちょっとした準備をおこなっておくことで、将来の作業を効率化できるというわけです。イメージは必ず作成しなければいけないというわけではありませんので、もちろんそのままセットアップを続けてもかまいません。

◇サーバ構成
 「ようこそ」画面の次は「サーバ構成」の選択画面です。ここで3つのサーバ構成から選択しますが、今回は「標準」を選択します。ファイバーチャネルカードを搭載したマシンでセットアップをおこなう場合は、ここでXsan用の構成を選択することもできます。

◇キーボード
 日本語環境でセットアップしている場合はデフォルトで「ことえり」が選択されていますので、そのまま次の画面に進めばよいでしょう。キーボード配列を変更したい場合は「すべてを表示」をクリックすれば他の配列を選択することもできます。

◇シリアル番号
 クライアント版のMac OS Xにはシリアル番号はありませんが、サーバではソフトウェアのシリアル番号の入力が必要になります。シリアル番号はOSのパッケージのなかに含まれていますので、客先などでセットアップをする場合は忘れないようにしましょう。シリアル番号が分らないとセットアップが進められません。
 サイトライセンスを使用する場合は「登録名」「登録組織名」も入力します。

◇ユーザ登録の情報
 企業または個人情報を入力してユーザ登録をします。Tiger Serverのころはセットアップ中にユーザ登録は求められませんでしたが、Leopard Serverではクライアント版と同様にユーザ登録画面(2画面あります)がセットアップ中に表示されるようになりました。「Command + Q」でスキップすることもできますが、なにも入力しなくても「続ける」ボタンをクリックして次の画面に進むことができます。

 まだセットアップの前半部分が終わったところですが、後半部分は次回解説いたします。
                             次回へつづく

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

〜 Carbonからの移住を開始する 〜

今回からは、最新のXcode 3とInterface Builder 3を使い、新規作成したテンプレート(雛形)プロジェクトを拡張していく作業に入ります。CocoaFrameworkを用いて再開発するアプリケーションは、MOSA Exchangeに登録されている「しんぶんし v2.1」と言うCarbonで開発された対称写真作成ユーティリティです。

さて、ここから「実況中継」となります(笑)。Carbonからの移植過程で発生したどんな小さな問題点もピックアップして提示したいと思います。まず最初にXcodeを起動してファイルメニューの「新規プロジェクト…」から「アシスタント」をオープンし、開発するアプリケーションの雛形プロジェクトの種類を選びます。「しんぶんし」は、新規ドキュメントを複数オープンするタイプのアプリケーションではありませんので、「Cocoa Document-basedApplication」でなく「Cocoa Application」の方を選択します。

ちなみに、アプリケーションのモデルオブジェクトのデータ管理用として「Core Data」を採用するという手段もありますが、その場合には「Core DataApplication」を選ぶことになります。しかし、「しんぶんし」はそれほど複雑なメインデータ構造を必要としませんので、とりあえずこのアイデアは却下しました。ただし、通常版の開発が一段落したら、モデルオブジェクトの主役をCore Dataベースへ切り替える作業も実践してみたいと考えています。楽しみは後に取っておきましょう(笑)。

プロジェクト名は「ShinbunShi3」とします。名称に日本語を使っても問題はないとは思いますが、昔からの癖(防衛本能)で英語表記とします。出来上がったプロジェクトフォルダ内には「English.lproj」が作成されています。
このフォルダには、英語ローカライズされたMainMenu.nibとinfoPlist.stringsが保存されています。これらは完成したアプリケーションパッケージの「Resources」フォルダ内に複製され利用されます。ところで「しんぶんし3」は全リソースを日本語ローカライズするので、「English.lproj」だけでなく「Japanese.lproj」フォルダも必要となります。

不思議なことに、Mac OS Xの言語環境が日本語でも、またプロジェクト名を日本語に設定しても、強制的に「English.lproj」が作られてしまい、日本語ローカライズされたファイルを含む「Japanese.lproj」を作る方法が見つかりません。Xcodeの環境設定で新規プロジェクトのディフォルト言語を設定できるかどうか探してみましたが、どうもそうした設定は見当たらないようです(どなたか方法をご存知ありませんか?)。英語メニューのタイトルやアイテムを手動で日本語(ガイドラインに準拠させた)に書き換えるのは結構面倒なので困ってしまいました。

ところが、Interface BuilderのFileメニュー「New…」から「Choose aTemplate」をオープンし、Cocoaタブから「Appleication」を選ぶと、現在のMac OS Xの言語環境にローカライズされたMainMenu.nib(日本語版)が作成できることが分かりました。それを、新しく用意した「Japanese.lproj」フォルダに保存してやれば、日本語ローカライズされたメニューを表示する事が可能です。また、infoPlist.stringsの方は、旧プロジェクトで使用していた英語版と日本語版の内容を若干変更(バージョン番号を3.0.0に)して再利用することにしました。

この作業での注意点は、日本語化されているMainMenuオブジェクトをカット&ペーストで別のnibファイルへ移さないことです。ペーストするとメニューの各タイトルにアサインされているアクション(終了ではFirst Responderに対するterminate:)がすべてクリアされてしまいます。にしても、InterfaceBuilderでは日本語ローカライズしたnibファイルを出力できるわけですから、Xcodeでも新規プロジェクトの対象となる言語が何なのかぐらい聞いて欲しいてものです(私がやり方を知らないだけならゴメンナサイ)。

MainMenu.nibのMainMenuオブジェクトを編集して、アプリケーションメニューの「アバウト」や「終了」アイテムの「NewApplication」表示を「しんぶんし3」(英語用はShinbunShi3)に変えます。 アプリケーションメニューのタイトルは、InfoPlist.stringsの「CFBundleName」の内容が反映されますので、こちらも同様に変更します。メインウィンドウのタイトルも、インスペクタから「画像一覧」(英語版はImage List)に変更します。また、インスペクタの「frame name」に何らかの名称を(今回はMain)代入しておくと、そのウィンドウの表示位置は自動で記録され、次の起動時に前回と同じ位置にオープンされるようになります。

開発の過程で関連リソースファイル(アイコンや画像)はどんどん増えていきます。そこで、プロジェクトフォルダ内にも「Resources」フォルダを作成して、その中にリソース関連ファイルをまとめておくことにします(整理整頓)。まずそこに「English.lproj」と「Japanese.lproj」を入れ直します。そして、XcodeのプロジェクトウィンドウのResourcesグループに登録されているInfoPlist.stringsとMainMenu.nibの2つを一度外し、新しい保存場所から再登録してやります(リンクの再指定)。

この時の再登録方法はかなりイレギュラルですので注意してください。「English.lproj」や「Japanese.lproj」フォルダを一覧にドラッグ&ドロップしてもだめです。英語用と日本語用のInfoPlist.stringsとMainMenu.nibを、それぞれ個別にドロップします。登録後に、InfoPlist.stringsとMainMenu.nibの左側の三角をクリックして開くとEnglishとJapaneseという2種類の項目が表示されていればOKです。これにより、プロジェクトは2カ国語
ローカライズ用リソースを管理可能となったわけです。

とりあえず今回はここまでとして、プロジェクトをXcodeでMakeして起動させてみます。システム環境設定「言語環境」の言語タブで「日本語」と「English」の優勢順位を切り替えアプリケーションを起動し、それぞれの言語でメニューが表示されるかどうか確認してください。これがうまくいけばローカライズの仕組みは正常に働いています。また、Finderから完成したアプリケーションの情報を表示してバージョンを確認してみてください。そこに
InfoPlist.stringsに記載した内容が表示されていれば、こちらもOKです。

次回は、ShinbunShi3プロジェクトのInfo.plistを編集してアイコンを追加してみます。それから、手始めとしてアバウトを表示するようなソースコードを追加してみましょう。 この連載で作成したプロジェクトファイルは、MOSAExchangeに順次アップロードしていく予定です。今回分の名称は「ShinbunShi3_07_11_30.zip」です。
つづく                               

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

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

 前回に続き、今回も作図ツール「Graphviz」で使うDOT言語の基本的な使い方を紹介します。今回は少々脱線気味ではありますが、Graphvizを知っていただくいい機会になるのでは、と考えています。

・磯野家が例題です
 Graphviz / DOT言語の利点は、論理的にグラフ構造を描けることにあります。フローチャートもその一例ですが、ドラマに登場する人物の相関関係のように入り組んだ事柄を、頭で整理しながら図形化できる点が最大のメリットといえるでしょう。
 なにかいい例題は……と考えを巡らしたところ、ありました。日本人なら誰でも知るであろう華麗なる一族、磯野家。これにしましょう。磯野家の家系図であれば、図を使えないメールマガジンであっても、読者の脳裏にダイアグラムを思い浮かばせることができますから。charAやcharBでは、色気もなにもあったもんじゃありませんしね(磯野家にもありませんが)。
 なお、磯野藻屑まで遡ると話がややこしくなるので、波平と舟、カツオとワカメ、そしてサザエ(今回はやむなくマスオとタラオは除外)の計5名を対象にします。家系図の出来上がりには、漢字の「両」のような阪神タイガースのロゴをイメージしてください。

・まずは下準備
 家系図を描くとき最低限守らなければならないルールは、男女を描き分けること、世代の違いがわかるよう親子の間に階層を設けることの2つです。前者は男を長方形(box)、女を楕円(ellipse)に書き分けることで対処できそうです。以上を踏まえて作成したDOTファイルが、次のリスト1です。
 node [〜]の使い方は前回も紹介しましたが、以降登場するノードすべてに適用する書式を記述します。「shape=××」としてノードの形状を描きわけている点に注目してください。また、家系図に矢印は使わないため、先頭近くに「edge [ dir=none]」と記述し、矢印なしの線のみとしています。
 

- - - - -
リスト1:

digraph {
   edge [ dir=none]
   node [ fontname="Osaka",fontsize=12,shape=box];
   (ここに男性のノードを列挙)
   node [ fontname="Osaka",fontsize=12,shape=ellipse];
   (ここに女性のノードを列挙)
}
- - - - -


・波平と舟の夫婦関係を証明する
 リスト1はまったく不完全な代物で、誰と誰が夫婦か、誰が誰の子なのかがまったくわからない、無階層状態です。まずは、波平と舟が夫婦であるとわかるようにしてみましょう。
 最初に考えつくのは、前回紹介した「A -> B」という記述スタイルだと思いますが、それだけでは不十分です。なぜなら、有向グラフのデフォルトでは上から下に向かってノードが描かれるため、「波平 -> 舟」では親子関係のようになってしまいます。
 そこで利用するのが、「ランク」という概念です。波平と舟のランクが同一になるよう「rank=same」の後に記述しておくことで、横に並べることが可能になります。

- - - - -
リスト2

digraph {
   edge [ dir=none]
   node [ fontname="Osaka",fontsize=12,shape=box];
   波平;
   node [ fontname="Osaka",fontsize=12,shape=ellipse];
   舟;
   { rank=same; 波平; 舟} 波平 -> 舟;
}
- - - - -


・いよいよ家系図が完成
 リスト2では、波平と舟が横一列に表示されるようになりましたが、まだまだ不十分です。3人の子供が2人の間から誕生したことがわかるよう、線を子に向けて(1段下のランクへ向けて)引けるようにしなければなりません。しかし、Graphvizでは、線は必ずノードからノードへと引かれるため、波平と舟の中間から線をおろすことができません。
 そこで利用するのが、ダミーのノードを作成する方法です。波平と舟の間に表示されないノード(適当な名前で構いません)を作成し、サザエらの子供たちにつなげます。子供たちにつなげる場合も、直接つなげるとさくらんぼの房のような形に枝分かれしてしまうので、サザエとカツオ、ワカメ用のダミーも作成します(リスト3の8行目)。子供たちのダミーを子供たちの実体のノードと接続すれば、まっすぐ下に向けて線を引けます。
 注意したいのは、波平・舟とすべての子供を「->」でつなぐ必要がないことです。3人の子のうち、中央に位置するカツオと波平・舟(どちらもダミーノード)を接続し、13行目の要領で3人のダミーノードを同ランクに設定&接続すれば、家系図の完成です。

- - - - -
リスト3

1: digraph {
2:  edge [ dir=none];
3:  node [ fontname="Osaka",fontsize=12,shape=box];
4:  /* 男性 */ 波平; カツオ;
5:  node [ fontname="Osaka",fontsize=12,shape=ellipse];
6:  /* 女性 */ 舟; サザエ; ワカメ;
7:  node [shape=none,style=filled,height=0,width=0,color=black,label=""];
8:  "波平_○_舟"; "○_サザエ"; "○_カツオ"; "○_ワカメ";
9:  { rank=same; 波平; "波平_○_舟"; 舟} 波平 -> "波平_○_舟" -> 舟;
10: "○_サザエ" -> サザエ;
11: "波平_○_舟" -> "○_カツオ"; "○_カツオ" -> カツオ;
12: "○_ワカメ" -> ワカメ;
13: { rank=same; "○_サザエ"; "○_カツオ"; "○_ワカメ"} "○_サザエ" -> "○_カツオ" -> "○_ワカメ";
14: }
- - - - -


 今回のポイントは、ランクの設定とダミーとするノードの作成です。この2つのテクニックを理解すれば、Graphviz / DOT言語の使い方も変わってくることと思います。

◇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.