2014

つまりiPhoneアプリ作ったからDLしてくれという話

ちょっと面白い経緯で「百名山コンパス」というiPhoneアプリの制作に関わったのでご紹介。

位置情報(緯度、経度、標高)とコンパス(iPhoneの向き)から日本の有名な山の位置を判定してカメラの映像に重ねて表示するという、山専用のARアプリになる。登山の用語では山座同定というらしい。

登山やハイキングで、あっちに○○山があったはずだー、というときに使うと便利。あとは徹夜仕事で疲れたときに、いつもの殺風景なオフィスにARで山の位置を表示させることで更にダウナーな気分になれる。

普段のお仕事では受託案件が主なのだが、このアプリは「みんなで作らない?」というお誘いを受けて参加した自主案件となっている。従って関係者全員の手弁当による開発である。野村は山に詳しくないのだが、その辺は企画された方にがっつりと監修していただいた。

今は無料にて配布中。近いうちに有料化する予定なので(手弁当分の補填……)、興味を持たれた方、お情けでダウンロードしてもいいと思ってくださった方、今すぐにお願いします。

構造の解説

で、技術的な話を。

今回のアプリはAdobe PhoneGap(Apache Cordova)を使って開発されている。ご存じない方に簡単に説明すると、アプリの中でWebブラウザ立ち上げてその中にHTMLで書かれたアプリっぽいものを表示してしまえばぱっと見アプリになるんじゃね?という裏技的な手法である。このHTMLをアプリにする手法についての利点や欠点は割愛させてもらうが、今回はパフォーマンスが厳しくないだろうという読みと、リスト表示部分などの開発コスト削減を目的にこの手法を選択した。

HTMLの部分も大きく2つに別れていて、メインの山がレーダー表示部分がcanvas、その他の画面やポップアップ表示部分が非canvasとなっている。文字を流し込む部分は普通のHTMLが持っている各種処理に任せて、お絵かきしなくちゃいけない部分だけcanvasで描いた。canvasのお絵かきにはEaselJSを使用した。

ちなみに今回使用しているPhoneGapもEaselJSも、競合を調査したわけではなくたまたま情報が入りやすかった(野村はもともとFlash使いなので)ものからチョイスしただけだ。ただ、EaselJSはともかくPhoneGap(Apache Cordova)の記事は入門の入門みたいな部分ばかりだし記事執筆時点のバージョンも古かったりで、あまりよろしい状況ではないと感じた。今のところはPhoneGapは初心者向けに裾野を広げるつもりも余裕もないのかも知れないが。

ARを実現するために図のように手前にWebView、奥にカメラプレビューを配置している。カメラプレビュー部分はPhoneGapのPluginを自作した。また、PhoneGapのWebView(CordovaWebView)も透過するようにカスタマイズしている。

何かスマホならではのことをやろうとするとWebViewの内側に表示しているHTMLでは限界があるので、WebViewを囲っている外枠のほうで実装することになる。PhoneGapではこのWebViewと外枠との連携をPluginという形で補っている。公開されているPluginもそこそこ充実しているのだが、今回の用途のようなニッチなものはやっぱり自作しなければならない。そんなら最初っからHTML使わないで普通に作ったほうが早いじゃーん、という考え方もできるが、そこは開発リソースやスキルとの兼ね合いだ。実装方法の選択肢は多い方がいいと思う。

今回はiPhoneアプリとしてリリースしたが、中身の大部分はHTMLでできているのでAndroidでもそれなりに動く。Androidに移植するには、カメラプレビューの部分を作り直し、iPhoneに最適化してしまったHTMLを再調整することになる。といった諸々の調整ごとが必要だったとしても、それでも移植が簡単になる部分があるのはとても嬉しいことだ。

ま、そんな感じのアプリなので。今無料なので。


サーバ設定の変更テスト中です

あーあー。

テストテスト。

只今マイクのテスト中。

あ、そうそう「パトレイバー」の実写版を観ましたよ。第1話は押井守節が全開でもう楽しくて仕方なかった。だって、カップラーメンが膨張しちゃっているんだよ、相変わらず食事描写が汚くて最高です。


最近観た映画メモ

もう2月かぁ。確定申告の季節だねぇ。

