6/22-26はソウルでMaxワークショップ

私は参加しないんですけど、6/22から26まで、韓国はソウルのHanyang大学でMax/MSP/Jitterのワークショップが開催されます。講師はCycling ’74のGregory Taylor氏(メインはドキュメント担当かな?)とWesley Smith氏(Jitterの開発者の一人)なので、ディープな質問にも答えてくれそうですね。

Hanyang Max/MSP/Jitter Workshops – June 22-26, 2009

hanyang-workshop_m

このワークショップの企画者であるRichard Dudas氏は、以前にIAMASで秘密プレゼンをしてくれた人です。私も4月にHanyang大学でiPhoneとMaxのワークショップをしましたけど、結構規模の大きなところでした。

この手のワークショップは日本ではあまりないし、ウォン安だから、サクっと参加してみるのもいいかもですね。だけど、オンライン申込フォームが韓国語らしいので、どうしたらいいんでしょう?

NADA Mobileでフィジコン

フィジコンって勝手に略しちゃってゴメン!なんだけど、NADA MobileはiPhoneでフィジカル・コンピューティングを実現するツールキットでございます。より正確には、iPhoneのマイク&ヘッドフォン端子に繋いだセンサー類を使ってゴニョゴニョしましょうってことです。ケーブルはお馴染み(?)の4極ミニプラグのAVケーブルを使います。マイク入力やヘッドフォン出力は高精度なA/DおよびD/Aコンバータですからね。これ王道かも。

nadamobile-1

プログラムはMacのDashcodeを使ってJavaScriptで記述、そいつをSketchServerを通じてiPhoneのRunSketchに送り込んで実行、という流れです。iPhone上でプログラムが書けるともっとイイんですけど、何かと面倒があるのかもね。

nadamobile-2

フィジカル・コンピューティングという言葉に語弊があるし、iPhone自体がフィジカル・コンピュータでしょ!とも言えますが、このような試みはiPhone OS 3.0以降は活発化しそうです。Bluetooth接続できるArduinoMindstorms NXTあたりに注目ね。Gainer/Funnelも対応して欲しいな!

後は、電子回路の設計が問題かな(少なくとも私にとって)。NADA Mobileのチュートリアルでも可変抵抗(ボリューム)を使うだけなのに、それ以外に固定抵抗が必要だったりして、それ方面の知識がなければできないよね。

【From: Make: Japan

バランスのシミュレータ動作

「iPhone SDKの教科書」のサンプル・コードの「バランス」は、iPhone実機で動作させる必要があります。iPhone Simulatorでは加速度センサーが動作しないので、ボールが中央に留まったまま動かないからです。そこで、iPhone Simulatorでも擬似的に一定の速度でボールが動くようにしてみました。加速度センサーのような面白みはありませんが、ボールが壁に衝突した時の動作を確認できます。

速度の初期値を設定する

速度の初期値を適当に設定します。加速度の初期値を設定しても構いません。

【P.258の012〜013行目】
speedX = 0.7;
speedY = 0.5;

タイマーでmoveメソッドを呼び出す

加速度センサーのデリゲートが呼び出されないので、タイマーでmoveメソッドを呼び出します。タイマーは「スマッシュ」で説明した通りですが、時間間隔を0.02にすることと、呼び出すメソッドがmoveであることが異なります。

【P.258の033行目あたりに挿入】
#if (TARGET_IPHONE_SIMULATOR)
[NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(move) userInfo:nil repeats:YES];
#endif

TARGET_IPHONE_SIMULATORはiPhone Simulatorでの実行を示すマクロですね。これがないと、実機動作させた場合に二重にmoveメソッドが呼び出されるのでタイヘンです。速度の初期値設定にもマクロ判断を入れるとモアベタ。

多摩美でワークショップ

5月22日〜23日は多摩美術大学情報デザイン学科にて、20数台のiPhoneを持ち込んでのアプリケーション開発ワークショップ、2日間で3コマ(90分×3)の特別講義でした。1コマ目は「iPhone SDKの教科書」をテキストに開発の手順やプログラミング方法をハンズ・オン形式でひととおり体験、2コマ目は開発ばかりじゃ面白くないので、コンセプチュアルな話や作品のデモンストレーション、3コマ目は自主制作と発表&講評という流れ。

workshop-in-tamabi

学生は必ずしもプログラミングに精通していないそうですけど、全員が熱心に(それこそ一心不乱に)取り組んでいました。もっとも、スクラッチで(テンプレートから)開発するのは初心者には難しいので、自主制作はサンプル・コードの改造・発展がキホン。それでも画像や音声を入れ替えるだけでも面白いアイディアが出てたし、オブジェクトを数個動かすといった難しい展開をした人も結構いましたね。

