T

Titanium™ Advent Calendar 2013

Titanium™ Advent Calendar 2013」12/4はユーザー会の名ばかり会長が担当です。肩書きは偉そうですが、活動といえばもっぱらサポート係をやっています。サポートサイトを見るといつも同じやつがレスつけてんな、と思う方もいらっしゃるでしょうが、趣味なので止めないでください。まあ、まだまだ至らないことがたくさんありますが、今日はそのあたりのことについていろいろとお話しします。

サポートサイト用自動運転ボットと化した自分の手元の環境には常にSupportとSupportAlloyというプロジェクトが用意されています。サポートサイトに質問があると、このどちらかに検証用のコードを書いて試しています。なので、質問の際はAlloyかどうかを書いてもらえると助かります。検証用のプロジェクトの中身のJSは時に数百行になっていますが、これは前の質問の検証用コードをコメントアウトして継ぎ足して使うことが多いからで、実際には数行で動かしています。最近ではsamplemoduleとiOSSampleModuleいうモジュール用のプロジェクトもあります。もちろんモジュールの試験用です。

もうずっとこの活動をしていますが、やっていてよかった点は:

Pros

そんじょそこらの人よりずっと詳しくなった

わからないとソースコードを調べることができるのがFOSSのいいところなので、質問を受けてわからなければObj-CやJavaのレベルまでなら降りて調べています。そのためずいぶんとTitaniumの中身について詳しくなりました。逆に、おそらくAptanaの抱える権利関係のあれやこれやで公開されていないTitanium Studioなど普段Eclipseも使わないのでこれっぽっちもわかりません。

SDKに勝手に手を入れてオレオレSDKを作るのはあまりおすすめできるやり方ではありませんが、慣れてくるととても簡単なのでついついやってしまうんですよね。それが割と気軽に出来るのも、日頃のサポート活動のお陰だと思います。

さらにいうと、これのお陰でJavaだろうがObj-Cだろうが普通のアプリくらいなら書けるようにもなってしまいました。なので、これからアプリ開発を始めたいというウェブ開発者のみなさんには、入門としてTitaniumというのはそう悪くない選択肢だし、学びながらも結果を出せるところもいいよとお勧めしたいです。

知らない機能を触って練習できる

iOSもAndridもこれだけ豊富な機能を備えているのですから、案件や自分のアプリで要求されない限り触れることはない機能はたくさんあると思います。サポートサイトをやっていると、擬似的に案件を受注するようなものですから、いい練習になります。それに、たとえわからなくても、案件と違って失うものは何も無いので、社会的信用に関わると震え上がる必要はありません。一度でも触ったことがあるAPIならともだちだよね、という感じで口笛吹いて空き地に出かけてもいいと思います。

ときどき仕事になる

これは思わぬ副産物ですが、最近ではサポートサイトには出せないので案件として改修を受注するケースが増えてきました。基本的には副業なのであまり深くコミットすることはありませんが、普及活動として基本的には知っている情報は目一杯お伝えすることにしています。おそらく今後もこのようなケースは増えるでしょうから、サポートサイトでも有償の案件として開発者を募集する仕組みを導入するのがいいかなと考えています。サステイナブルなサポートはマネタイズできるスキームがASAPに明後日の方向へWIN/WINがマストなお部屋探しです。ジャストアイデアですが。

あと、来年からTitaniumの講習を都内で平日夜に定期開催するかもしれません。詳しいことが決まり次第お知らせします。

「Titaniumの人」になれる

