この記事は、@astronaughtsさん企画の「Titanium Advent Calendar 2011」向けに書いています。
Who are you?
本業は、ITエンジニア/クリエイターな仕事をしている求職者の方を対象に、仕事探しのサポートをするキャリアコンサルタント(エージェントという方がしっくり来る人がいるかもしれませんね)という仕事をしてます。エンジニアではないですが、目指すところは「コードの書けるIT業界専門のキャリアコンサルタント」ですww
なぜTitaniumやってるの?
Titaniumで開発をしようとおもったきっかけは、以前しゃべったこと(*1)があるのですが、iPhone/Androidアプリ開発の勘所っていうのを抑えたかったのと、個人的に欲しいアプリ(*2)があったから。
実際やってみて
Titaniumというツールがきっかけとなり周辺の要素についても興味関心が持てるようになり、結果自分自身の知識・経験の上積みが出来たかなと思ってます。以下、具体的なことをいくつかあげていきます。
JavaScriptの理解度深まった
javascriptプログラマのレベル10のような形で判定すると、取り組みはじめた当初はレベル1,2程度だったのですが、JavaScriptデザインパターン等の書籍を読んだり、他人のコード(最近だとtweetaniumのソースコード等)を読み進める中で、JavaScript自体の理解度が深まったかと思ってます。(*3)
開発する上での周辺要素の重要性に気づけた
自分でiPhoneアプリ作る中でリリース後の保守性を念頭においた場合、
- どう実装しておけば、後々読みやすいコードになるのかという手法に関すること(ここ最近で言えばシングルコンテキストな書き方とかCommonJSなスタイルになれるためにGoogleAccountの認証部分に関してモジュール書いたりとか)
- アプリケーション開発の周辺要素(例えばテストファースト的なアプローチとか、ソースコードのバージョン管理の必要性・・)
という事についても実際手を動かしてきたことで、肌感覚を持って理解できたかと思ってます。
折角なので1つくらいはTIPS的なことを書きます
Titanium.UI関連の記述は
//app.js var label1 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 1', width:'auto' });
みたいなプロパティの設定をする記述が多くなるとソースの見通しが悪くなることがあるかと思いますが、最近自分が読んだtweetaniumやcommonjsExample等のソースコード内で利用さているテクニックがあったのでそれをご紹介します
//app.js Ti.include("styles.js"); Ti.UI.createWindow($$.win1);
//styles.js var myAppUI = {}; (function(){ myAppUI.properties = { win1:{ title:'Tab 1', backgroundColor:'#fff' }, tab1:{ icon:'KS_nav_views.png', title:'Tab 1' }, //以下略 }; }).call(this); var $$ = myAppUI.properties;
自分が作成する独自ライブラリの名前空間をstyles.jsの1行目で定義してます。(これについては、無名関数を使ったアプリのひな形が参考になりました)
途中の記述は特に説明なくてもOKだと思うので割愛して、最後の行だけ説明します。
少し話がそれますがJavaScriptのライブラリとして有名なjQueryで
// Map the jQuery namespace to the '$' one window.$ = jQuery;
というコードがありますが、jQuery.xx.みたいにタイプするのは面倒なので、jQueryオブジェクトのショートカットとして$というのを割り当てるテクニックが使われていますが、このテクニックがtweetaniumやcommonjsExampleでも利用されており、それが最後の行の「var $$ = myAppUI.properties;」になります。
そのため、以下2つは同じ結果が得られます
Ti.UI.createWindow(myAppUI.properties.win1); Ti.UI.createWindow($$.win1);
これでソースの見通しが良くなるので、最近はこの書き方がお気に入りです。
Titanium Mobileがきっかけでスキルアップになるのでは?
何か新しい事にチャレンジしようと思った場合、最初の敷居が高すぎると、
「えっーそんなに難しいなら、やりたくないなぁー」
となるかと思います。
またチャレンジした結果の姿を想像して
「身についたのは確かに良いことだけど、果たして今後を考えるとこの身につけたことがどこまで役立つんだろうか・・・」
というような状況だと、チャレンジしたくなくなるかもしれません。(*4)
JavaScriptで開発できるTitanium Mobileというのは、Objective-Cのそれに比べれば最初の敷居は低く、JavaScript(と便利なライブラリ群)の習得によって、その後のキャリアが色々考えられそうという期待が持てるのかと思ってます。
これがきっかけでスキルアップにつながるんじゃないかというのが、自分が1年やってみた経験から言えるかなと思ってます。
Webデザイナーな人がTitanium Mobileでスマフォアプリ作れるようになると、他の人との差別化要因になると思うので、そういう人にチャレンジしてもらいたいです。
最後に
(人材派遣会社に勤めているのにどうかと思うけど)人付き合いがそれほど得意ではない自分ですが、緊張しながらもTitaniumオフ会、Titanium新年会、「Titanium Mobileで開発するiPhone/Androidアプリ」打ち上げ in 東京、そして定期的に開催されているTitanium Meetupも第0回から参加して全部で8回参加して、技術者の方が集まるコミュニティというものを実体験を持って知れるようになり、自分の世界観が広がったと思ってます。
特に以下の方々には今年お世話になったと思うのでこの場を借りてお礼をさせていただきたいと思います。
- Meetupを定期的に開催いただいた増井さん
- うちの会社の技術セミナーでTitaniumに関する講義&ライブコーディングもしていただいた株式会社マウントポジションの皆さん
- 自分のブログやtweetにコメントなどいただき、適切なアドバイスしてくれたり、Titaniumの書籍書かれたdonayamaさん
明日はsawada50さんの番ですが、どんな内容になるか楽しみですね!
(*1)Titanium新年会でエンジニアでなくてもTitaniumならi phoneアプリ開発にチャレンジ出来るという内容でLTやりました
(*2)作り始めて1年近く経過するのですが、未だにリリースの目処がたっていませんが
(*3)Titanium Mobileで開発すればJavaScriptのレベルが上がるわけではないですが、読むのに調度良い分量のソースコードがすぐに見つかったというのがあるかもしれません。(正確に理解できているかどうかはまた別の話ですが・・)
(*4)以前読んだ間合い上手 メンタルヘルスの心理学からという本でいうところの「結果予期」とか「効力予期」というのでこのあたり説明がつくかと思います