MOSA Multi-OS Software Artists

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

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

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

2008-11-04

目次

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

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

  〜「iCalサーバ」編〜

 前回に引き続きiCalサービスについて解説します。前回はとりあえずサーバでiCalサービスを動かしてクライアントからアクセスするところまでをみてみましたが、ここでサービスの設定について確認しておきましょう。

◇iCalサービスの設定
 まずはサーバが標準構成の場合ですが、サービスの起動さえしてしまえば後はほとんど設定することがありません。標準構成の場合、サーバの管理には「サーバ環境設定」を使いますが、設定画面をみてみるとデータサイズの上限に関する2つの設定があるだけです。サーバとなりますと、すべてのユーザのデータを管理する必要がありますからディスクの使用量についても注意する必要がありますが、あらかじめデータサイズの上限を設定しておくことでディスクの使用量をおさえることができます。

・iCalサービスの設定(標準構成の場合)
http://www.htabata.com/img/MXS105/iCal/ServerPref_01.png

 詳細構成の場合は設定項目が少し増えます。まずiCalサービスのデータを保存する場所が設定できます。

・iCalサービスのデータ保存場所(デフォルト)
「/Library/CalendarServer/Documents」

 このディレクトリは「_calendar」ユーザがオーナーになっていますので、内容を直接確認するにはroot権限が必要になります。
 次にデータサイズの上限に関する設定がありますが「サーバ環境設定」の設定とは連動していませんので、標準構成から詳細構成に変換した場合はあらためて設定の内容を確認する必要があります。
 認証方式は「Kerberos」と「ダイジェスト方式」2つがあり、デフォルトでは両方の認証方式を利用する「すべての方式」になっています。このように新しいサービスでも積極的にKerberosを利用するようになってきています。
 あとはホスト名やポート番号の設定があります。また通信を暗号化するためにSSLを有効にすることもできます。SSHを有効にした場合には別途証明書の設定も必要になります。

・iCalサービスの設定(詳細構成の場合)
http://www.htabata.com/img/MXS105/iCal/ServerAdmin_01.png

◇委任
 では次にクライアント側の設定についてみていきましょう。前回はアカウントの設定について解説しましたが、今回はユーザ間の連携について解説します。ここではtest1とtest2の2つのユーザがサーバ上に登録されているとします。「iCal」では複数のアカウントを登録することも可能ですが、クライアント上でも別々のアカウントでログインして動作を確認してみます。
 まずtest1のアカウントですが、iCalには委任という機能があり他のユーザに自分のカレンダーへのアクセスを許可することができます。test1のカレンダーへのアクセス権をtest2に与えてみましょう。
 設定方法は「環境設定」の「アカウント」から「委任」画面を表示し、右下の「編集…」ボタンをクリックしてアクセスを許可するユーザを追加します。ここではサーバ上のユーザリストは表示されませんので、手動でアクセス権を与えるユーザのユーザ名を指定します。また他のユーザに自分のカレンダーの編集も許す場合は「書き込みを許可」をチェックしておきます。

・自分のアカウントへのアクセス管理
http://www.htabata.com/img/MXS105/iCal/iCal_test1_02.png

 アクセス権の追加が完了したら、アクセス権を与えられたtest2でも設定が必要です。test2用のアカウントをiCalの環境設定で登録し「委任」画面をみてみるとアクセス権があるユーザが自動的にリストアップされています。あとは「表示」をチェックするとtest2のアカウントでtest1のカレンダーにアクセスできるようになります。

・アクセス可能なアカウントの設定
http://www.htabata.com/img/MXS105/iCal/iCal_test2_01.png

 iCalウインドウのサイドバーにはtest2のサーバ上のカレンダーに加えtest1のサーバ上のカレンダーも表示されるようになり、test2のアカウントでtest1のカレンダーイベントを作成できるようになります。

