MOSA Multi-OS Software Artists

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

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

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

2008-12-02

目次

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

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

  〜「iCalサーバ」編〜

 クライアントからiCalサービスを利用するにはMac OS Xにデフォルトでインストールされている「iCal」を使用するわけですが、LeopardにはiCalサービスをより活用するためのツールとして「ディレクトリ」というユーティリティがバンドルされています。今回はこのツールについて解説します。

◇ディレクトリ
 まずこのユーティリティのインストール場所ですが、「/アプリケーション」の「ユーティリティ」フォルダになります。「ディレクトリユーティリティ」というよく似た名前のユーティリティもありますので間違わないように注意してください。
 このユーティリティは単独では動作せず、ディレクトリサーバと連携することで機能します。このため「ディレクトリ」を使用するにはあらかじめクライアントをOpen Directoryのマスター(あるいはレプリカ)に接続しておく必要があります。

 「ディレクトリ」を起動するとOpen Directory上に登録されているユーザおよびグループレコードの一覧が表示されます。またレコードを表示するだけでなく新規に追加したり既存のレコードを編集することもできます。
 レコードの変更を行うには適切なアクセス権が必要になりますので認証が必要になり、デフォルトではKerberosによる認証が行われます。認証方法は環境設定で変更することもできます。というわけで、この「ディレクトリ」というユーティリティを使えばOpen Directory上のレコードを管理することができるのです。
 ユーザアカウントやグループアカウントの管理を行うのであれば「ワークグループマネージャ」を使用すればよいのですが「ディレクトリ」を使用することでiCalサービスで利用可能なデータを管理することができます。例えば会議室やプロジェクタを管理し、iCalサービスで利用することができるのです。
 「ディレクトリ」では次の4種類のデータを管理できます。

・個人(Users/People)
・グループ(Groups)
・場所(Places)
・リソース(Resources)
※括弧内はOpen Directory上でのレコードの保存場所

 「個人」とはユーザアカウントのことで「ディレクトリ」上でレコードを追加することもできます。ただし「ディレクトリ」で追加するのはログイン可能なユーザアカウントではなくアドレスデータとよばれるレコードになります。あらかじめ「ワークグループマネージャ」や「サーバ環境設定」でユーザアカウントを登録しておけば「ディレクトリ」上では「個人」として参照できます。さらに、ユーザアカウントであれば「マネージャ」や「直属の部下」といった属性も設定でき、企業などでの組織体系を管理することもできます。
 「グループ」は「個人」とは異なり、「ディレクトリ」上で追加したグループはグループアカウントとして登録されます。またメンバーの編集を行うこともできます。
 「場所」を登録しておくと「iCal」でイベントを作成するときの場所として利用できます。「場所」にはマップを設定することもできます。マップを設定するにはあらかじめ「ファイル」>「マップを編集…」メニューからマップを登録しておきます。マップは「場所」だけではなく「個人」や「リソース」にも設定できます。

・「場所」へのマップの設定
http://www.htabata.com/img/MXS105/iCal/Directory_02.png

 イベントの場所として利用するには「ディレクトリ」で「場所」を追加したときに「スケジュール」の設定で予約可能に設定し、カレンダーサーバを指定しておきます。

・「場所」のスケジュール設定
http://www.htabata.com/img/MXS105/iCal/Directory_03.png

 すると「iCal」の「ウインドウ」>「アドレスパネル」メニューからリソースが参照できるようになり、ドラッグ&ドロップでイベントの場所として設定できます。

・イベントへの場所の設定
http://www.htabata.com/img/MXS105/iCal/iCal_test1_03.png

 「リソース」はあらかじめ様々なタイプが用意されており、たとえば社内で共有するような備品の管理に用いることができます。リソースタイプを新たに追加することもできます。

