英和〜「Deployment」編〜今回からDeploymentの応用編について解説します。Deploymentの課題について振り返ってみますが、コンピュータをセットアップするときまずはシステムのインストールをどうするかという問題があります。NetBootでクライアントコンピュータを起動して運用する場合には、これまで解説してきましたようにサーバ上にのみシステムのイメージを設置しておけばよいということになります。内蔵ハードティスクにシステムをインストールする場合、インストール方法は色々と考えられますが、どのような方法にしてもポイントはシステムを起動中のディスクにはシステムをインストールすることはできないということです。あたりまえのことではありますが、例えばインストールディスクからシステムをインストールする場合、いったんインストールディスクからコンピュータを起動して内蔵ディスクを未使用の状態にしてからインストールを実行します。NetInstallではこの作業をネットワーク経由でおこないます。クライアントをネットワーク経由で起動し、内蔵のハードティスクにシステムをインストールするわけです。◇他のソリューションシステム標準の機能だけでもある程度のことはできますが、他のツールを組み合わせることにより、より高度な使い方ができます。以前はこのようはツールとして「NetRestore」が有名でしたが、2008年に開発が打ち切られています。ServerにはNetRestoreという同じ名称の機能が搭載されることがすでに公表されていますが、その詳細はまだ明らかになっていません。Serverhttp://www.apple.com/server/macosx/features/client-management.htmlNetRestoreのWebサイトでも紹介されているのですが、「DeployStudio」というDeploymentをサポートするソフトがありますので、こちらを取り上げてみたいと思います。DeployStudioは柔軟に設計されていますので、色々な使い方ができるのですが、例えばNetBootと組み合わせて使用することができます。DeployStudioでは専用のNetBootイメージを作成することができ、クライアントをDeployStudio用のNetBootイメージから起動するとDeployStuioのランタイムが起動して、システムのリストアを実行することができます。ランタイムではカスタマイズ可能なワークフローを利用することができ、システムのリストア以外にもパッケージのインストールや、NetBoot起動したクライアントのシステムからイメージを作成してサーバにアップすることもできます。標準でサポートされているものの、GUIからは利用することのできないマルチキャストによるリストアにも対応していたり、NetBoot起動したクライアントでVNCを起動してリモートで画面共有ができたりします。◇DeployStudioのインストールではまずインストール方法ですがDeployStudioのWebサイトからインストーラをダウンロードします。Server」をダウンロードします。原稿執筆時点での最新版はv1.0rc12(stable)となっています。対応するOSのバージョンは10.4.11および10.5.0以降となっています。・DeployStudioのWebサイトhttp://www.deploystudio.com/Home.htmlではこのインストーラをどこにインストールするかですが、NetBootと組み合わせて利用するにはまずNetBootサーバ上でインストールします。リモートでDeployStudioを管理したい場合には、管理用のMacにもインストールします。DeployStudioをインストールすると「/アプリケーション/ユーティリティ」に以下の3つのツールがインストールされます。Server」という項目が追加されます。ここでは、次のようなシステム構成を例に解説をしていきたいと思います。X)・ターゲットコンピュータNetBootサーバと管理用MacにはそれぞれDeployStudioをインストールしておきます。NetBootサーバにはあらかじめリストア用のシステムイメージが用意されているものとします。ターゲットコンピュータとはDeployStudioでシステムをリストアするためのコンピュータです。Server」を表示し、スイッチをOnにします。daemonが起動します。この手順はNetBootサーバ上のみでよく、管理用Macでは行う必要はないです。この時点ではレポジトリへのアクセスに失敗したとのメッセージが表示されますが、これはこの後の設定で解消されます。レポジトリとはリストア用のイメージなどを格納しておくフォルダのことです。レポジトリをNetBoot以外のサーバで運用することも可能です。・Daemonの起動http://www.htabata.com/img/MXS105/ds/Pref_01.pngさて、それでは次回は設定方法の続きを解説いたします。〜今回は、テーブルビュー(UITableView)に必要とされるデータソース(dataSource)とデリゲート(delegate)のメソッドについて解説します。OS独自の仕組みも沢山見受けられますので、そちらも含めて話を進めたいと思います。データソースには、UITableViewDataSourceプロトコルに準拠したメソッドを実装します。デリゲートには、UITableViewDelegateプロトコルに準拠したメソッドを実装します。Owner」(UITableViewControllerのサブクラスであるRootViewController)に接続したことを思い出してください。よって、両プロトコルに準拠したメソッドはRootViewControllerクラスに実装することになります。データソースからです。UITableViewDataSourceプロトコルには、全部で11のメソッドが用意されています。これらのメソッドは、UITableViewに内容を表示するために必要となるデータを提供します。オプション)が9つ定義されています。(NSInteger)section;指定セクション(テーブルの表示グループ)内のデータ配列数を返す。テーブル表示が何行あるのかを返します。何も表示されていなければゼロを返します。*)indexPath;テーブルビューは、表示内容(文字列や画像)を配置したUITableViewCell(UIViewのサブクラス)が順番に並びます。指示された行番号(indexPath.rowで参照)に対して、そこに表示すべきUITableViewCellオブジェクトを返してやります。*)tableView;セクション数(テーブル表示のグループ分け数)を返します(デフォルトは1)。(NSInteger)section;指定セクションに表示したいヘッダータイトル(文字列)を返します。*)tableView;テーブルビューの右側に表示されるインデックス(A,B,Cなどの索引)の文字列を含んだ配列を返します。インデックスを使わない場合には実装しません。atIndex:(NSInteger)index;インデックス(索引)に対応するテーブルのセクション番号を返します(Bは1とか)。*)indexPath;行の挿入や削除に用います。行が編集可能かどうかの判断(YESかNO)を返します。NOだと(+)や(ー)マークは表示されません。*)indexPath;挿入や削除などの行の編集が行われた場合に呼ばれます。実際の編集処理を、このメソッド内に記述します。どのような種類の編集かはeditingStyleで判断します。*)indexPath;行の順番の入れ換えに用います。行が移動できるかどうの判断(YESかNO)を返します。YESを返すとテーブル編集時に行の右側に移動用タップエリアが表示されます。*)destinationIndexPath;行の順番の入れ換えに用います。行が移動させられた時の実際の処理を、このメソッド内に記述します。続いてデリゲートです。UITableViewDelegateプロトコルには全部で19のメソッドが用意されています。3.0で新規に追加されたメソッドが3つ、廃止(Deprecated)されたメソッドが1つ含まれています。*)indexPath;その行番号(indexPath.row)の行の高さを指示する(デフォルトは44ピクセル)。*)indexPath;行のインデンテーションレベルを返す(グループタイプのテーブルビューのみに有効)。)内容をカスタマイズすることが可能。このメソッドはセル描画時に呼ばれる。accessoryButtonTappedForRowWithIndexPath:(NSIndexPath*)indexPath;アクセサリー(行右側の小さなボタン)がタップされた時の処理を実装する。*)indexPath;行の右側に表示されるアクセサリーのタイプ(>など)を指示する。3.0で廃止(Deprecated)された。*)indexPath;行の選択(行をタップ)開始時に実行する処理を実装する。nilを返すと選択拒否となる。*)indexPath;行の選択(行をタップ)終了時に実行する処理を実装する。*)indexPath;行の選択解除(別の行をタップ)開始時に実行する処理を実装する(セレクション開始)。nilを返すと選択解除拒否となる。*)indexPath;行の選択解除(別の行をタップ)終了時に実行する処理を実装する(セレクション開始)。(NSInteger)section;セクションヘッダーに配置するカスタムビュー(UIView)を指示する。(NSInteger)section;セクションフッターに配置するカスタムビュー(UIView)を指示する。*)indexPath;編集開始時に呼ばれる(例えばナビゲーションバーの編集ボタンをタップした時)。*)indexPath;編集終了時に呼ばれる。*)indexPath;追加や削除などの編集スタイルを返す。これにより編集時に行の左側に(+)や(ー)などのマークが表示される。*)indexPath;編集時に行の右側に表示される赤い「削除」ボタンの文字列内容を変更する。*)indexPath;編集時に行をインデントさせ(+)や(ー)マークを外に表示させるかどうか判断する。グループタイプのテーブルビューのみに有効(デフォルトはYES)。*)proposedDestinationIndexPath;編集モードで行の移動や並び替えを実行した場合に呼ばれる。必要ならば、実際のモデルオブジェクトの順序入れ換えをここで実行する。3.0で廃止されたtableView:accessoryTypeForRowWithIndexPath:メソッドを使っていたアクセサリータイプの変更は、UITableViewCellのaccessoryTypeプロパティで指示するよう推奨されています。3.0になり、行の選択解除時に呼び出されるデリゲートメソッドが追加されているのですが、UITavleViewのヒューマンインターフェースガイドラインによると、テーブル行の選択状態はそのまま残しておいてはいけないはずでした。サブクラス対策でしょうか?次回は、本アプリのビューコントローラー(RootViewController)に、必要とされるデータソースとデリゲートメソッドの実装を行います。テーブルビューに表示する内容は、モデル(Model)オブジェクトに登録されていいる画像ファイルの名称やサムネイルとなる予定です。〜・コマンドラインからPHPを使う前回紹介した方法は、WebブラウザなどのクライアントサイドからPHPを実行できるよう、ApacheモジュールのPHPをセットアップするものです。Leopardには、コマンドライン版のPHP(/usr/bin/php)も収録されているため、/etc/apache2/httpd.confを編集してApacheの設定を変えることなく、つまりはWebサーバ(システム環境設定でいえば「Web共有」サービス)を動作させることなく、PHPスクリプトを実行することが可能です。World」は、以下に示すとおりphpコマンドを実行すれば表示できます。処理する役割を果たします。PHPのタグ()を入力する必要はありません。5の豊富な関数も利用できます。4.3からサポートされたstr_shuffle関数を利用し、与えられた文字列(ここでは「mosa」)をランダムに入れ替えて返しています。-ファイルとして存在するPHPスクリプトを処理することもできます。オプション「-f」(省略可)に続けてファイル名を指定すれば、結果が標準出力(ターミナルの初期値ではターミナルの画面)へアウトプットされるので、次に示すように結果をファイルへリダイレクトして保存することもできます。PHPスクリプトの拡張子が「.php」である必要はなく、適当なものでも正しく処理されます。-・PHPスクリプトをチェックするphpコマンドは、スクリプトの構文チェックにも利用できます。使用するオプションは「-l」、スクリプトを引数に指定して実行すれば、結果が表示されます。「)」の記述漏れなど単純なミスの発見に役立ちますが、未定義関数の使用などといった構文以外に起因するエラーは検出できません。-複数のスクリプトをまとめてチェックするときには、findコマンドと組み合わせて実行すると効率的です。以下のコマンド実行例では、カレントディレクトリ以下にある拡張子「.php」のファイルすべてを対象に、構文チェックを行っています。5は、phpコマンドに「-R」オプションを追加しています。このオプションを使用すると、標準入力から1行ごとにデータを取り込み、それを順に処理することが可能になります。以下に示すコマンド実行例は、lsコマンド(ファイルリストを表示するコマンド)とphpコマンドをパイプし、lsコマンドの結果をPHPのstrtoupper関数(引数の文字列に含まれる英字すべてを大文字に置換する)で変換し、ターミナルの画面に出力するものです。このように「-R」オプションを使用すれば、mb_convert_variables関数でテキストファイルのエンコーディング形式を一括変換する、といったPHPの処理がターミナル上で実行できます。〜)、シェルスクリプトとして活用できます。反対に、PHPスクリプトからUNIXコマンド/シェルスクリプトを呼び出し、クライアントであるWebブラウザに結果を返すこともできます。次回は、そのときに使用されるPHPの関数「shell_exec」の使用例を紹介する予定です。OSは米国アップル社の登録商標です。そのほかの各製品名等はそれぞれ各社の商標ならびに登録商標です。Artistsアクセスリンクについて個人情報の取り扱いについて支援のお願いお問い合せこのサイトに掲載されている文章、画像を含む一切のデータの無断転載を禁止します。