Software」カテゴリーアーカイブ

Monacaのコンポーネント管理

昨年来「窓辺のカフカちゃんズ」など自律分散協調型の作品をMonacaで開発しています。ただし、WEB系テクノロジーがイマイチ得意じゃないので、ProcessingのJavaScript版であるp5.jsを使ってお気楽コーディングでお茶を濁す魂胆だったりします。

ところが、p5.js自体は問題なく動作するものの、そのサウンド拡張ライブラリであるp5.sound.jsが不安定で、しばしば悩まされます。以前はソースコードに手を入れて無理やり動かしたこともあったほど。そして、最近のトラブルは、index.htmlでコンポーネントを指定すれば正常動作するのに対して、Monacaのコンポーネント管理を使うとp5自体が動作しないという謎現象でした。

このコンポーネント管理では、利用したいコンポーネントを検索して選択すると、現在のプロジェクトにインストールされるので、下図のようなローダーで利用したいjsファイルにチェックを入れます。この時、表示されている順番(パスのアルファベット順)にファイルが読み込まれるそうです。この場合は最初にp5.sound.jsが読み込まれ、次にp5.jsが読み込まれます。

Monaca-config-p5

ところが、p5ではp5.jsが大元と言うか親クラスなので、p5.sound.jsよりも先にp5.jsが読み込まれる必要があります。つまり、Monacaのローダーでは逆の順番で読み込まれるので、p5が正しく動作しなかったわけです。ロード順を指定できると良いのですが、現在のMonacaにはそのような機能がありません。

そこで、この問題を解決するには、Monacaのコンポーネント管理でインストールしたファイルの読み込みは、ローダーで指定せずに(ローダーではチェックを入れずに)index.htmlのscriptタグで指定します。はい、これでOK!

Monaca-index-p5

上記の解決策は試行錯誤して見つけていたのですが、釈然としないためにMonacaの開発元に問い合わせたところ、丁寧にローダの仕組みを解説していただいて理解に至りました。このためにサポート・チケットを1枚消費したのは良い勉強ですね(笑)。

Metaio CreatorによるモバイルAR

先のエントリーで記したように、Appleが買収したモバイルAR(拡張現実)関連会社Metaioは、すでに既存のユーザのサポートのみに移行していて、その製品やサービスを伺い知ることは難しい。ただし、iOSアプリはまだダウンロード可能なので、ARブラウザであるJunaioや、物体認識ツールであるMetaio Toolboxを試すことができる。また、今年の初めにMetaio関連のワークショップを行ったので、その際のレジュメも公開しておくね。この資料やiOSアプリには、Appleが目指すARの一端が含まれているかもしれない(含まれていないかもしれない)からね。

ダウンロード:「なんちゃってAR制作ワークショップ」レジュメ

さて、このワークショップでは、Metaio Creatorなる簡易AR制作ツールを利用した。以下の図のようなオーサリング環境で、認識するターゲットと対応するリソースを指定するだけでOK、プログラム・コードを書く必要はない。これはMacの内蔵カメラで即座にプレビューすることができ、アップロードすればJunaioアプリによってiPhoneで動作する。あっけないほど簡単であり、アイディア次第で多種多様なARを素早く実現できるようになっている。

Metaio Creator Composite

Metaio Creatorが備えるターゲットのトラッキング(認識)方法は、図のように6種類もある。これだけの認識方法をひとつのエンジンで統合しているのは立派。やや水増し感もあるけどね(笑)。

Metaio Creator Trackings

このうち、3次元物体を認識するObject Trackingや建造物を認識するEnvironment Trackingでは、そのデータをiOSアプリのMetaio Toolboxを使って制作する。iPhoneをかざして物体や建物の周囲を回ってスキャニングすれば、3次元位置として特徴点が蓄積されていくことになる。

Metaio-Toolbox-3D-Map

ターゲットが認識された時にトリガーされるリソースも15種類と豊富。静止画や動画、3Dモデルなどを表示したり、WEBサイトの閲覧やツイートの投稿、カレンダーの作成などもできる。必要であればタイムラインによるアニメーションや、簡単なスクリプトの実行も可能。こちらも水増し感がちらほら(苦笑)。

Metaio Creator Resouces

このように見ていくと、Metaio CreatorはARのFlashを目指していたように思える。しかし、Flashがそうであったように、誰でも簡単に作れるものの、最大公約数的な大雑把なコンテンツしか作れないという危惧も強かった。実際にも作例のモナリザは、ARARATのほうが遥かに認識の精度と安定感が良く、イメージの表示もARARTのほうが自然で違和感がなかった。自画自賛のようだけど、これはワークショップの参加者も同意していたよ。