・標準で用意されているリソースタイプ
  コピー機、スキャナ、デジタルカメラ、ノートブック
  ビデオカメラ、プリンタ、プロジェクションスクリーン
  プロジェクタ、会議電話、自動車

 このように「ディレクトリ」を使えばiCalサービスをより効果的に活用できるようになります。当然のことですが「場所」や「リソース」はあらかじめ誰かが追加しなければ利用できませんので、実際に利用するには運用面のことも考えておかなければなりません。またこの機能はLeopardで新しく追加されたものであり、残念ながらまだまだ荒削りな部分もありますので導入を検討する
場合はまずは小規模なグループで試験的に運用を始めてみるのもよいでしょう。
次回へつづく                             

小池邦人のCarbon視点でiPhone探求(2008/11/28)

 〜 サンプルは一番身近な先生 〜

技術ドキュメントを一通り読破したら、次にすべき事は、サンプルソースコードを参照してiPhoneアプリケーションで実現可能なことを正しく認識することだと思います。今回は「iPhone Dev Center」からダウンロードできるサンプルソースコードの内容を詳しく紹介したいと思います。

現在「iPhone Dev Center」サイトには43のサンプルソースコードが登録されています。それを独断と偏見でカテゴリー別に分類してみました。幾つかのサンプルソースコードは、その機能のため複数のカテゴリーに含まれていますので御注意ください。サンプルソースコードには実機(iPhoneかiPod touch)でしか起動できないものがあります。またアクセレロメータ(加速度センサー)関連の機能は実機でしか動作確認できません。それから、一部のサンプルはWWDC 2008やTechTalk(東京)で提供されたものです。参加された方は、参加者のみ入ることができる閲覧サイトの方を確認してみてください。

・3D描画(OpenGL ES)関連

「GLGravity」シミュレータでは3Dオブジェクトの回転描画を行うデモ
「GLPaint」OpenGLテクスチャを利用したペイントアプリのデモ
「GLSprite」OpenGLテクスチャを利用した簡単なスプライトアニメーションデモ

・2D描画( Quartz2D)関連

「QuartzDemo」Quartz2D APIを使う事で可能な2D描画機能のデモ(必見)
「Reflection」Quartz2D APIでオリジナル画像の下方へ鏡面イメージを描画

・テキスト入力関連

「HelloWorld」キーボードからの簡単なテキスト入力とその表示を行うデモ
「EditableDetailView」UITableViewでコンテンツ用のテキスト入力を行うデモ

・アクセレロメータ(加速度センサー)関連

「AccelerometerGraph」加速度センサーから得たX,Y,Z要素をグラフ表示するデモ
「BubbleLevel」加速度センサーを利用した水平器シミュレートのデモアプリ
「GLGravity」実機ではデバイスの傾きに反応した3Dオブジェクト描画(必見)

・オリエンテーション(デバイスの方向)関連

「WhichWayIsUp」デバイスの回転方向を認識して表示を調整する簡単なサンプル
「RestaurantViewer」デバイス回転でビューのレイアウトを変更(WWDCで提供)

・ロケーション(位置情報)関連

「LocateMe」現在の位置(GPS)情報を入手するためのCore Location APIのデモ

・アニメーション関連

「MoveMe」Core Animation APIを利用した画像の移動と拡大縮小のデモ
「ViewTransitions」Core Animation APIを利用したUIViewのトランジションデモ
「TheElements」UIViewとボタンのフリップ(反転)を試すことができる周期表アプリ
「Metronome」メトロノーム(針の回転アニメとサウンド)をシミュレートしたデモ
「SimpleAnimation」非常に簡単なUIViewアニメーションサンプル(WWDCで提供)

・オーディオ関連

「aurioTouch」オーディオ入力と再生をモニタ(オシロスコープ)するデモアプリ
「oalTouch」Open AL(3D音響効果)APIの機能を試すデモアプリ(実機専用)
「SpeakHere」Audio ToolBox APIを利用した音声の録音と再生のデモ
「SysSound」バイブレーションと短いサウンド(5秒以内)の再生を行うデモ
「Metronome」こちらも短いサウンドの再生方法を確認できるデモアプリ

・ビデオ関連

「MoviePlayer」Medea Player Frameworkを利用した映像(Movie)の再生デモ