お歳暮にハムを贈るだけでハムの人にはなれますが、Titaniumを贈ってもなかなかそうは呼ばれません。しかしユーザー会を立ち上げたりサポートサイトを運営していると、開発者向けのイベントなどにお呼びがかかることがあります。大変ありがたいことです。この2月にイベントのために急遽作成したユーザー会の名刺も年内に全て配り切ってしまいました。やはり、なんだかんだといって、エンジニア同士は横のつながりがとても大事です。今後も可能な限りいろいろなところに出向いていきたいと思います。しかし、本当はもっと全国のイベントに参加したいのですが、なにぶん当方とても貧乏な3人の子持ちのフリーター40歳なのでそれほど潤沢に自由な時間とお金があるわけではありません。そこで、ユーザー会のみなさんにも、もし積極的に関わって頂けるのであれば、もう勝手に支部長とか名誉会長とか本家とか裏組織とか北斗琉拳とか自由に名乗っていただいて結構なので、是非Titaniumの人として各地のイベントに出没してください。

もくもく会でも、知らない方に声をかけて頂けるとそれだけで横の世界が広がっていくので、ありがたいことです。

Cons

と、いい面ばかりを強調しましたが、それはもちろんこの後に課題を挙げるためです。先にいいことを書くのは文章作成の基本だそうですから。

サポートサイトを運用していて気づいたのですが、この広い世の中にはサポートサイトにさえ辿り着かずに消えていく・不満を抱えたまま別のプラットフォームに鞍替えしてしまうケースがたくさんあるようです。いくつかよくあるパターンを挙げてみると:

インストールが出来ない

Titaniumは、いうなればmoving targetなので、常に変化しています。新しい機能を追加する方が優先で、UIの固定などにはあまり興味がありません。そのため、インストールの方法も変化しています。ウェブ上にはたくさんの情報があり、少し検索するだけでたくさんの詳細な(時には動画まで用意された!)インストール手順が見つかります。しかし、当然ではありますが、それらはTitaniumの変更に合わせてアップデートされているわけではありません。そのため、せっかくTitaniumを試してみようとしても、ここで困惑してしまい先に進めない方も大勢いらっしゃるようです。この状態でユーザー会のサポートサイトに来る人はあまりいませんので、大変残念な結果となってしまいます。

ちなみに、Titaniumの書籍をものすと直後に何かしらUIの変更があるというのはジンクスとなっています。

この問題を解決する方法は、ユーザー会としてメンテナンスするインストール手順のページを用意することだと思います。と書くと簡単なようですが、実はこれは結構面倒くさい作業です。ユーザー会でアクティブに活動するような人たちはたいていそれなりのスキルを備えていて、インストール時に経験した問題など自力で解決してしまうことがほとんどです。またTitanium歴が長ければそれだけ最後にインストールしたのはずいぶん昔だったりするので、今更どうやったのか思い出すだけでも一苦労です。おそらく理想的なのは、開発よりも開発環境そのものに興味があり、クリーンインストールしても惜しくない環境を維持できている人材なのですが、そうそう見つかるものではありません。もし我こそはという方がいらっしゃれば、ユーザー会の方でWikiページを用意したので、是非インストール方法を解説するページを作ってもらえるととても助かります。

いまさらっと書きましたけど、ここすっごい大事ですよ。Wikiなのでみなさんのご協力があればとてもいいことがあると思うんですよ。@donayama さんが作ってくれていた過去の資料なんかも統合できれば最高じゃないですか。

どうやって書いたらいいかわからない

一時期、まだTitanium黎明期の頃、おそらく2年か3年くらい前に、「私はこう書いている」というエントリがいくつか立ち上がり、Titaniumでアプリを作るにはそもそもどういうやり方をするのがベストなのかをユーザー同士で探り合っていたのを覚えています。上のインストールと同じく、実はTitaniumで書くJavaScriptについても推奨されるやり方はいくつかの変遷を辿り、今日ではおおまかに2つのパターンに収斂してきたといっていいでしょう。これも、ウェブ上のドキュメントでメンテナンスされ続けているものがなく、古い情報が残ったままになっているので、なんとかしなければいけない状況です。最近、仕事としていくつか既存のプロジェクトのソースコードに触れる機会があったのですが、半分くらいは古い資料を元に構築してしまい困っているケースでした。もうある程度動いているプログラムを根本的に改修するのは基本的に愚かなことなので対症療法的になる方がいいはずなのですが、この場合はどうしても根治療を目指さざるを得なくなるので困ったものです。