・test2のカレンダー表示
http://www.htabata.com/img/MXS105/iCal/iCal_test2_02.png

 アクセス権の委任を行うにはクライアント上で双方のアカウントでの設定が必要になりますが、これで自分のカレンダーを他のユーザと共有したり、カレンダーの管理をまかせるといったことができるようになります。
 カレンダーはサーバ上に複数作成することができますが、委任の設定はあくまでもアカウント単位ですので、カレンダー単位で委任の設定を行うことはできません。それでは次回もiCalサービスの利用について解説します。
次回へつづく                             

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

 〜 iPhoneアプリケーションを開発しよう! 〜

「ImageBrowserで選択した画像をどのように対称表示させるか?」を実現するために、今回からCore Graphics APIの解説に移ろうと思ったのですが、iPhone SDKのNDAも解除されたことですし、旬な時期を逃さないためにも、連載を180度(それほどでもないか…)方向転換したいと思います。ラッキーな事に、Core Graphics APIはiPhoneアプリケーションの開発(iPhone SDK)においてもそのまま利用できます。そこで、連載タイトルは「Carbon視点でiPhone探求」としてみました(笑)。

ご存じの通り、iPhone用アプリケーションの開発にもCocoaを使います。Mac OS X環境ではCocoaネイティブの2D描画クラスなども利用可能なのですが、iPhone OS環境では、Core Graphicis(Quartz 2D)のみがネイティブの2D描画APIとなります。このままCore Graphics APIを解説していくと、話が完全にCocoaから離れますので、今まで実装してきた部分をiPhoneアプリケーションへ実装し直してから、2D画像描画へと話を進めることにします。「対称表示」機能を実装するためのソースコードは、そのままMac OS X用アプリケーションでも活用出来ますので(多分)、これにより二度手間を避けることができそうです(と思う)。

作業の流れとしては、今までの連載で記述してきたImageBrowserを活用したソースコードを、iPhone OSのCocoa(UIKit Framework用)に書き替えることから始めます。ただし、iPhone SDKにはあの便利な「Image Kit」はありませんので、その部分については別の方法を考えなくてはいけません。また、iPhoneではファイルから画像を読み込むような環境は構築できませんので、その部分についても別アプローチが必要となります。とりあえず、今まで本連載で作成したソースコードは、雛形プロジェクトとしてMOSA Exchangeにアップロードしておきました。名称は「ShinbunShi3_08_11_14」です。今までの本連載の解説と共にご参照ください。

Mac OS X環境のCocoaは「AppKit(Application Kit)」と「Foundation」という2つのFrameworkから構成されていました。そのうちFoundationの方は、iPhone OSでも使用できる共通仕様です(サブセットですが)。そして、もう片方のAppKitを「UIKit」に置き換えるとiPhone用Cocoaの構成となります。ちなみに、iPhone OSでは「UIKit」と「Foundation」を合わせて「Cocoa Touch」と呼ぶようです。それ以外に利用できるFrameworkとしては、Core Animation、Core Graphics、OpenGL ES(OpenGLのサブセット)、Core Audio、CFNetworkを含むCore Foundationなどがあります。残念ながらQuickTimeやCore Imageなどは利用できません。

iPhoneでGUI(グラフィカルユーザインターフェース)を構築するにはUIKitを最大限活用します。UIKitで採用されているGUIは、ビューやコントロールを基盤にするなど、Mac OS Xのそれと多くの共通点があります。しかしメニューが存在しないなど、異なる点も多々見受けられます。また、iPhone OSにはMac OS Xではその仕組みが無い特殊なGUIも存在していることから、Mac OS XのGUIに固執する必要は無いようです。逆にUIKit独自のGUIをうまく活用してこそ、iPhoneらしいアプリケーションを開発することが可能となるでしょう。

CocoaでMac OS X用アプリケーションを開発してきたデベロッパーであれば、AppKitFrameworkに含まれるクラスやメソッド名の先頭2文字を、NSからUIに変更することで、Mac OS X側で習得した技術スキルの多くを再利用できそうです。しかし、GUIの種類やその制御方法についてはiPhone独自の仕組みも多数あるので、今までの知識を鵜呑みにして対処すると痛い目に遭うかもしれません。謙虚に構えましょう(笑)。