ただし、MetaioにはMetaio SDKなど高度な開発環境も提供されていたので、コード・レベルでチューニングすれば効果的な結果が得られるかもしれない。MetaioはIKEAやAudiなど大手企業のアプリに採用された実績を持つので、それは単なる営業努力だけではないよね。ISMARなど学術会議でのコンテストも勝ち得ている。だから、技術的な基盤は堅牢で性能は高いハズ。AppleがMetaioの何に魅力を見出し、モバイルARをどのように活用するのか、それこそが重要だよね。

ところで、MetaioとはメタI/Oのこと?

アップルはモバイルARの夢を見るか?

「アンドロイドは〜」のほうが収まりは良いけど、ここはアップルです、Apple Inc.です。と言うのも、AppleがAR(拡張現実)界のリーディング・カンパニーのひとつMetaioを買収したから。すでにMetaio社のWEBサイトでは製品の販売や関連する情報は取り下げられている。これまでARには正面切って取り組んでいなかったAppleが、Metaioを得て何をするのか、興味津々です。

Metaio Web Site

ここ数ヶ月を振り返ってみると、Googleは謎に包まれたARスタートアップMagic Leap社に巨額出資を行い、Microsoftは自社開発のARゴーグルHoloLensを発表したよね。Facebookに買収されたHMDの革新者Oculus社も、さらにSurreal Vision社を買収してARに接近中。といったようにIT界の主要プレーヤがARを重要視していることが分かる。そこへAppleも参入するというわけ。

未知数のMagic Leapはさて置くとしても、HoloLensもOculusも頭部に装着するディスプレイが主役。対するMetaioはあくまでもスマートフォンで動作するソフトウェアでしかない。順当に考えれば、Appleが取り込もうとしているのは、その延長線上にあり、いわゆるモバイルAR、つまりセカイカメラARARTがOSレベルでサポートされることになる。数年間の苦節(笑)を経て、モバイルARが桧舞台に躍り出るや否や、これは楽しみですね。

Appleはもっとも革新的なITカンパニーと評されるほど未来志向だけど、その未来は安っぽいSF映画に描かれるようなキラキラのハイテクじゃない。それは日常生活に違和感なく溶け込み、歴史や文化に支えられ、ある意味で古典的(Classic)ですらあるような未来だと思う。それを端的に表すのがCMフィルムで、来年あたりには何気ない日常生活の場面場面でiPhoneをかざす様子が描かれているかもしれない。あるはメガネかもしれない。それはモバイルARの最後の1マイルね。

Apple Watch TV Film

IFTTTで雰囲気メガネをコントロール

電話着信時やメール受信時に雰囲気メガネが光るのはANCS (Apple Notification Center Service) を利用しています。ザックりと言えば、ANCSはローカル通知やプッシュ通知(正確にはAPNS=Apple Push Notification Service)を外部のBluetooth LEデバイス(雰囲気メガネ)へ横流しにする仕組みですね。なので、何らかの通知を行うアプリやサービスであれば、何でも雰囲気メガネで利用可能。そこで今回はIFTTTによる雰囲気メガネのコントロールを紹介します。

IFTTT(イフト)は複数のWEBサービスを連携させるサービスで、名称の元となった「IF This Then That」が示すように、何らかのトリガー(This)が起これば何らかのアクション(That)を行います。このようなトリガーとアクションの組み合わせをレシピと呼び、ユーザはいくつでもレシピを定義して実行可能です。

雰囲気メガネはWEBサービスではないものの、IFTTTがプッシュ通知に対応しているので、他のサービスと連携できるわけです。ここではシンプルな例として、毎時ゼロ分に雰囲気メガネを光らせてみます。IFTTTのiOSアプリを使ったレシピの作成手順は以下のようになります。

・IFTTTを起動してログイン。未登録であればアカウントを作成。
・トップ画面右上の鉢と棒のアイコンをタップしてレシピを表示。
・右上の+ボタンをタップして新しいレシピを作成。
・ifの次の+ボタンをタップしてトリガーを作成。

Funiki-IFTTT-1

・上部をスクロールして時計アイコンのDate & Timeを選択し、
 Every hout atの横の+ボタンをタップ。
・毎時何分にトリガーするかを選択し、Nextボタンをタップ。
・thenの後の+ボタンをタップしてアクションを作成。