この数ヶ月で観た映画の中では「ゼロ・グラビティ」と「かぐや姫の物語」が心に刺さりまくった。ストーリーは既知というか単純なんだが、「映像で物語を語る」というボクたちが映画に期待しているモノを具現化してくれているのが嬉しい。「ゼロ・グラビティ」は自分のお気に入りシーンを脳内リピート再生しまくりだし、「かぐや姫の物語」も、自分ならあのエピソードをどう演出しただろうと脳内ミーティングがケンケンガクガク。

「鑑定士と顔のない依頼人」は、ミステリーとしては特にひねりもく(というかむしろずるい)、主人公の鑑定士の心情をじっくり味わう作品。引き籠もり体質のオイラにはキツいラストだけどね。

「アメリカン・ハッスル」は、これ事実からどれだけ脚色されているのか分からないが、どえらいこっちゃーという話それ自体がまず面白かった。主要キャストがどの人も人間として魅力的で面白かった。

「ウルフ・オブ・ウォールストリート」はコメディだと知らずに観始めたのでちょっと驚いた。映像としては3時間も苦じゃなかったんだが、今思い返すと主人公のライフスタイルがわりかし冗長なのでもうちょっとコンパクトでも良かったかもな、と。そう思ってしまったのは多分、個人的にセックス&ドラッグな世界観が受け入れられないからだと思う。前に「フライト」観たときに友人と感想語り合っていて分かったんだが、ドラッグやっている人間を主観映像で観させられるのは、野村には性に合わないみたいだ。こればっかりはしょうがないよね、好みの問題だから。

あと、公開作品の話ではないが、ちょうど引っ越してTV買い替えたのと「パシフィック・リム」のBlu-rayが3Dだったので、買う予定じゃ無かった3Dメガネをうっかり買いまして。忙しくてまだ鑑賞できず。

あ、そうそう「TRICK」が完結しましたよ、と。映画館で観るべきかと問われれば明らかにNOなんだが、映画じゃなくてファンミーティングだと思えば。エンディングで鬼束ちひろ「月光」が流れる!と知っただけで涙腺ヤバくなるようなファンに向けた作品でした。

最近観た映画はこんな程度かな。忙しくて映画館に行けない期間が長すぎた。

Rubyのアップデート成功とtDiaryアップデート失敗

本当はtDiaryのアップデートをしたかったんだが、Rubyのバージョンが古くて移行できずにいた。

で、共有サーバ側のRubyを使うんじゃなくてユーザ環境側にRuby入れることでアップデートに成功することを知ったので、試してみた。

あっさりとユーザー環境側のRubyは動いた。が、肝心のtDiaryが動かず。パッケージ版を入れたのだがライブラリが足りないのかバージョンが古いのか。

調べる時間と元気とRubyに関する知識不足で、今日のところは保留。


2013

「ユーザーが意識しないタイミングで○○やっています」って云われても

夏である。

この時間(午前2時)でもCPUファンがガンガン回っている。とにかく冷やせ冷やせ、このMacBookAirはとにかく熱くなるのだから。ただいまのCPUの温度は、……91℃か。

仕方ないのだ、こんな時間だが仮想環境上のWindowsのWindows Updateをかけているから切りたくないのだ。だから落ちないことを祈りながら、とりあえず日記でも書いて心を落ち着けているところなのだ。

Windows Updateも大変だが、Mac OSだって大変だ。こんな大変なタイミングに限ってTimeMachineがバックアップ作業を始めたのだのだから。もうね、TimeMachineのKYっぷりにはホトホト参りましたよ。

こんなにマシンが忙しいのだからCPUファンだってファンファン回る。マシンを冷やさないとまずいので、マシン下部にも冷却台をおいてファンを廻している。部屋の真ん中には扇風機があってこちらに風を送ってくれている。何もかもが回る。時代も回る。

こんなにマシンが頑張っているのに、持ち主ときたら、日記を書くくらいしかやれることがない。だって、CPUパワー使うわけにいかないんだもん。さっきまで調子に乗ってiTunesをかけていたが、それも切った。Windows UpdateかTimeMachineか、せめてどちらか終了するまでは、こうしてじっと待つしかないのだ。

……などと書いている間に両方とも終了。お休みなさい。