さて、iPhone用アプリケーションを実機にインストールして開発できるようになるまでの手順ですが、ざっとみて以下の様な過程となります。開発対象マシンは最新のMac OS X 10.5.xをインストールしたインテル版Macintoshとなります(PPC版では開発できませんので御注意を!)。

(1)開発用マシン(Macintosh)を用意する
(2)iPhoneかiPod touchを購入する(当然ですね)
(3)Apple IDを作成する(ADCメンバーになる)
(4)http://developer.apple.com/iphone/へアクセス
(5)Apple IDとパスワードでログインする
(6)iPhone SDKをダウンロードして開発用マシンへインストール
(7)ドキュメントやサンプルもこのサイトからダウンロード可能
(8)さらなる作業のため「Program Portal」サイトへ入る
(9)実機インストールを可能にする各種認証用の手続きを行う

チュートリアルビデオや技術ドキュメント、サンプルソースコードなどの開発用リソースはApple IDでログインした「iPhone Dev Center」からダウンロードすることが可能です。ここにあるドキュメントの内容はすべて英語ですが、このうちの幾つかの重要な物に関しては日本語訳されており、以下のサイトからダウンロードすることが可能です(こちらもApple IDでのログインが必要)。

http://developer.apple.com/jp/iphone/library/japanese.html

「Getting Started Documents」(iPhoneアプリケーション開発の概要)
「Coding How-To’s」(コーディングに関するFAQをまとめてある)
「iPhone OS プログラミングガイド」(iPhoneプログラミング全般)
「iPhone ヒューマンイン ターフェイス ガイドライン」(GUIの使い方ガイドライン)
「Objective-C 2.0 プログラミング言語」(Objective-C 2.0の解説書)
「iPhone OS View Controller プログラミングガイド」(UIViewController使用方法)
「iPhone OS Table View プログラミングガイド」(UITableView使用方法)
「iPhone OS Address Book プログラミングガイド」(AddressBook使用方法)
「iPhone Simulator プログラミングガイド」(iPhone Simulator簡易マニュアル)
「iPhone アプリケーション チュートリアル」(iPhoneアプリ開発行程の概要)
「iPhone OS Xcode クイックツアー」(Xcodeの簡易マニュアル)

まず最初に読むべきドキュメントは「Getting Started Documents」です。これを読めば、iPhoneアプリケーション開発において、どのような種類の技術の習得が必要なのかを理解できます。そして、Objective-Cの未経験者は「Objective-C 2.0 プログラミング言語」を適度にカバーし、続いて「iPhone ヒューマンイン ターフェイス ガイドライン」と「iPhone OS プログラミングガイド」を読破します。最後の2つのドキュメントはiPhoneアプリケーション開発者にとっては必読書ですので、絶対に避けて通ることはできません。覚悟しましょう(笑)。

実機を用いた(iPhoneやiPod touchへインストール)開発へ入る前には「iPhone アプリケーション チュートリアル」を読みます。開発ツールについて詳細を確認したい場合には「iPhone OS Xcode クイックツアー」と「iPhone Simulator プログラミングガイド」を調べます。アプリケーションに実装したい機能について何かしらの疑問が湧いた時には「Coding How-To’s」が大変参考になります。UIKitに属する主要クラスを解説したドキュメントとしては「iPhone OS View Controller プログラミングガイド」「iPhone OS Table View プログラミングガイド」「iPhone OS Address Book プログラミングガイド」の3つが用意されています。

Mac OS X環境でCoocaアプリケーションを開発していた方は、「iPhone OS Xcode クイックツアー」や「Objective-C 2.0 プログラミング言語」を読む必要はないでしょう。ただし、UIKitではObjective-C 2.0のプロパティ機能を頻繁に使うので、その箇所だけは復習しておくべきかもしれません。それにしても、Interface Builderの使い方に関しての日本語ドキュメントが用意されていないのは残念ですね。どちらかと言うと、iPhoneアプリケーション開発には、XcodeよりInterface Builderに関する知識の方が重要になるからです…。ちなみに英語ドキュメントは「Interface Builder User Guide」です。

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

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

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