Funiki-IFTTT-2

・上部をスクロールして鐘アイコンのiOS Notificationsを選択し、
 Send a notificationの横の+ボタンをタップ。
・レシピが完成したのでFinishボタンをタップ。
・作成されたレシピが表示される。スイッチがオンであれば実行される。

Funiki-IFTTT-3

以上でIFTTTの雰囲気メガネ制御レシピができました。正確には毎時ゼロ分にプッシュ通知をするレシピですね。IFTTTの通知は「その他」のカテゴリーとして扱われます。雰囲気メガネではトップ画面上部の一番右のアイコンが「その他」カテゴリーの設定です。初期状態でも「その他」カテゴリーの通知は有効なので、特に何もしなくても大丈夫ですけどね。

Funiki-IFTTT-4

毎時ゼロ分に雰囲気メガネを光らせるだけでは面白くないかもしれませんが、アクションには選ぶのが大変なくらい沢山のサービスがあるので、何をするのかはアイディア次第といったところでしょうか。GitHubで新しいイシューが発行されたら、とか、Instagramでお気に入りのユーザが写真を投稿したら、とか…また、WEBサービスだけでなく、FuelbandWeMoのようなセンサーも利用可能です。

ただし、IFTTTには即時性は期待できません。毎時ゼロ分という単純なトリガーでも平気で何分も遅れますから。でも、それも雰囲気メガネに相応しいユルさかもしれませんね。雰囲気メガネは大量の情報を精緻に扱うことを目指していません。だって単に光るメガネですからね!

NOOK ColorでHoneycomb

B&Nの電子書籍リーダーNOOK ColorにAndroid 3.0 Honeycombをインストールしたのでご紹介。手順はnookdevsに掲載されている通りで、とっても簡単。microSDにシステムをインストールするので、そのmicroSDをNOOKに挿していればHoneycombとして起動し、なければ通常のNOOKとして起動するデュアル・ブート。なので普段使いにもマニアック探求にもお手軽運用ですね。

Macの場合はこんな感じ…

nook-honeycomb-terminal

・ディスク・イメージをダウンロード。 HTTP or Torrent

・4GB以上のmicroSDをMacにマウント。

・ターミナルを起動。

・マウントされているディスクをリスト表示。
 diskutil list
 とタイプしてreturnキーを押す。

・ディスクのリスト表示からmicroSDのディスク番号を調べる。
(上の図では2 がmicroSDのディスク番号)

・microSDをマウント解除。
 diskutil unmountDisk /dev/disk#
 の#はディスク番号に置き換えてタイプ&リターン。