・ゲーム関連

「CrashLanding」加速度センサーを用いたロケット着陸ゲーム(何故か登録削除?)
「TouchFighter2」本格派シューティングゲームサンプル(WWDCやTechTalkで提供)

・コントロール関連

「PageControl」UIScrollViewとUIPageControlの使用方法を解説したデモ
「UICatalog」iPhoneのGUIに用いられるコントロールやビューの機能一覧(必見)

・ビューコントローラ関連

「DrillDownSave」UINavigationControllerの階層レベルをファイル保存するデモ
「NavBar」UINavigationControllerとUIViewControllerの利用方法の総合的なデモ
「SimpleDrillDown」UINavigationController使ったUITableViewの階層表示デモ

・テーブルビュー関連

「TableViewSuite」5段階レベルのサンプルでUITableViewの使い方を解説(必見)
「Accessory」UITableViewのセル右側に表示されるアクセサリ表示のカスタム
「EditableDetailView」UITableViewでコンテンツのテキスト入力を行うデモ
「HeaderFooter」UITableViewのカスタムヘッダーとカスタムフッターのデモ
「TableSearch」UITableViewのコンテンツサーチ(UISearchBar使用)のデモ
「TouchCells」UITableViewのカスタムセル(タッチ可能)を実装しているデモ

・ビュー関連

「UICatalog」iPhoneのGUIに用いるコントロールやビューの機能一覧(必見)
「HeadsUpUI」UIView上にオーバレイ描画を使ったGUIを構築するデモ
「PageControl」UIScrollViewとUIPageControlの使用方法を解説したデモ
「Scrolling」画像表示を利用してUIScrollViewの2種類の機能を示したデモ

・マルチタッチ関連

「Touches」マルチタッチで3つのオブジェクトを同時にドラッグ操作するデモ
「MultiTouchDemo」2本指での画像ピンチ操作(拡大縮小)デモ(WWDCで提供)

・データベース(SQLite)関連

「SQLiteBooks」SQLite APIの利用方法を解説したデーターベースアプリのデモ

・ネットワークとインターネット関連

「SeismicXML」NSXMLParserを使うことでXMLドキュメントをパースするデモ
「BonjourWeb」ボンジュールによって特定ネットワークサービスを探し出すデモ
「Reachability」通信は携帯回線かWiFi経由かなどを判断する方法を示したデモ
「URLCache」ウェブサーバーからの画像ダウンロードとキャッシュ活用のデモ
「WiTap」ボンジュールとネットサービス&ネットブラウザーを活用するデモ

・ユーザーデフォルト(環境設定)関連

「AppPrefs」名前やテキストカラーなどをアプリケーション環境設定へと保存

「MoviePlayer」背景色やスケールなどをアプリケーション環境設定へと保存

・アプリケーション起動関連

「LaunchMe」opneURLに定義されたURLを渡して別アプリケーション起動するデモ

・セキュリティ関連

「CryptoExercise」Cryptographic(暗号)APIを利用するデモ(実機専用)
「GenericKeychain」Keychain(認証)APIを利用するデモ(実機専用)

サンプルソースコードの確認が終了しましたので、次回からは、さっそくXcodeを利用したiPhoneアプリケーションの開発に取り組みたいと思います。まずは、Xcodeで用意されているテンプレート(雛形)プロジェクトの種類を調べてみることにします。

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

〜 いま敢えて学ぶTerminalのイロハ(4) 〜

