Author Archive

    はてなブックマーク - Fusic Advent Calendar 2010開始します
    このエントリーをはてなブックマークに追加

    今日はお湯割りを呑もうかなと思っている小山です。

    今年も技術系Advent Calendarの季節がやってきましたね。
    「技術系Advent Calendarって何?」という方はこちらをどうぞ。

    PerlRuby、そしてEmacsなどいろいろあります。
    (CakePHPも行うそうです)

    どこの会社でも同じでしょうが、弊社Fusicでもご多分にもれず「師走」なわけですが(想像にお任せいたします)、「なぜか」FusicでもAdvent Calendarをやってみようということになりました。こういうアグレッシブにつっこんでいくのはほんとFusicらしいです。

    参加者

    参加者の呼びかけの時点は任意だったのですが、話の流れというか勢いでなんと社長、副社長を含む技術チーム全員が参加することに。
    「勢い」って怖いです。
    普段Blogに出てこないメンバーも参加するなかなか面白い25日になりそうです。

    ルール

    技術チーム全員が同じ確率で、当日朝にルーレットスクリプトを実行して、その日の担当者を決定するというかなり怖いルールになりました。

    1回当たった人は確率が1/2になりますが、確率が0になることはありません。
    連続して当たった人の顔が目に浮かびます。

    社長、副社長はレアということで確率を下げています。(が、まあ、25日付近まで当たっていなかったら「アタックチャンス」とでも称して確率を10倍にでもします)

    というわけで

    明日12月1日から毎日更新されるブログになると思いますので、お楽しみに!

      はてなブックマーク - Titanium MobileでiPhoneアプリを開発、リリースしました
      このエントリーをはてなブックマークに追加

      * 2010/11/17 17:00追記

      foursquareで誰もチェックインしない会社のMayerになってニヤニヤしている小山です。

      最近、個人的にですが、`CacooViewer’というiPhoneアプリをリリースしました。

      CacooViewer
      CacooViewer

      CacooViewerは、弊社と同じ福岡に本社を置くヌーラボさんの`Cacoo‘というリアルタイムなコラボレーションが可能なWebドローイングーサービスのモバイルビューワです。
      CacooViewerは非常に簡単なアプリですが、Flashで作成されているCacooの「iPhoneやiPadで作成した画像を見れない」という弱点を若干ながら補完するアプリになっています。

      で、

      実はこのアプリ、Titanim Mobileを利用して作られています。

      Titanium Mobileって何?

      Titanium Mobileとは、大雑把に言うと「JavaScriptを利用してiPhoneを初めとしたモバイルネイティブアプリが作成できるクロスコンパイル開発環境」です。

      Titanium MobileはTitanium Developerという開発環境を通じて利用できます。
      Titaniumはデスクトップアプリを作成することもでき(Titanium Desctop)、それらもTitanium Developerを通じて利用できます。

      Titanium Mobileは何がいいの?

      特に自分のようなWebシステムの開発者に言えるのですが、まず第一に「JavaScriptという普段利用している言語でiPhoneのネイティブアプリが作成できる」ということでしょう。
      やはり言語の壁というのは少なからずあります。学習コスト以前に「やろうかな」と思うことに躊躇してしまいます。それがJavaScriptという普段使い慣れているものが利用できるというのは非常に大きいです。

      次に言えるのは「コード記述量が格段に少なくなる」ということです。これはJavaScriptという言語の恩恵とも言えますが、Objective-Cでは記述が多くなる部分も、Titanium Mobileでは全て糖衣しているようなイメージを受けます。単純には言えませんが、開発スピードも早くなるかもしれません。
      逆にTitanium Mobileから提供されているAPI以外の機能を利用するのはなかなか難しそうです。

      最後に、「メモリ管理をする必要がない」ということです。これも逆に言えば「メモリ管理ができない」ということになるのですが、
      CacooViewerのような単純なアプリの開発では、本当にメモリを意識することなく開発ができます。
      自分みたいなゆとりプログラマには嬉しいメリットですw

      Titanium Mobileの情報はどれくらいあるの?

      これは最も重要な疑問だと思います。しかし、心配ありません。

      まず、1番初めに強調したい情報として@donayamaさん著の「Titanium MobileではじめるiPhoneアプリケーション開発(PDF)」という日本語電子書籍(PDF)があります。
      これがすごいです。もうなんというかO’Reilly本並です。この書籍でひととおりの開発が可能です。

      さらに@donayamaさん主導でtitanium-mobile-doc-jaという日本語情報の収集プロジェクトがあります。
      (さきほどの電子書籍はこのプロジェクトの成果のようです)
      こちらにもAPIに関する日本語解説や細かいTipsなどが数多く蓄積されています。

      さて、本当は最初に紹介するべきものとして公式APIリファレンスもあります。

      そして、開発を進めるに当たって最も強力な味方になってくれる公式サンプルアプリ「Kitchen Sinkがあります。

      Kitchen SinkはTitanium Mobileでできることをほぼ全て詰め込んだアプリです。
      その全てのコードがTitanium Mobileで作成されていて、さらにソースコードがすべて公開されています

      つまり、「何ができるのか」と「どう作るのか」を見ることができるのです。

      公式APIは若干間違っていたり古いことがあるらしく、Titanium Mobile開発者の間では「困ったときはKitchen Sinkを見ろ」が合言葉だとかそうでないとか。

      おそらく世のTitanium MobileでiPhoneを開発する開発者のiPhoneにはKitchen Sinkが実機転送されているのではないでしょうか?

      Titanium Mobileで開発できるというのは分った。じゃあ実際どんなもんなの?

      Kitchen Sinkも実機転送はできますが、App Storeに出ているわけではありません。
      またかつての規約に「クロスコンパイルだめ」的なものがあったせいか、心配することもあるかもしれません。
      「Titanium Mobileで作成してApp Storeでリリースできた」という話は聞きますが実際のその公開されているソースコードはなかなか探しにくいものです。

      というわけでCacooViewerのソースコードを公開します。

      github.com/k1LoW/CacooViewer

      そもそもCacooViewerを開発してみようと思ったのは、PHPMatsuriでユニットホスティング賞を受賞させていただき賞品としてiPod Touchをいただいたので、何かiPhoneアプリを作ってみようと思ったのがきっかけです。
      PHPMatsuriに感謝します(そしてこれがPHPMatsuriレポート最終章です)。

      また、コラボレーションをキーワードにしているヌーラボさんのコラボレーションツールCacooのアプリです。
      ソースコードもコラボレーションしない手はありません。

      このCacooViewerのソースコードは実際にTitanium Mobileを利用してビルドし、App Storeで配布されています。
      ソースコードをみてみると非常に少ないコード量で機能が実装されていることがわかります。
      初めて作成したTitanium Mobileのコードでいろいろツッコミどころ満載ですが、逆に「これで作れるのか」と思ってもらえれば幸いです。

      Titanium Mobileが良さそうなのは分った。

      どうですか?Titanium Mobileに興味が出てきましたか?

      かなりニッチな話題ですが、できるだけ多くの方がTitanium Mobileに興味をもってもらえれば嬉しいです。
      そしてそこからさらにJavaScriptへ興味をもってくれることを切実に願います。

      それを目的として、Fusicでは来週11月25日にTitanium Mobileの社内勉強会を開催予定です。
      実際に開発環境の作成からシミュレータへのビルド、あとリリースまでにつまづいた点などを
      簡単ですができるだけわかりやすく発表する予定です。

      もし需要がありそうでしたら、その模様をZENPREにて配信したいなと考えています。
      11月25日15:00よりZENPREにてTitanium Mobile社内勉強会を配信します。

      想像以上の反響ありがとうございます。みなさんJavaScriptへ興味をもってくれたということで非常にうれしく思います。
      発表時間としては1時間弱を見込んでいます。
      配信URLは当日@ZENPREの中の人に告知してもらいます。また、開始時間近くになりましたら、ZENPREトップページからリンクがたどれるはずです。

      よろしければ是非ご覧ください。

      それでは良いJavaScriptライフを。

      募集

      弊社では、絶賛エンジニアを募集しています
      役に立つ技術もそうでない技術も分け隔てなく、「技術に好奇心をもって行動すること」を評価してくれる環境に興味のある方は是非。

        はてなブックマーク - PHPMatsuri参加レポート(3/3) Manual Plugin
        このエントリーをはてなブックマークに追加

        いまさらながらPHP Matsuriの最終レポートです。
        自分のMatsuriはまだ終わっていません。小山です。

        ハッカソンターゲット

        さて、JIREI NIGHTも終わって自分が開発しようと思ったのが、「セルフドキュメントプラグイン」でした。

        今までCakePHPプロジェクト自身の「DBスキーマを図で表すプラグイン」や「Gitコミットログを参照するプラグイン」を作ってきたのですが
        (最近は「自身のViewファイルを表示するプラグイン」なども作りました)、どうやら「セルフ何とか」が好きみたいです。
        基本は開発のサポートですね。

        で、今回のターゲットですが、最近は案件で「マニュアルはHTMLでもいい。むしろHTMLのほうが使いやすい」と思うこともあって、「セルフマニュアル」になりました。

        マニュアルといえば「説明文章」と「スナップショット」→説明文章なんてただのテキストだから面白くない→じゃあスナップショット→「システムでシステム自身のスナップショットを撮る」

        というのが今回の実装ターゲットになりました。後のWiki機能なんてのは飾りです。

        実装

        「システムでシステムのスナップショットなんて撮れるのか」ということですが、サーバもPCです(自分のメイン開発機はUbuntuサーバです)。当然ブラウザだって動きます。「サーバ内でブラウザ動かせばなんとかなるでしょ」ということで、「CakePHPプラグイン内でブラウザを叩く」という方向性に決まりました。

        ところがいろいろ調査をしているうちに面白い試みをしているプロジェクトをみつけたので、途中から「CakePHPプラグイン内にブラウザを内蔵する」に若干暴挙にみえる方向に転換をしました。(でも上のプロジェクトを見たらそうしたくなりますよね?ね?)

        結果として、見事に「システムからシステムのスナップショットを撮る」ということに成功
        PHP Matsuriの動画にたまたま自分の開発時点のデモが写っていました(PHPMatsuriの動画まとめの2つ目の3:10頃)。

        ユニットホスティング

        さらにここからユニットホスティングにデモ環境を構築しました。
        もともとは特徴的な利用の仕方はできないと思っていたので、ユニットホスティングを使う予定はなかったのですが、VMで作っていたものをデモとして見せにくいことに途中から気づいて、急遽構築を開始しました。
        そんな「急遽」だったのですが、これがまた使いやすかったです。
        サーバ環境構築まで本当にわずかな時間しか必要なく、さらにグローバルIPが付与することも可能。管理インタフェースも非常に使いやすい。

        使ってみて、業務用途で即浮かんだのが「クライアントへのデモ」の際の一時的サーバでした。
        そういう形で社内に浸透させて、将来的には一時的なサーバ追加などにの「クラウドらしい用途」など、夢が広がります。

        そんなこんなでデモ環境ができたところで、だいたい寝たのが深夜5時過ぎでした。

        結果とまとめ

        LTのときの発表資料は以下です。

        (※現在このManual Pluginはスナップショット機能だけを切り出してSnapshot Pluginとして機能を整備中ですが、近いうちにリリースできればなと思っています(誰得な機能ですがww))

        結果、ユニットホスティング賞をいただきました!
        投票してくださった皆さんありがとうございました!

        PHPMatsuriで「開発者で集まって集中しての開発」というのは本当にいい経験でした。
        確実に濃い時間が流れて、「精神と時の部屋」のような成長感がありました。
        このMatsuriのアイデアを実現に導いたスタッフの方々には本当に脱帽です(自分は途中からの手伝い程度でした)。

        また是非こんなイベントが開催されることを願っています。
        本当にどうもありがとうございました!