(上の図では diskutil unmountDisk /dev/disk2

・マウント解除されると、以下のようなメッセージが表示される。
 Unmount of all volumes on disk2 was successfu

・ディスク・イメージがあるフォルダに移動。
 cd フォルダ名
(上の図ではデスクトップのHoneycombフォルダに移動)

・ディスク・イメージをmicroSDに焼き付け。
 dd if=????.img of=/dev/disk# bs=1m
 ???をファイル名、#をmicroSDのディスク番号に置き換えてタイプ&リターン。
(上の図では dd if=nookhoney04.img of=/dev/disk2 bs=1m

・焼き付けが完了すると、以下のようなメッセージが表示される。
 3670016000 bytes transferred in 2252.503360 secs (1629305 bytes/sec)
(この場合は40分近く焼き付けにかかっている。)

・再マウントされたmicroSDをマウント解除してMacから取り出す。

・microSDをNOOK Colorに挿入し、NOOK Colorの電源を切り、再度電源を入れる。

これでNOOKはAndroid 3.0デバイスとして起動するはずです。ちなみにmicroSDスロットは隅の取っ手みたいなところですよ。

nook-honeycomb1

さてHoneycombはホーム画面に「何もナイ」すっきり仕様。これは以前のエントリーのように、破廉恥なメーカーやキャリアがプリインストール・アプリで画面を汚してしまうことに対する痛烈な批判だと思うな。何を使うかはユーザに判断させるべき、というメッセージ。

同様にHoneycombのGUIもスッキリ&クッキリで気持ちがいい。画面上部および下部のバーで基本操作ができるから、ハードウェア・ボタンに頼る必要がないのも大きな特徴。Androidが逆立ちしてもできなかったデバイスの透明化に一歩近づいたワケね。これでダサいと言われ続けたAndroidに一条の光が射したと思う。

nook-honeycomb2

ただ、これはタブレット(=画面が広い)を前提とした設計ゆえに可能になったことで、Android 2.3 Gingerbreadまでとは大きく異なっている。となるとスマートフォン(=画面が狭い)向けの次なるAndroidはどうなるんだろう?と当然の疑問が湧く。これまた分断化が進むかもしれず、Androidアプリの開発はますます大変になりそう。

さらにスッキリ&クッキリのHoneycombもしばらく使っていると困惑する場面が多々ある。何がどうなっているのか明快ではなく不安になる感じ。これってオシャレ〜なんだけど使いにくいWEBサイトに似ている。間違いなくビジュアル・デザイン先行でユーザビリティが欠如してる。ドタバタ開発であろうGoogleの内情が見え隠れするけど、緑ロボットには何とかガンバって欲しい。

ところで、本来は専用電子書籍リーダーであるNOOK Colorが最新のAndroidを纏っていることも重要。もちろん熱意あるギーク魂の賜物(感謝!)だけど、XperiaやGalaxyなどのメインストリームが、まるでノロマな亀であることと対照的。大半のユーザがスペックや内部構造に無頓着とは言え、その場シノギの製品での体験は確実に悪性影響を与えると思うな。

iAd Producerでネイティブ・アプリ

昨年末にAppleがデベロッパー向けに公開したiAd Producerは、その名の通り、iAdのコンテンツを作成するツール。iAdの広告料はかなりの金額だそうで、大企業や広告代理店ならいざしらず、一般人には関係ないですよね。

iad-producer-hero

ところが、このiAd Producerが作成するコンテンツはHTML5、CSS3、JavaScriptとして出力される。ってことは、UIWebViewに仕込めばネイティブ・アプリとして動くんじゃない?と思って試したことろ、ちゃんと動きました。しかも、UIWebViewをInterface Builderで貼付けてアウトレットに繋いで、3行ほどコードを書くだけ。

NSString *filepath = [[NSBundle mainBundle] pathForResource:@”AdUnit/index” ofType:@”html”];
NSURL *fileurl = [NSURL fileURLWithPath:filepath];
[webView loadRequest:[NSURLRequest requestWithURL:fileurl]];

面倒な人のためにプロジェクト一式も入れおきます。

Download iAPTest.zip

実際の作業手順はこんな感じ。

  • iAd Producerでコンテンツを作成
  • ExportメニューのExport to Disk…を選び、コンテンツを出力
  • 出力されたコンテンツにあるAdUnitフォルダをXcodeプロジェクトに登録
    (この時「追加したフォルダにフォルダ参照を作成する」を選ぶ)

これだけで後はビルドして実行すればネイティブ・アプリとして(内部的にはWebアプリ的に)動いちゃいます。App Storeにも出せると思うけど、iAd Producerの目的外使用としてハネられるかもしれませんね。さらにツワモノな方は、このアプリにiAdを載せてください(笑)。Androidとかにも使える?

さて、肝心のiAd Producerでのコンテンツ制作は、ビジュアルなフローを中心にテンプレートを選んでGUIパーツを置くだけの簡単さ。雰囲気的にはiDVDとかに近いかも。GUIパーツには画像を割り当てたり、テキストを入力したり、遷移するページを指定したり、といった感じで作業を進めます。素材が揃っていれば、ナントカ案内とかナントカ紹介みたいなコンテンツがアっと言う間にできますね。

iad_producer_templates

iad_producer_objects

と言う訳で、プログラミングができない人でも、それなりのアプリがプログラムレスで作れちゃうから、かなりイイかも。もちろん、心得のある人はJavaScriptをバリバリ書くこともできます。このようなWebアプリ的に制作してネイティブ・アプリとして動かす方法はPhoneGapなどいくつかありますが、iAd Producer応用路線が遥かにお手軽な気がします。

PagesでePub出力

少し前にAppleのPages(iWorks)がバージョン4.0.4にアップデートされてePub出力をサポートしたので、ちょいと実験してみました。被験者は何年か前、バージョン2.0の頃に作成したA4で149ページの日本語論文、そこそこの分量があります。当然ePubなんて意識していないけど、見出しや本文などのスタイルは指定していました。

実際の手順はとっても簡単で、ファイルメニューの「書き出す…」を選んで、ePubを選択してオプションを指定した上でファイル保存するだけ。

pages_epub_options

ちょいとアラートが出ましたが、取り敢えずは気にしない。

pages_epub_alerts

作成されたePubファイルをiTunesにドラッグ&ドロップしてiPadを同期すれば、ハイ完了。すぐに読み始めることができます。あっけないほどお手軽簡単。

気になる変換結果は、ざっと見てこんな感じ。

    テキスト:問題なし。フォント不足や英字スペースの問題はある。
     見出し:問題なし。目次も自動作成され、リンクも正常に動作。
      脚注:問題なし。リンクも自動作成され、正常に動作。
  ページ区切り:問題なし。フローしても正常にページ送りされる。
  罫線入りの表:問題なし。表内のテキストもテキストのまま保たれる。
ビットマップ画像:通常表示は問題ないが、表示サイズに最適化されている。
  ベクトル画像:通常表示は問題ないが、ビットマップ画像に変換されている。

結果的に画像をダブルタップしても高解像度で表示されない点は問題ですね。また、元ファイルでは目次を自動生成してページとして割り付けていましたが、これは削除したほうが良いみたい。ルビとかは当然ダメでしょうけど、元々使っていないので問題ありません。

と言う訳で、Pagesでどこまで意図を反映したレイアウトが作り込めるかを研究する必要がありそうですが、全体的には満足できる仕上がりだと思います。とにかくこの手軽さは特筆モノで、PagesはWordファイルなども読み込めるから、ガンガンePub化して出版するのが吉。下手にInDesignとで凝ったレイアウトをしていると涙ナミダですから、ご用心。ま、そーゆー場合はオールドウェイブのPDFを使ってください。

参考:iWork:iWork 9.0.4 アップデートについて
参考:PagesでePubファイルを作成する方法

iPhoneアプリの価格と販売数

先にポストしたように、Mac Fan 12月号の特集「非開発者向けiPhone SDK講座」がグッドなんですけど、ちょっと不可解な内容があったので、別ポストします。それは、4人の開発者へのインタビュー構成記事の中での、サン電子の方の「100円アプリはやめておいたほうがいい」という発言。

それぞれの人がそれぞれの立場で語られているので、その意見自体は尊重しますが、その理由としてアプリの販売数が「1日に10本ぐらいがいいとこ」なので、開発費の回収が難しいと言われているのが不可解です。私のアプリで最も売れていないのは「計算尺」ですが、それでも平均して1日10本以上売れてますからね。「計算尺」はオブソリートでアイロニカルなアプリなので、興味を持つ人は極少だと思います(だから、買った人はエライ!)。そんなアプリより売れないアプリって一体ナニ?って思うわけです。

この方の発言根拠が良く分からないものの、確かに価格と販売数のバランスは難しいですね。100円で10人も、1,000円で1人も、収入としては同じだけど、長期的にはどちらが有利になるのかは興味深いところ。iPhoneもApp Storeも、まだまだ黎明期なので、1年後にどうなるかを楽しみにしていましょう。それよりも、そんな暗中模索の今こそが面白い!ですよ。

少なくとも私は、MacやiPhoneを新規購入して労力を注ぎ込んでも、アッと言う間に元が取れると吹聴している楽観主義者です。別の音楽系雑誌の対談でも、豪華なクルマがすぐ買えるとか、イーノはバカバカしくってCDなんて作ってられないんだろうって話が出たくらい(これはいろいろと他の文脈もある話ですけどね)。もちろん、金銭的には何の保証もありませんが、行動する価値は間違いなくあります。

PhoneFingerで指出現

画面キャプチャしちゃうとなんだかフツーですが、これはWonder Warp Software社のPhoneFingerでMaxを操作しているところ。実は、このアプリ、マウス・ポインタを実物大の指(手付属)にしちゃいます。本来は、iPhoneのGUIデザイン時に指の大きさが分かるようにするユーティリティですね。

iPhoneのスクリーンは解像度が高い(160dpi)ので、一般的なMacのスクリーンで作業すると、ついつい小さめのGUIを作っちゃうんですね。そんな時にPhoneFingerを使って、ちゃんと操作ができるか確かめましょう〜ってことのようです。だけど、それだけでは飽き足らず、指を押し付けたり、スクリーン上に指紋を付けたりする機能まであります。素晴らしい。

 

Nodal

Jon McCormack氏らが制作したNodal 1.0Rがリリースされていました。Generative software application for composing musicだそうです。カラフルでポップな状態遷移図がカワイイ(と思考停止状態なコメントしか書けない今日この頃)。基本的にMIDI出力しかできないけど、何を繋ぐかは勝手なワケで、いろいろと活用できそうですね。