・転ばぬ先の「man」
 コマンドは使うものであり、暗記するものではありません。自然に覚えてしまうならともかく、無理にアルファベットのら列を記憶しようなど愚の骨頂、必要なときには調べればいいのです。そんなとき拙著「Mac OS Xターミナルコマンド ポケットリファレンス」があれば言うこと無しですが(笑)、実際のところ「man」さえ覚えておけば十分です。これだけは覚えてください、Online-manualの「man」です。
 manの使い方はシンプルそのもの、知りたいコマンド名を引数に与えればOKです。「ls」というコマンドの用法を知りたければ「man ls」、openコマンドならば「man open」、といった具合です。「man man」とすれば、manの使い方も確認できます。Mac OS Xに収録されているマニュアルはすべて英語ですが、あるとないとでは大違いです。
 manの操作方法ですが、SPACEキーで次ページ、[b]キーで前ページ、[q]キーで終了と、この3つを覚えておけば十分です。上下のカーソルキーも利用できます。[g]キーでマニュアルの先頭ページ、[SHIFT]+[g]キーで最終ページに移動することも、覚えておいて損はありません。

- - - - -
$ man open
- - - - -


・コマンドを逆引きしよう
 覚えて便利なmanですが、対象とするコマンドを正確に入力する必要があります。コマンド名がわからない、綴りに自信がないといった場合には、なにかしらのキーワード(ただし英語)を指定し、コマンド名を割り出す方法があります。
 キーワードから関連するコマンド名を調べるときには、「-k」オプションを付けてmanを実行します。たとえば、ファイルの複製を行うコマンドを調べたいとき、ファイルは「file」、複製は「copy」ですから、以下の要領でmanを実行すればいいことになります。複数のキーワードを指定する場合、または「Mac OS X」のようにスペースを含むキーワードを使用する場合、両端を
「’」で囲むことがポイントです。

- - - - -
$ man -k 'copy file'
- - - - -


 上記のコマンドラインをLeopardで実行すると、次のような結果が得られるはずです。結果に目を通せば一目瞭然、知りたいコマンドは「cp」だとわかります。

- - - - -
CpMac(1), /Developer/Tools/CpMac(1) - copy files preserving metadata and forks
File::Copy(3pm)          - Copy files or filehandles
cp(1)                    - copy files
cpio(1)                  - copy file archives in and out
- - - - -


・マニュアルをキーワード検索
 Leopardに収録されているオンラインマニュアルは、すべて英語で記述されているため、読むには体力も必要です。コマンドは基本的に利便性を追求するための道具ですから、知りたい部分だけを効率的に読む、というスタンスのほうが気疲れしません。
 manの検索機能は、マニュアルから特定のキーワードを探すときに便利です。使い方はかんたん、マニュアルを表示した状態で[/]キーを押し、画面左下に表示された「/」に続けてキーワードを入力、[enter]キーを押せばOKです。するとヒットした箇所が反転表示されるので、[n]キーを押して次のヒット位置へ、[SHIFT]-[n]キーで前のヒット位置へ移動という作業を続
け、目的の情報にたどり着くという流れです。

・Linux / FreeBSDの日本語マニュアルは?
 英語の文章に耐性があれば、以上の方法で必要にして十分な情報が得られるはずですが、やはり日本語の文章のほうが理解しやすく、誤読の危険性も減ります。Web上に存在するLinuxやFreeBSDを対象にした「日本語man」を使う、という手も一計でしょう。

FreeBSD 日本語マニュアル検索
http://www.jp.freebsd.org/man-jp/search.html

JM Project
http://www.linux.or.jp/JM/

 ただし、所詮は異なるOSですので、いくつかの確認事項があります。まず、当たり前ですが、Mac OS X独自のコマンド(open、lipo、otoolなど)は、他のOSをターゲットとしたWebサイトに期待できないこと。これは、Terminalでmanを実行するか、市販の書籍をお読みいただくしかありません。
 lsやcpといった基本的なコマンドは、多くの部分はLinux/FreeBSDで共通していますが、若干の機能差があることに注意が必要です。たとえば、Linuxを対象にしたJM Projectでは、GNU製のlsを対象にしていますが、Leopardに収録されたlsは独自に拡張されているため、デフォルトでの動作やオプションに割り当てられた機能(-vオプションの挙動など)が異なります。
 一方、GNU製のコマンド(tar、gzipなど)は、バージョンの差を除けばすべてのOSで共通です。FreeBSD/Linuxどちらの日本語マニュアルも参考になるので、大いに利用すべきでしょう。

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