ちなみに今回の特別講義は同校の永原康史さんのお招きで、「iPhone SDKの教科書」の装丁をしていただいた方です。そのことを知らなかった学生は、カッコいい表紙だと思っていたそうですけど、後で分かって納得してました。何と奥ゆかしいというか、作品で語り切っているのが素晴らしいです。

【追記】レポートが公開されていました。

サンプル・アプリケーションがApp Storeに勢揃い

ようやく「iPhone SDKの教科書」で解説している6種類のサンプル・アプリケーションがApp Storeに並びました。それぞれの審査期間は1週間前後でしたが、フル・ラインナップまでには少々時間がかかりました。

読者にとっては、完成型のサンプル・アプリケーションを試せるのはグッドなんじゃないかな。今から作ろうとするものを明確に把握することは、とっても大事なことですから。それに、一般の人が開発に興味を持つきっかけになったりすると、素晴らし過ぎです。そのようなことはサンプル・コードの提供では不可能なので、App Storeの助けを借りる必要があったわけです。

ipst0-5-in-app-store

これで執筆責任(笑)は一応は果たせたかな。芸術のための芸術という言葉がありますが、サンプルのためのサンプルってのは、ことiPhoneに関してはふさわしくないですから。最小限の機能とは言え、App Storeに出せるレベルのサンプルでなくっちゃね。

その意味では、本当はApp Storeの審査が終わってから書籍を出版すべきだったかもですが、タイトなスケジュールの中ではちょいと無理でした。まぁ、アップロード不可とかリジェクト (その1その2)とかのAppleとの攻防戦も、iPhoneアプリケーション開発の醍醐味(苦しみ?)として、このサイトで報告できたことでお許しいただければと思います。

内蔵カメラ使用時の注意点

「iPhone SDKの教科書」の第3部第5章の「パイル」は、内蔵カメラまたは写真アルバムからの画像を合成します。そこで、iPod touch対応とするならばカメラの利用可否を確認しておく必要があります。その方法は書籍で説明した通りです。

ただ、カメラが利用できない場合は、それをユーザ・インターフェースとしても明確に示す必要があったようで、App Storeへの申請ではリジェクトを喰らっちゃいました。そこで、ビューを開いた時にカメラをチェックして、カメラが利用できない場合はカメラ・アイコンを使用不可に設定する(表示がグレイになる)ように変更しました。これで審査を通過。

具体的には、PileViewController.hに以下のアウトレットを追加し、Interface Builderでカメラのボタンに接続します。

IBOutlet UIBarButtonItem *cameraButton;

そして、PileViewController.mのviewDidLoadメソッドの最後に以下のコードを追加します。

cameraButton.enabled = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];

この変更により、openCameraメソッドやopenPhotoLibraryメソッドでチェックしていたif文自体は省略することができます(あっても実害はないですけど)。

pile-on-ipod-touch

続々・iPhone SDKの教科書はどこにある?

3回目の「どこにある?」になっちゃいましたが、インターネット書店一括検索によると、増刷後2〜3週間程して、ようやく各オンライン書店に配本されたようです。時間かかり過ぎ!とは言え、取り敢えずは一安心ってことでご報告。もっとも、一般のオフライン書店ではどこにあるか検索できないのがツライところ。どこでも完備ってわけじゃないでしょうからね。

続・iPhone SDKの教科書はどこにある?
iPhone SDKの教科書はどこにある?

real-bookcover-2a

ところで、ジュンク堂池袋店は50冊在庫ありとなってます。50冊平積みならスゴイですね(笑)。紀伊國屋書店Amazonにもあるので、これで海外の人にも買っていただけます。日本で洋書を買うのは大変だけど、その逆も相当大変だそうですよ。

サンプル・コードの改良・発展

「iPhone SDKの教科書」には各サンプル・コードの章末に改良・発展を提案していますが、これがどの程度の作業で実現できるかは分かりにくいかもしれません。なので、各項目の難易度を書いておきます。プログラミング初心者はレベル【A】から取り組むと良いと思います。また、カウンターについては改良・発展案を書いていなかったので、これも補っておきますね。

【A】非プログラミング・レベル〜画像やサウンドの差し替え、レイアウト変更など。
【B】簡易プログラミング・レベル〜ソースコードの変更・追加が必要。
【C】高度プログラミング・レベル〜ソースコードの大幅な変更・追加が必要。