・困ったときの[TAB]頼み
 これからTerminalに親しもうと考えている人に、ぜひ覚えていただきたい機能が「入力補完」です。EclipseやNetBeansなどのJava系開発ツールに搭載されているあの機能……といえばピンとくるかもしれません。そう、長い関数の先頭数文字を入力すると残りの文字が自動的に入力される、あの便利な機能がTerminalでも利用できるのです。
 Terminalにおける入力補完機能は、シェルにより提供されます。Leopardでデフォルトのシェルに設定されているbashの場合、適当な文字列を入力したあと[TAB]キーを押すことにより、入力補完を実行します。困ったとき、面倒に感じたときには[TAB]を押す、まずはそのように覚えてください。

・なにはともあれ入力補完
 それでは、いくつか実例を紹介してみましょう。最初のお題は「カレントディレクトリ」の変更、いうなれば作業場所として使うフォルダを書類(Documents)フォルダにするというものです。まずはTerminalを起動し、プロンプト($)が表示されたところで「cd 」(「cd」の直後には半角スペース)と入力してください。

- - - - -
$ cd ■

注:■はカーソルを意味します。
- - - - -

 この状態で、大文字の「D」を入力し、続けて[TAB]キーを2回押してください。ホームフォルダ直下にある「D」から始まるファイルまたはフォルダが、一覧表示されるはずです。ホームフォルダ直下に「D」から始まるファイル/フォルダを作成していなければ、「Desktop」と「Documents」、「Downloads」という3つのフォルダが表示されたはずです。

- - - - -
$ cd D■[TAB][TAB]
Desktop/   Documents/ Downloads/ 
$ cd D■
- - - - -

 次に行うのが、入力補完の精度を上げるための絞り込みです。[TAB]を押したときには、カーソルの左側に位置する文字列をもとに、カレントディレクトリ(Terminalの起動直後はホームフォルダ)内が検索されるため、「D」より「Dxx」のほうがヒットするファイル/フォルダ数は少なくなります。先ほどの例でいえば、「Do」と入力してから[TAB]を押すと、「Desktop」は除外されることになります。そして候補が1つしかない場合、[TAB]キーを1回押せば条件に一致するファイル/フォルダがカーソル位置へ挿入されます。

- - - - -
$ cd Do■[TAB][TAB]
Documents/ Downloads/ 
$ cd Doc■[TAB] → Documents■
- - - - -


 もうおわかりいただけたと思いますが、この場合「Doc」に続けて[TAB]を押すだけで、「Documents/」(末尾の「/」は対象がディレクトリであることを意味します。省略可能です)と入力できるのです。カレントディレクトリ上に、先頭数文字が重複するファイル/フォルダが多ければそれだけ効率は落ちますが、長いファイル名をスペルミスなく入力できることの利点のほうが大きいと思います。
 ところで、シェルでは国際化されていない(BSDレイヤーとしての)ファイル/フォルダ名を扱うため、「書類」フォルダは「Documents」フォルダとしてしかアクセスできません。bashの入力補完機能についても、Mac OS Xで使われているGNU readline代替のライブラリ(Editline Library、libedit)は、UTF-8およびマルチバイト文字を通さない仕様のため、日本語のファイル/フォルダ名は入力補完の対象になりません。不可能ではありませんが、LeopardではASCII文字のみ可と考えて差し支えない状況です。

・コマンド名も入力補完
 上述の例では、ファイル/フォルダを対象にした入力補完を紹介しましたが、コマンドも対象にできます。コマンドサーチパス(コマンドが保存されるディレクトリ群の情報、デフォルトでは/binと/sbin、/usr/binと/usr/sbin、/usr/local/bin)に登録されたディレクトリに保存されていれば、コマンド名の先頭数文字プラス[TAB]キーで補完できます。これで、コマンド名の綴り
を正確に記憶しておく必要がなくなる(先頭数文字は忘れずに)ことでしょう。

- - - - -
$ ba■[TAB][TAB]
banner  basename  bash  bashbug  batch 
- - - - -

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