T

iOS実機上でのデバッグ

Titanium SDK 3.0がリリースされたので、さっそく新機能であるリモートデバッグについて調べてみました。

原文:http://docs.appcelerator.com/titanium/latest/#!/guide/Debugging_on_iOS_Devices

====================================================

iOSの実機上でのデバッグ

【概要】

Titanium SDK 3.0から、Titanium Studioを利用してiOS実機上でデバッグセッションを開始することができるようになりました。iOS実機でのデバッグは以下のステップで実行できます:

  • 「Debug on iOS Device」を選択する
  • Stuidoでアプリをビルドする
  • アプリを自動または手動で実機に同期する
  • アプリを実機上で起動する
  • LANのWifiを経由してStudioとデバッグセッションを開始する

本項ではこれらのステップとデバッグセッションの起動について解説します。

* 「Deploying to iOS devices」に記載されていますが、iOS実機上でのデバッグはOS Xでのみサポートされています。

【必要なもの】

iOSの実機でデバッグするためには

  • Titanium StudioからiOS実機へのアプリのインストールが出来るようになっている必要があります(まだアプリを実機にインストールしたことがない方は「Deploying to iOS devices」をご覧下さい)。
  • Titanium SDK Release 3.0以降がインストールされていること。
  • Titanium Studio 3.0以降がインストールされていること。
  • OS Xマシーンと実機が同じWi-Fiネットワークに接続されていること。デバッガープロトコルはネットワーク越しに送信されます(ケーブルで代用することはできません)。

デバッガーを実行するたびにStudioがアプリをビルドしてiTunes経由でインストールしようとします。iTunesを経由してインストールするのではなく、必ず

  • USBケーブルで実機を接続します(推奨)。
  • 実機側でLAN経由でiTunesと同期するよう設定します。そのためには実機は必ず電源と接続されている必要があります。それからルーター側でマルチキャストとUPnPが有効になっていなければいけません。

iTunesを実機と同期させている場合は、iTunes側で自動的にアプリを同期する設定にすると便利です。

iTunesで同期する以外のやり方として、Titaniumでアプリのビルドが完了したらXcodeやiPhone Configuration Utilityを使ってアプリをインストールすることもできます。

【ネットワーク設定】

iOS実機上でデバッグするためには、Studioを実行しているコンピュータと実機を同じWi-Fiネットワークに接続する必要があります。
公衆無線LANの中にはインターネット側の通信だけを許可してクライアント同士の通信を許可していない設定になっているものもあります。このようなネットワークではiOSのデバイス上でのデバッグを実行することはできません。
もし適当なネットワーク環境がない場合は、ad-hocネットワークをコンピュータ上で作成してデバイスからそちらを利用する方法があります。詳しくはAppleサポートサイトの「OS X Mountain Lion: Create a computer-to-computer network」からad-hocネットワークの作成方法をご覧ください。

【デバッグセッションの起動】

デバッグを開始する前に、iPhone/iPadをターゲットにしたTitaniumのプロジェクトを作成しておく必要があります。基本的には次の3つのステップがあります:

  1. Titanium Studioでデバッグ用セッションを初期化する
  2. アプリケーションのビルドとインストールが完了するのを待つ
  3. 実機でアプリを実行してデバッグを開始する

・デバッグ用セッションの開始

  1. Titanium StudioのApp ExplorerまたはProject Explorerビューからプロジェクトを選択
  2. ツールバーのDebugアイコンをクリック
  3. iOS Deviceを選択してDebug on iOS Deviceウィザードを開始
  4. ウィザードを完了してデバッグ用セッションを初期化。Titanium Studioでデバッグ用のビルドで利用する証明書やプロヴィジョニングプロファイル、SDKのバージョンを選択するプロンプト画面が表示される

一度ウィザードを完了するとTitanium Studioは起動設定を作成し、Titanium iOS Device – <アプリ名>として保存します。この起動設定をDebugのドロップダウンメニューから選択するとウィザードをスキップして同じ設定の新しいデバッグ用セッションを開始することができます。

【ビルドとインストール】

デバッグ用セッションの開始前にいくつかステップがあります。

  1. Titanium Studioでプロジェクトを作成する
  2. ビルドしたアプリはiTunesにインストールされる。すでに実機にインストール済みであれば、iTunesは古いバージョンと新しいバージョンを置き換えるかプロンプトを表示する。
  3. 接続されたデバイスにiTunesで同期する