今後のあらゆるTitaniumのプロジェクトは、Ti.Includeを決して使わず、塩分控えめなシングルコンテクストで書くべきであり、それほど複雑なものでなければなるべくAlloyを使うべきでしょう。Ruby on Railsはもうずいぶんと長いことウェブアプリケーションフレームワークの中でも最も影響力のある立場にありますが、初心者向けのドキュメントが熱心にメンテナンスされていることでも特筆すべき存在です。書籍もずっと改訂されており(まあそれだけ売れてるってことなんでしょうね)、見習いたいと思います。

もし可能であれば、お題を決めて一緒にアプリを作るイベントとかやるといいかもしれないですね。嫌らしい話をすると、本来は公式トレーニングがこの役目を果たすべきなのでしょうが、とってもお高いですし、なんといっても今年から国内では提供されなくなりましたので、もうユーザー同士でなんとかしてしまうしかないと思います。親切なことに教材は公開されていますからね。

大きな声で繰り返しましょう、もっと大きな声で!:

  • Ti.Includeは使わない!
  • createWindowにurlプロパティは使わない!
  • ループの中でfunctionを作らない!
  • グローバル空間を汚染しない!

猿があなたを見つめています。

* ユーザー会の方でWikiページを用意したので、この辺も載せていきたいですね。

他人のせいにしたい誘惑

もう何年も前のことですが、とある会社内でTitaniumについて本国のベンダに問い合わせしたい項目を募集したところ、集まってきた答えに愕然としたことがあります。例えば「JavaScriptではtrueになるはずのif文にtrueが返らない不具合がある」といったものがずらずらと並んでいたのです。仕組み上、JavaScriptを実行している部分は既存のV8などなので、まあ間違いなくお書きになったJavaScriptの方が間違っているわけですが、案件で切羽詰まっているとついつい「自分のせいじゃない」と主張したくなってしまうのが人間というものです。その点、TitaniumはObj-CやJavaのAPIを抽象化している存在なので、開発者から見れば問題はそこにあるに違いないように感じられるものですから、うまくいかないときはすぐに集中砲火を浴びる性質があります。もちろんここに不具合がないというわけではなく、それどころか結構○○なこともよくあったわけですが、それでも、ちょっと考えればソースコードは全部見られるのですから調べればすぐにわかります。またググるだけで結構な情報が得られることにもすぐ気づくと思います。というわけで、私は個人的にはもちろんTitaniumにも欠点はあり、そこから離れてしまうユーザーもいるのは当然で、むしろ卒業みたいな感じで飛び立ってくれるならたとえ大恩あるChatWorkさんでも喜んでお見送ります(qnypは許さないといっているわけではありません)。しかし、ロクに調べもせずに他人のせいにしたい誘惑に駆られただけの文句であれば、世論と予算が許す限りは顔を出してちょっと待ったとお節介にも口を出します。お代を頂ければコードも出します。研修だってします。JavaScriptへの愛が足りない人間には容赦しない、これは鉄則です。繰り返します。汝の隣人と汝自身より少しだけ多くJavaScriptを愛しなさい。猿があなたを見つめています。

というわけで、駆け足に振り返りすぎていろいろ振り切ってしまいましたが、来年はもう少し活動領域を広げて、開発の方にも力を入れていきたいと思います。なんと今年はモジュールばっかり書いて全くアプリを作っていないんですよね。モジュールのサンプルアプリしか書いていない。他人のJavaScriptって基本的には誰にとっても読むのは苦痛ですが、そんなことばっかりやってたらよろしくないので、たまにはひっでえJavaScriptを恐れ多くも他人に読ませる側にまわりたいと思います。わっはっは、誰も恐怖からは逃れられないのだ。

明日は @h5y1m141 さんだよ!猿があなたを見つめています。

Posted by on 12月 4, 2013 in Titanium

コメントを残す