サポートに問い合わせてみました。2014年モデルの一部に私のように誤表記されてしまう個体が存在することを認識しているそうです。時期は未定ですが恐らくOSのアップデートで修正されるでしょうとのこと。あー、問い合わせて良かった。Plugin)気が付けばブログ更新がほぼ1年ぶりという...。バージョン3になって、環境周りが大きく変更されました。それに伴ってプラグインの導入方法や開発方法も変更になり、以前作ったバージョン2向けのプラグインが使えなくなってしまったのですが、バージョン3がリリースされた当時(記憶では2013年の夏だったかと)仕事が超絶忙しく、全然キャッチアップできていませんでした。プラグインは私の他にも公開されている方がいらっしゃるのですが既にバージョン3対応済み。それで、ようやく時間が作れるようになったので、自分のプラグインをバージョン3対応してみることにしたのでした。何が変わったのかバージョン3では開発環境がNode.jsベースになりました。この変更が一番大きいですね。プラグインの導入については、以前は必要なファイルを手動で自分のプロジェクトにコピーしていましたが、コマンドを叩くことで自動的に取り込まれるようになりました。プラグイン導入のコマンドは以下のような感じです。プラグインのURLこれらの変更は、ターゲットOSの開発環境(手法)に精通していなくてもそのOS向けにアプリをビルドできる、という恩恵をもたらしてくれます。この新しい開発環境はまだまだこれからだなという印象です。(の存在)が微妙です。変えただけのものがあったりします。見つかりません」などという警告が出たりします。Androidプラグインのバージョン3対応は、つまりはこの新しいプラグイン導入コマンドに対応することです。向けのプラグインについていえば、名前空間に若干の変更が入りましたが、インターフェースそのものは以前から変わっていません。いうマニフェストを用意する必要があるぐらいです(この定義ファイルをコマンドが解釈し、従来手動で行っていたファイルのコピーなどが自動化されます)。そのため従来のプラグインをそのままバージョン3対応することはそんなに難しくありませんでした。仕様と違っている部分があったり、テキスト送受信にしか対応していなかったりで、ただバージョン3対応するだけではイマイチな状況。仕様になるべく準拠させることその上でバイナリ送受信にも対応させることを目指しました。対応すべき部分は残っていますが)。今回一番大きな追加機能であるバイナリ送受信。はじめに書いてしまいますが、プラグインでのバイナリ送受信はあまりメリットがありません。エンコードしなければならないからです。これを送受信両方で行うのです。テキスト送受信と比較したときの速度面でのアドバンテージはほとんどありません。宿命ともいうべき仕組み上の限界です。フォールバックとして、バイナリ送受信もできるということに一定の価値はあるとは思いますけどね。使えるようになりました。以降がシェアの大半を占めるようになったとき(何年後?)、本プラグインはその役割を終えるでしょう。ご覧いただけたら幸いです。できない英語を無理強いしているためツッコミどころ満載かとは思いますが、その際はそっとご指摘いただきたく存じます。Plugin)とある理由によりPhoneGapでWebSocketが使えるプラグインを作りました。こちらに置いてあります。Android専用です。Safariでは4.2からWebSocketをサポートしているので、そちらで十分なんじゃないでしょうか。BrowserがなぜかWebSocketに未対応なんですよね。WebSocketを使うAndroid専用アプリを作る場合、JavaでWebSocketをやる方法は検索すると割と豊富に出てくるわけですが、今一度、PhoneGapでAndroidアプリを作ってみたかったんです!ただそんだけ!(本当に単純な理由だな...)そしてPhoneGapでWebSocketを使ったアプリ作るなら、そのプラグインも作ってみようかと思ったわけです。プラグインの中身ですが、W3CのWebSocketの使用感に極力合わせることを目標にしました。サンプルコードはこんな感じです。1000};WebSocket.orgのサイトでechoサーバが公開されているので、そちらに繋いで「hello」とメッセージを送り、サーバからエコーされてきたメッセージ(helloのはず)をコンソールに出力して終わりです。これをエミュレータで動かすとうまくいかないので、以下のような「おまじない」をActivityのonCreateに追加します。実機では必要ないです。自分の2012年を振り返るほぼ半年ぶりのブログ更新...ダメだ...続かない。(笑)2012年もいよいよ大晦日。区切りとして今年1年を総括してみたいと思います。今年、自分にとって最大の出来事は、会社を辞めてフリーになったことです。今回はこのことをメインに書いてみたいと思います。3月この期間はまだ会社員だったということになりますね。前の年の年末で辞める計画もあったのですが、仕事の区切りがつかなくて3月まで延びることに。立つ鳥跡を濁さずの精神と、一刻も早く会社を辞めたい気持ちがせめぎあっていました。このとき既に、退社後は再就職はしないことは決めていて、かつ仕事をしばらく休んで勉強しようと思っていました。4月3月の末になって、それまでお世話になっていたある会社から仕事のオファーが。会社を辞めたら休むつもりだったので正直なところ迷いましたが、夏頃までの短期案件だったというのと、今後の関係も考えて引き受けました。ところがどっこい、先方の諸々の都合により4月いっぱいで、しゅ〜りょ〜...おっほっほっほ。休むつもりだったんで別に良いんですけど、夏頃まで続くんじゃなかったんですか。フリーの洗礼?を浴びることに。6月さて、あっけなく仕事が終わってしまったので、当初の予定どおり無職・無収入生活へ。以前からコツコツと勉強はしていたんですが、やりたかったのはWebの勉強。会社員時代はとにかく仕事に空白期間を作らないことを最優先にして、あまり興味がない仕事でも我慢してやってきました。その結果、私の場合は.NETのシステム制御にスキルが偏ってきて、いつの間にか.NET技術者の烙印?を押されていたのです。フリーになりたかった理由のひとつとして、.NETから解放されたかったというのもあります。昔あったブラウザ戦争とか、Officeの値段の高さとか、そして非オープンな技術によってベンダロックインされてしまう危うさとか、諸々の理由で以前からMicrosoftにあまり好印象を持っていないんです。(中立的な目で見た場合、VisualStudioの完成度は群を抜いていると思いますし、C#はJavaよりも好きな言語です。)それにMicrosoftでWebといえばASP.NETですが、スキル的にはWebというより.NETという括りにされることが多く、案件で先方が求めているWebスキルとして見てもらえないという印象があります。Javaでしょ、的な)ま、かといって今からJavaに肩入れする気もなかったので、Webの勉強はHTML5を意識してJavaScriptに集約されていきました。以前からの積み上げ分とこの2ヶ月間の勉強で、JavaScriptはそこそこ出来るようになったと思います。7月いつまでも無職・無収入生活を続けていても良くないと思ったので、ここいらで仕事探しに。紆余曲折あり、最終的にAndroidアプリの開発案件に参画させてもらいました。技術者が見つからず困っていたらしく、リスク承知でAndroid未経験な自分を雇ってくれたみたいです。面接ではPhoneGap使って5日で作ったアプリを見せました。反応は、悪かったです。(笑)Androidのネイティブアプリ開発だったので言語はJava。PhoneGapでは門前払いされても文句は言えません。それからは猛烈な勢いでAndroidの勉強。JavaScriptのことはひとまず忘れる。(笑)やってみた印象としては、UI作るのが相当面倒なのと、それに付随して画面を動的に書き換えたりするのが難しかったです。端末毎に異なる解像度も悩みの種。「iPhoneアプリみたいなUI作れ」って言われましたが、Androidでは難しすぎます。iOSなら標準で備わっているコントロール使えば済む話でも、Androidの場合は自力で線描いたりしないといけませんから。これは本当に無茶な要求だと思いました。その結果、参画1ヶ月でさようなら。(笑)開発していたアプリは8月リリース予定でしたが、2012年大晦日の現在でもリリースされた様子はありません。仕事は終わってしまったのですが、せっかくAndroid開発に携わったので、以前に作ったPhoneGapアプリを全部Javaで書き直すことにしました。言い訳みたいですけど、あくまで習作ですので。今思えば、Androidアプリ開発はWebの範疇なんだろうかと。FormとかSwingの開発経験が生きた気がします。12月8月はお盆ということもあって仕事が見つからなかったのですが、9月に入って新たな仕事が見つかりました。ASP.NET...(笑)あんだけ好きじゃねーとか言っていながら、です。別の機会に書こうと思いますが、この業界は経験が何よりものをいう世界なので、未経験または経験少の仕事はやらせてもらえないのです。7月にやったAndroid案件は完全に例外でしょう。実はASP.NETの経験もそんなに多くはなかったのですが、前述のとおりASP.NETはWebというより.NETの括りで捉えられるため、会社員時代に身につけた.NETのスキルと「個人的にWebを勉強しています」というハッタリだけで参画できました。(ハッタリだけじゃなくてちゃんと成果を上げましたよ。)そしてその仕事も11月に契約満了となりました。したらどういうわけか同じ先方から別案件のオファーをいただき、仕事は変わりましたが今も同じところでお世話になっています。今の新しい仕事はJavaのWebで、JavaScriptも使いまくり。JavaScriptは勉強してきたことが役に立ちました。この仕事のオファーは全くの想定外でした。希望してもなかなかやらせてもらえないWebの仕事なのに、一時の妥協が良い方向に転がりました。これはゴールではないですし、来年以降もより希望の仕事に巡り会えるよう勉強は続けていくつもりです。徒然なるままに書いてきたのですが、長過ぎなのでこのへんで終わりにしようと思います。公開してたんですが、ドキュメントを書くのにだいぶ時間がかかってしまって、不完全ながらも一応かたちになったので今回ご紹介させていただきます。モジュラープログラミングを可能にする軽量モジュールローダーです。ソースを機能ごとに分割してモジュール化し、それらを任意のタイミングでロードすることができます。ライクなフォーマットを採用しています。コーディング量が結構なボリュームになりますよね。スペックが貧弱なスマートフォンなんかで特に。一括でロードしてくると、今度は起動がやたら遅いアプリになってしまったり。ようなモジュールローダーは既にいくつか公開されています。名前しか知らず、それを使うと何がうれしいのか良く分かっていませんでした。いう実装サンプルがまだないので、まずはそれを準備せねば。あとは書きかけになっているドキュメントかな。興味を持たれた奇特な方がいましたら使ってみてください。