カウンター

【A】ボタン画像や背景画像を差し替えて、異なる雰囲気のカウンターを作ろう。
【B】ボタンをタップした時に音を鳴らし、動作が分かるようにしよう。
【B】10個および100個数える度に音を鳴らし、数えている状況が分かるようにしよう。
【B】複数のカウンターを表示し、異なる数を同時に数えられるようにしよう。
【B】カウンターの数値を記憶し、アプリケーションを再起動した場合にも、前回の数値から数を数えられるようにしよう。

スマッシュ

【A】背景画像とUFOの画像を差し替えて、異なる雰囲気のゲームに仕立てよう。それに合わせて効果音も差し替えよう。
【B】UFOを叩き潰した回数を数えてスコアを表示する機能を追加しよう。UFOを逃した場合は減点することも考えられる。
【B】1分間や3分間などゲームの時間制限を設けてみよう。スコア機能と合わせて、制限時間内の得点を競うことができる。
【C】得点を競うなら、ハイスコアも表示したい。ハイスコアを打ち立てたプレーヤの名前もあれば完璧だ。
【C】UFOが1機だけでなく、2機、3機と出現するようにしてみよう。ボーナス点が稼げる特別なUFOや、叩き潰してはいけない味方の宇宙船も考えられる。

バランス

【A】画像や効果音を差し替えて、まるで違う雰囲気で異なる用途に使えないだろうか?
【B】現在のボールの重みはどれくらいだろうか? もっと軽いボールや、もっと重いボールにしてみよう。
【B】ボールと盤面や空気との摩擦抵抗をプログラム・コードに盛り込んでみよう。
【C】目を閉じていてもボールの動きを感じられるようにできないだろうか?
【C】Z軸の加速度を利用して、ボールを3次元的に動かしてみよう。一人で羽根つきができるかもしれない。

クロック

【A】背景画像や針の画像を入れ替えて、オリジナル・デザインの時計を作ろう。
【B】24時間制の時計や鏡像のように逆回転する時計を作ろう。
【B】1秒ごとに秒針が小刻みに動くのではなく、連続的にスムースに動くようにしよう。
【B】アラームが鳴っている時に、盤面が点滅するなど視覚的な効果を加えよう。
【C】アラームを12時直前に設定した場合、アラーム動作に不都合が生じる場合がある。この原因と解決策を考えよう。

エイジ

【B】年齢を時間単位、分単位、秒単位でも表示してみよう。
【C】任意の日における年齢が表示できるようにしよう。
【C】起点となる日付と日数を設定すると、終了日となる日付を表示できるにしよう。
【B】グレゴリオ歴以外の暦のカレンダーを表示してみよう。
【C】時分秒単位の時間計算機を作ってみよう。

パイル

【B】パイルを多言語対応させ、日本語でも表示されるようにしよう。
【B】合成時のブレンド・モードやアルファ値を選択できるようにしよう。
【B】最初に読み込んだ写真に合わせて、合成画像のサイズが設定されるようにしよう。
【B】撮影時や選択時に写真の一部を抜き出せるようにしよう。これはイメージ・ピッカーのプロパティで設定可能だ。
【B】写真の縦横比が4:3でなくても、正しい比率で写真を合成できるようにしよう。

星空のリアリティ

Googleが作ったAndroid用SkyMapは、インタラクティブ星座早見表なんだけど、加速度センサーと電子コンパスを使って、Androidフォンを向けている方向の情報を見たり、特定の星を探すガイドをしてくれるんだって。

skymap

星の光は弱いから、カメラのライブ・ビューには映らないだろうね。だからARとは言っていないみたいだけど、手法的にはAR(の一種)だね。ただ、カメラの性能云々以前に、大気汚染や光害が問題。人々の視力も衰えているしね。最早見えなくなった星空を、ARを通じて見るってのはロマンじゃないよな。

ついでながら、天体望遠鏡が発明された頃にティコ(だったかな?ケプラーのお師匠さん)が、望遠鏡によって初めて見える星は星なのか?と問うたそうですよ。

頓智・TiE50に選出

先日お願いした投票で、見事、頓智・がTiE50に選出されたそうです。総投票数は32,000票以上ってなってますね。ご賛同いただいた皆さまのおかげです。ありがとうございました!

tiecon2009-banner

あと2〜3日しかないのに、これからフライト・チケット手配&荷造りしなきゃならない人は大変です(私ではありません)。本選でのさらなる活躍を期待しています!