それ以外にも、XcodeやiPhone Configuration Utilityを使って新しくビルドしたアプリを実機にインストールすることもできます。

【アプリの起動とデバッグ】

アプリのインストールが完了すると:

  1. 実機上でアプリを実行
  • ダイアログが表示され、デバッグ用セッションが開始するのを待っていると表示される
  • Titanium Studioに実機が接続されてデバッグ用セッションが開始(して、Titanium StudioのDebugパースペクティブが表示される)
  • 同じデバッグバージョンのアプリを同時に複数の端末にインストールして、同時に起動するなど稀なケースでTitanium Studioからどちらのバージョンでデバッグするかプロンプトで表示されることがあります。

    【iOS実機デバッグでの問題トラブルシューティング】

    iOSの実機がDebugのドロップダウンメニューに表示されません

     tiapp.xmlで選択されているTitanium SDKが3.0以降であることを確認してください。

    最初の起動時にiTunesから実機へのアプリの同期が失敗します

     iTunesのAppsタブを確認してください。自動で同期する設定になっていること、新しいアプリの隣に表示されているチェックボックスがチェックされているかどうかを確認してください。されていなければチェックして「同期」をクリックしてください。

    デバッガの接続に失敗します

     iOS実機とコンピューターが同じWi-Fiネットワーク上にいることを確認してください。
     Titanium Studioで新しいデバッグ用セッションを起動してください。実機上のアプリをリスタートしないとデバッグ用セッショッンもリスタートすることができません。

    Wi-Fi同期での問題

    USDBケーブルで接続されていなくてもiTunesから実機が確認できる状態になっている必要があります。そうなっていない場合は以下を試してください:

    Wi-Fiネットワークにマルチキャストまたはブロードキャストアドレスがあるかどうかを確認してください。たいていの家庭用ルーターではデフォルトで有効になっているはずですが、企業内のLANや公衆無線LANではそうなっていないかもしれません。マルチキャストまたはブロードキャストアドレスはWi-Fi同期では必須になっていますが、デバッグ目的であればUSBケーブルで同期している場合は不要です。
    Appleサポートの「iTunes 10.5 and later: Troubleshooting iTunes Wi-Fi Syncing」に記載された説明に従ってください。

    【ネットワーク接続のテスト】

    実機とコンピューターが同じネットワークにいるかどうかを確認するために、Titanium Studioで試験用のウェブサイトを作成します。

    実機のIPアドレスを確認します(こちらの解説を参照: http://www.iclarified.com/entry/index.php?enid=496)。
    Titanium Studioで新規プロジェクトを作成します。
     File > New > Projectをクリック
     Web Projectを選択してNextをクリック
     Default Templateを選択してNextをクリック
     プロジェクト名を入力してFinishをクリック
    HTMLファイルをウェブプロジェクトに作成します:
     Project Explorerビューでプロジェクトのフォルダを選択してFile > Newをクリック
     ファイル名にtest.htmlを指定
     新規ファイルを編集して何か基本的なHTMLを入力
    Preferences > Titanium Studio > Web Servers > Built-inをクリック
    実機のIPアドレスと同じレンジにあるIPアドレスを選択
    Titanium Studioを再起動
    Project Explorerビューで先ほど作成したHTMLファイルをクリック
    Run > Runをクリック
    ブラウザが起動してウェブページを開きます
    iOS実機上でウェブブラウザを開く
    コンピューター上のURLバーに表示されたURLを実機側でも開く
     iOS実機上でもページが表示されれば、同じネットワークにいます
     ページが表示されなければネットワークに問題があります

    【関連トピック】

    サポートサイトを作りましたよ

    Titanium MobileのAdventカレンダーなのに、確信犯的に関係ないネタを書きます。10日目は新しいサポートBBSについてです。

    というわけで、増井さんがAppceleratorを退社されて、このまま旧BBSを管理させるのも悪いので、ユーザー会で非公式サポートBBSを引き取ることにしました。最初はOSQAやShapadoのような既存のシステムを使ってみたのですが、ユニットテストが通らなかったりドキュメントのサイトがずっと500番エラーで閲覧できなかったり、長く運用するには不安なものばかりだったので、まあ結構悩みました。でも、このBBSは日本語でのサポートが提供されていない中で、唯一気軽に質問したり回答を探したりできる貴重なリソースなので、ここは一丁、少し張り切って作ってみました。名前は「Don’t Fall」、由来はもちろんこちらの歌です。質問をして回答をする、という基本的な機能は普通のBBSと同じですが、少しだけ他と違う(あるいは他のシステムを真似た)機能も追加してあります。

    その1 評価システム

    投稿を広く受け付けるシステムには、SPAM投稿を完全に回避する方法はありません。旧サイトにもボコボコと変な宣伝の投稿があって、この薄汚れた資本主義社会にうんざりさせられることもたびたびでした。

    新しいシステムでは、ええと、もちろんAkismetで事前にチェックしたり登録したユーザーしか投稿できない+実際に利用可能なメールアドレスがないと利用できない仕組みにしましたが、それでも不埒な輩は変なSPAMを投稿してくることでしょう。そこで、サポートに関係ない投稿については、ユーザーがみんなでやっつけることが出来るようにしました。全ての投稿には評価ボタンがついていますので、ログインしたユーザーはそこをクリックすると-1ポイント付与することができます(あ、もちろん+1ポイントも付与できます)。一定の人数がマイナス評価した投稿は、トップの一覧画面から消えます。これでいつでもサイトを健全な状態に維持することができます。

    評価の基準については、世の中にはいろいろな価値観がありますが、プラス評価は単純に回答が役に立ったとか質問が他の人にも役に立ちそうだといった理由で構いません。マイナスについては、まあいろいろあるでしょうが、サポートに関係ないものをマイナスするようにしてください。別に外した回答があってもそれはプラスが少なければ目立たなくなるのでわざわざマイナスする必要はありません。せっかく回答してくれたのだから、コミュニティを育てるためにもみんなで大切にしましょう。余計な宣伝やSPAM行為がマイナスされれば、とりあえず十分です。

    各ユーザーの現状の評価も誰からも見られるようにしました。あ、このスコアが高いと来るべき審判の日に選ばれた3万人に入ることが出来るとかそういう特典は全くありませんのであしからず。あと、これは書きながら思いついたのですが、TCADとかTCMDとかTCEを持っている人はそれが表示されるようにしておきました。

    まじめな話、ここのスコアが高い人たちを集めて、全国各地でTitanium Mobileのセミナーとかを実施できたらいいと思ってるんですよね。初心者にこんなことが出来るよとデモしたり、一緒に何か簡単なアプリを作ったりするような催しを通じてプラットフォームを宣伝していくことで、コミュニティに還元していくことができたらいいのになと夢想しています。

    そうそう、回答の表示順を変更しました。これまでは単純に回答された順で並んでいましたが、もし評価の高い回答があればそちらが上に表示されるようにしました。リアルタイムでやり取りしているとちょっと不便かもしれませんが、後で同じような問題に行き当たって検索してきた人にとっては評価が高い回答が上にあった方がいいと思いましたので。

    リアルタイムでのやり取りの不便さは次に挙げるコメントで解消できるようにしています。

    その2 コメント

    元々コメントは出来るのですが、不要なやり取りが目立たないように「質問に質問で返す」「答えにさらに質問をかぶせる」機能を追加しました。回答は回答として目立った方がいいのですが、やはりいきなり質問されても「それってこういうこと?」と聞き返したくなることも多いはずです。そういった余計なやり取りが目立つと、検索などでやって来た人が望みの回答を探すのに手間取るので、そのあたりは全部コメントとして別途やり取りできるようにしてみました。

    いや、Stackoverflowのパクリですけどね。

    その3 プレビューと編集

    投稿前にソースコードがどんな風に見えるのか確認したりする方法がなかったので追加しました。旧サイトのコードの部分もだいぶ頑張って移設したのですが、まだ不完全な箇所も残っていそうですね。この辺はもう諦めてしまいました。今後は、投稿前に見栄えのチェックが出来ますので、ぜひ活用してください。

    また、全部の書き込みを正確にコンバートしようとしても、タグの書き方も千差万別であまり頑張っても仕方が無いと悟りました。ある程度積極的に参加していて高い評価を得ている人には編集権限を付与できるようになっています。フォーマットがおかしなものを見つけたら直してもらえると助かります。こちらでも見つけ次第直していきます。自分の質問や回答はいつでも編集することができます。

    質問や回答の編集は全て履歴が残ります。また編集前の状態も保存されていますので、やろうと思えばすぐに戻すことができます。まあ、そんな変なことにはならないでしょうが、もし編集に問題があればさくっと復活できるようになっています。

    その4 ふっかつのじゅもん

    旧サポートBBSのユーザーアカウントをそのまま利用できるようにしました。これまでのコメントや質問も引き継ぎます。といってもパスワードをそのまま移設することはできなかったので、専用の窓口を用意しました。こちらで旧サイトで利用していたログイン名とこれから利用する新しいパスワードを入力すると、旧サイトに登録されていたメールアドレスまで確認のメールが送信されます。メールに記載された案内に従って所定のURLにアクセスすると、アカウントを復活させることができます。

    その5 その5

    目玉機能の10個くらい簡単に見つかるだろうと思っていたのですが、もうこれ以上は特にないですね。投稿されるとTwitterに自動的にお知らせが投稿されます。#TitaniumJPのハッシュタグ付きなので、サポートしたくてたまらない猛者たちが次々と飛び込んできてくれると思います。いまちょっと検索を直しているので、これが終わればまあ少なくとも今まで通りくらいの使い勝手にはなるんじゃないかと思います。あと、返信があったらメールを送るとかもやってもいいんですが、ちょっと面倒だしSPAMとか考えると対策が億劫なので後回しにします。旧サイトのコンテンツも、こちらの移設先にリダイレクトされるように増井さんに取りはからってもらえましたので、検索で訪問される方にも便利になったんじゃないでしょうか。

    あとは、みんな一緒にサポートに参加しましょう!きっといいことあるよ!

    みんなもっとサポートに参加しようず from Toshiro Yagi

    badgeの限界を試す

    こちらは「Titanium mobile “early” Advent Calendar 2012 – あすとろなんとかさんを救え –」の三日目用のエントリです。
    ========================================
    Titanium Mobileに限った話ではないのですが。

    Ti.UI.createTabで作ったtabのbadgeって何桁まで表示できるかご存知ですか?

    正解は、10億からあふれたので999,999,999まででした。良い子のみんな、未読メールを10億通も溜め込んじゃダメだぞ!

    …くだらない、だと?

    でもまだやります。じゃあ、Ti.UI.iPhone.appBadgeの方はどうでしょうか?

    ふっふっふ。こちらの方は意外と軟弱で、たったの10,000でもうこんなみっともない姿に。

    わっはっは。は。

    小ネタでいいっていったじゃないか。

    じゃあ、Ti.UI.SIZEとTi.UI.FILLに全て置き換えられたかにみえる幅や高さの自動指定「’auto’」がまだ現役で残っている、それどころかSIZEやFILLだとエラーになるメソッドはUIのどのAPIでしょうか?というとっても有用な小ネタはあすとろなんとかさんに譲ります。さらば。ばっははーい。

    起動しないiPhone Simulatorをなんとかする

    こちらは「Titanium mobile “early” Advent Calendar 2012 – あすとろなんとかさんを救え –」の三日目用のエントリです。小ネタ限定ということで、内容は薄いですがまあ一発披露します。とはいえ、ちょっと危険なことも含まれているので、どうか実行する際はよくよく考えてくださいね。実際、失敗してしまった例を見たことがありますが、同情することしかできませんでした。

    ——————————————–

    専門学校で教えているときなど、よくiPhone Simulatorが起動しないという報告を受けることがあります。実際、プログラムはどこも間違っていないのに、シミュレータを起動したらアプリが開始される間もなくドンと落ちます。ちょうど初日のあすとろなんとかさんのエントリと同じように、特にエラーも吐きません。

    エラーも吐かないのではっきりとした原因はわかりませんが、どうやらシミュレータのゴミが溜まっているとこのようなことが起きるようです。ゴミといっても別に不快な排泄物とかではなく、アプリのGUID毎のディレクトリが残ったままだと発生することがあることまではわかりました。なので、これを掃除すればなんとかなります。もし、インストールはしたのに全然先に進めずお困りの方は下のやり方を試してみてください。

    では掃除しましょう。最近のOS XはユーザーのライブラリディレクトリがFinderからは見えないようになっているので、この操作はターミナルから実行する必要があります。GUIしかわかんなくてマウスがなけりゃ何にもできないヘタレコマンドラインの操作に慣れていない方にはちょっとおっかないかもしれませんが、その場合はこちらをみて心の準備をしてください。下の「$」ドル記号はターミナルが出力する文字なので、みなさんはその右側から入力します。

    $ cd $HOME/Library/Application\ Support/iPhone\ Simulator/6.0/Applications/
    $ ls
    0864BE05-B166-46C8-8BCC-32AEC2245170/   27706EFB-BC84-4EA6-912E-8D970ECEC458/   E9BAE0E2-96DE-4B82-8F88-3204B09E7E92/
    20ED5860-D7A5-4D3F-9B7B-EE982212D76A/   4F04718F-723B-4CD7-9834-BAE19621D576/
    

    cdはchange directoryでディレクトリを移動するコマンドです。右側は異動先です。$HOMEはいつでもどこでも誰とでもあなたのホームディレクトリに置き換わってくれる魔法の言葉です。右端まで入力したらreturnキーを押しましょう。何もいわれなかったら大丈夫です。lsはlistのことで、ファイルの一覧を表示します。lsの後すぐにreturnキーを押すと、例えば上のようになんかだらだらと文字が表示されることがあります。

    実はこちらがiPhone Simulatorにインストールして起動したアプリたちのGUIDなんです。アプリがシミュレータの中にある場合はこれらも残るようなので、いったんばっさり削除しましょう。

    $ pwd
    /Users/あなたのログインユーザー名/Library/Application Support/iPhone Simulator/6.0/Applications
    $ rm -rf $HOME/Library/Application\ Support/iPhone\ Simulator/6.0/Applications/*
    $ ls
    

    pwdというのは現在あなたがみているディレクトリを返すコマンドです。出力結果が上と同じようになっていることを確認してください。しましたね?しましたよね?次のコマンドは、これはファイルをremoveするrmコマンドです。基本的に後戻りはできませんので、間違ってファイルを消してしまうとまあ元に戻すのはとっても大変だし普通は無理だと考えていただいて結構です。なので、これを実行する場合は相対パスではなくちゃんと絶対パスを使って慎重な上にも慎重になった方が身のためです。思い出の詰まった大事なファイルを誤って消してしまうのが嫌なら、悪いことはいわないのでpwdで出力された内容をコピペしてください。もっとも、「Application Support」や「iPhone Simulator」のようにスペースが入る場合、これはコマンドの引数の切れ目なのかディレクトリの中の空白文字なのかシステム側で自動的に判別できないため、ターミナルでディレクトリの中の空白文字には直前にバックスラッシュを入れて空白であることを明示する必要があることをお忘れなく。最後のlsコマンドで何も返ってこなければ、作業は完了です。Titanium Studioからプロジェクトをcleanして、改めてビルドしてみてください。

    もちろん、毎回毎回こんなことをやるのは面倒だし作業は手順が多ければそれだけ間違いが発生する可能性も増すので、普通は

    $ echo 'alias cleansim="rm -rf $HOME/Library/Application\ Support/iPhone\ Simulator/6.0/Applications/*"' >> $HOME/.bashrc
    $ source $HOME/.bashrc
    

    のようにして、cleansimと入力するだけで削除が実行できるようにしておくのが正しいやり方です。もちろん、バージョン依存が嫌いで

    #!/usr/bin/env ruby
    
    dir = "#{ENV['HOME']}/Library/Application Support/iPhone Simulator"
    version = Dir.entries(dir).sort.last unless ARGV[1]
    dir = "#{dir}/#{version}/Applications"
    Dir.entries(dir).each do |d|
      if !File.directory?(d)
        # .や..じゃない
        dir_to_remove = "#{dir}/#{d}".gsub(/ /, '\\\ ')
        system "rm -rf #{dir_to_remove}"
      end
    end
    

    を/usr/local/bin/clearsimとして保存している人もいます(これを書いてます)。

    TCE Level1とったどー

    TCE1

    とったどー

    180問、80%以上の正解率で合格という、ひたすら体力勝負の試験でした。翻訳に問題があるので、現時点ではできれば英語で受験することをおすすめします。

    TitaniumとJasmineとJenkinsでCI

    今更ながら、Tiで作ったアプリの自動テスト環境を見直してみました。以前構築したことはあったのですが、結局途中で動かなくなって放置していました。今では反省しています。

    まず「Titanium Mobile + Jasmine + Jenkins でiPhoneアプリの自動テスト組んでみたよ」という秀逸なエントリがあるので、そちらをヒントにやってみました。いくつか変更しないと動かなくなっていたので、こちらにForkしてありがたく使わせてもらっています。使い方は上のエントリとほとんど同じです。

    まず @astronaughts さんの変更をマージして、最近のTiのプロジェクトのSDKのバージョンの取得方法に変更しました。それから、Tiのシミュレータは$HOME/Library/Application Support/iPhone Simulator/6.0/Applications/XXXXX/アプリ名/以下をTi.Filesystem.resoucesDirectoryとするのですが、サンドボックス化が甘くて相対パスで指定すれば実行ユーザの権限で可能な限りどこにでもファイルを書き出すことができるので、Jenkins側のジョブとプロジェクト名を同じにすれば、Jenkinsのworkspaceにログを出力するよう変更してみました。ここだけ気をつければ、あとはid:ikeike443さんの記事そのままで動作します。

    手順:

    $ brew install jenkins
    $ ln -nfs /usr/local/Cellar/jenkins/1.484/homebrew.mxcl.jenkins.plist ~/Library/LaunchAgents/
    $ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
    
    // Tiのプロジェクトを作成したら…
    $ cd YOUR_PROJECT
    $ git init
    $ git add .gitignore
    $ git commit -a -m 'init'
    $ cd Resources
    $ mkdir {vendor,lib,spec}
    $ cd vendor
    $ git clone git://github.com/yagitoshiro/jasmine-titanium.git
    $ cd jasmine-titanium
    $ git submodule init
    $ git submodule update
    $ cd ../../../
    $ vi .gitmodules
    // .gitmodulesの編集。中身はこれ
    //
    [submodule "jasmine-titanium"]
            path=Resources/vendor/jasmine-titanium
            url=git://github.com/yagitoshiro/jasmine-titanium.git
    //
    $ git add .gitmodules
    $ git commit -a -m 'init'
    

    Jenkinsで新規のジョブを作成します。プロジェクト名と同じ名称でジョブを新規作成してください。Gitのレポジトリは上で作ったプロジェクトのディレクトリになります。ビルドはid:ikeike443さんのエントリのまんまですがシェルの実行で

    git submodule init
    git submodule update
    cd Resources/vendor/jasmine-titanium
    git submodule init
    git submodule update
    cd ../../
    python vendor/jasmine-titanium/script/specs.py -r jenkins
    

    としました。またビルド後の処理としてJUnitテスト結果の集計を選択し、ログの場所は「test-result/*xml」とします。

    TiCordova

    まあ、そんなに他意はないんですが、そういうのを作ってみました。

    このモジュールはWebViewに登録したイベントリスナーをリモートのHTMLから起動することが出来るようにするものです。使い方を間違えると大変なことになってしまいますが、例えば信用できる接続先で動作させるととても便利なものになります。

    var ticordova = require('org.selfkleptomaniac.ti.mod.ticordova');
    var webview = ticordova.createWebView({
      url:'http://example.com/test',
      top:0, height:Ti.UI.FILL,
      width:Ti.UI.FILL
    });
    
    webview.addEventListener('my_event', function(e){
      Ti.API.info(e);
      alert(e);
    });
    

    アプリ側はこのようにイベントリスナーを用意します。接続先のHTMLは

    <a href="fireecent://my_event/data/to/pass">Click</a>
    

    上のようにfireeventというschemaで別ページを開こうとしてください。するとmy_eventというイベントが発火してくれます。ちょっとしたPhoneGap/Apache Cordovaっぽいことができるようになると思うので、TiCordovaと名付けましたが、その辺は冗談です。

    Titanium Mobileのapidocのビルド

    Titanium MobileのドキュメントはGithubに公開されています。しかしそのままの形式では読むことはできません。

    そこでビルドの方法を紹介します。まずレポジトリをcloneします。

    $ git clone git://github.com/appcelerator/titanium_mobile.git
    $ cd titanium_mobile
    $ sudo easy_install pyyaml
    $ sudo easy_install markdown
    $ sudo easy_install mako
    $ sudo easy_install Pygments
    $ cd apidoc
    $ ./docgen.py
    

    これでtitanium_mobile/distディレクトリ以下にHTMLファイルが生成されます。
    ただし、index.html以外はヘッダやフッタがない、body部分のみとなりますので注意が必要です。

    Titanium Mobile Meetup Tokyo

    参加してきました。初めて行く場所なので案の定迷って遅刻しましたが、プレゼンかましてきたのでこちらにも晒します。フォントが置き換わってしまうのは仕方がないんですが、実際のやつの方は音も出てました。

    みんなもっとサポートに参加しようず from Toshiro Yagi

    というわけで、ちょっと日本語のリソースをちゃんと集めないといけないなと思ったので、言い出しっぺとして出来ることからやっていくことにします。いきなり挑発に乗ってdoc-jaの@donayamaさんがGithubにドキュメントをドンと公開されたので、まずはそれを見直していこうかなと思います。またサーバも@ryugoo_さんにご提案頂いたので申し込みしてみました。その際、団体の名称が必要だったので「死ね死ね団Titanium Mobileユーザー会」という無難な名前でとりあえず出しました。

    VPSの申請が通ったら(通らなかったらHerokuとかでやる)、とりあえずウェブサイトを用意します。ソースはGithubに置きますので、デザインとかで参加してくださる方がいるとありがたいです。

    とりあえず、今日思いついて提案したことなので何もまだ進んでいませんが、進捗があればここやTwitterで報告しますね。

    更新(1)

    申請したところKDDIウェブコミュニケーションズ様より即日お返事頂きました!ありがとうございます。申請が完了したら諸々準備を始めます。

    追記:ユーザー会のウェブサイトができました!

    更新(2)

    FacebookのページTwitterのアカウントを用意しました。

    更新(3)

    doc-jaのGithubはこちらです。

    フリーランス生活2周年記念

    2010年9月からフリーランスになったので、今月でちょうど2周年になりました。今日まで無事やってこれたのも、皆様からの暖かいご支援あってのことです。どうもありがとうございました。これからもどうぞよろしくお願い申し上げます。

    3年目を迎えるにあたり、これまでのソフトウェア開発一辺倒から少し距離を置いて、新しいことを始めました。まず、いつも何かとお世話になっているフォーワンファースト様の方で「Titaniumで始めるスマートフォンアプリ開発講座」を開講して頂き、不定期にセミナーを実施するようになりました。それから、この9月からはバンタンドットライブアカデミーでスマートフォン向けアプリ開発者を目指す方々のためにTitanium Mobileを使ったアプリ制作の講義を毎週担当することになりました。詳しいことは発表されてからお伝えしますが、今からとても楽しみにしています。

    ご存知の方もいると思いますが、Titanium Mobileを使うようになってから、受託案件であれこれと苦労したことを共有したくて、コミュニティのサポートサイトなどでこれまで積極的に回答など書き込んできました。まさかその延長で仕事をしようなどとは考えたこともなかったのですが、ああいった活動は、きれいごとを抜きにしても、意外なほど他人のためというよりむしろ自分のためになります。最初は単なる親切心と苦労話の共有がしたかっただけなのですが、やってみるとその意義には思った以上のものがあるようなのです。仕事としては正直なところ全然ペイしないというか、たとえ3時間程度のセミナーでも準備を含めれば相当な時間も使う上に体力も必要なので、その間に案件でもこなしていた方がよっぽど儲かります。でも、モジュールやコードサンプルを作って公開したり、ドキュメントを翻訳したりするのも全く同じだと思うのですが、まず初心者を手助けすることでユーザ数が増えれば、その分だけプラットフォームの世間的な認知度が上がるので、先行者受益があります(セミナーの依頼が来たりとか)。それから、実際に案件などで経験できることは限られている一方で、あるプラットフォームについての知見は関連するコードを書いた量と踏んだ地雷に数に伴って増えていくので、質問に答えるためにコードを書いたり内部の実装を調査していくことによりさらにいろいろなことに詳しくなり、自分の案件で同じ問題に躓かなくなるのでかなりお得です。もちろん、感謝されると自尊心がみたされるので、特に自己評価が低くなりがちな人にはおすすめです。

    また、セミナーにご来場の皆さんがとても真剣にアプリ制作について学ぼうとされている姿はとても刺激になります。そこで質問されてきちんと回答できなかったことがあったりするとひどく恐縮してしまいます。見知らぬ人たちの考え方やニーズを聞くのは面白いことなので、ソフトウェア開発の経験をだいぶ積んできたと思っている方はぜひやってみるといいと思います。

    そんなわけで、高層マンションでシャルドネ片手に偉そうなメルマガを美人秘書に口述筆記させて暮らすような段階には至っておりませんが、自転車操業ながらここまでやってこられたのも皆様のおかげであるとあらためて感謝しつつ、3年目も何卒よろしくお願いいたします。サポートサイトやQAサイト、Twitterでの質問への回答といった活動もこれまで通り続けていきます。