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 さんだよ!猿があなたを見つめています。

Windows AzureでCentOS

今日、「クラウド電話API!Twilio API 勉強会 Vol.10 @東京」のイベントでちょこっとお手伝いと宣伝+自慢に行ってきたのですが、Microsoftさんのご好意によりWindows Azureのお試しアカウントを頂きました。IISの運用経験がほとんどないので、いったいどうしようかと思っていたのですが、お話を伺うと別に普通にCentOSも動くということなのでさっそく動かしてみました。Azureのイベントということで、なんか萌えキャラとかばんばん見せられたらうんざりと思っていたら、そんなの一瞬たりとも出てこなかったので大変好感を持ちました。まあAzure自体がまだ英語のままの部分もあったりして日本ローカルの部分は少ないっぽいんですが、そのお陰でセットアップまで一度も幼稚なアニメキャラとか見ないで済みました。すばらしいです。

Azure上の仮想サーバの作成自体はめちゃめちゃに簡単です。事前準備としてSSHでのログインに鍵認証を利用したかったので事前にopensslでcerまたはpam形式の鍵ペアを作成しておくといいでしょう。

$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout private.key -out cert.pem
$ chmod 600 private.key
$ openssl  x509 -outform der -in cert.pem -out cert.cer

ダッシュボードで仮想マシンを作成します。下の方に新規追加ボタンがあるので「コンピューティング」→「仮想マシン」→「ギャラリーから」を選択すると「OpenLogic」としてCentOSが表示されます。

azure1

OpenLogicというのはCentOSのサポートなどを提供する会社だそうです。こいつを選択して、上で作成したキーの公開鍵の方を登録すれば準備完了です。しばらく待てばサーバが起動するので(デフォルトでSSHのポートが開いています)、早速ログインしてみましょう。サーバはデフォルトで○○.cloudapp.netという名前で公開されるようです。好きな名前をつけてください。最初のユーザーアカウントもここで決めることが出来ます。

$ ssh -i private.key your_name@○○.cloudapp.net

これでいつものCentOSにログインできます。特にサービスは起動していません。また外部からの接続もSSHのポートしか開放されていないので、このままでは何も出来ません。iptablesが起動しているのですが、Azureの環境自体でインバウンドのアクセスはコントロールできるので、細かい制御をしない場合はiptablesを落としてしまってもまあ大丈夫です。

が。困ったことにビルド関連のツールが一切入っていません。そこでyumでインストールしようと

$ sudo yum groupinstall 'Development Tools'

を実行してみたのですが、kernel-headerのバージョンがどうこうといわれてエラーになってしまいます。というのも、デフォルトでyumはkernelを除外するようになっており、その設定を変更しないといけないからです。/etc/yum.confには

exclude=kernel*

としっかり記述されているので、これを

#exclude=kernel*

に書き換えるとインストールできるようになります。なぜ除外されていたのかわかりませんが、開発関連のツールのインストールが終われば元に戻しておいてもいいでしょう。

ここまで来たら、あとはいつもの作業です。nginxやrbenv、bundlerやrailsをインストールするともうほとんど完成です。めでたしめでたし。

おっと、1つ忘れてはいけないことが。Azure上の仮想マシンの一覧から作成した仮想マシンを選択し、その管理画面からエンドポイントを選択します。デフォルトではSSHしか開放されていないので、ここにHTTPを追加してみます。

endpoint

しばらく待つと設定が完了し、リモートから80番ポートへのアクセスを受け付けるようになります。

これで準備が完了しました。あとはAzureのストレージを利用するgemなんかを試してみると面白いかもしれません。

集合知と衆愚とKindle

Amazonのひどいレビューなら、それを集めてシリーズ本にするくらいならさほど苦労も要らないほどにたくさんあるのだけれど、あれが集合知であるかというと、おそらくそうではない。もちろん言葉の意味なんて使い方次第だから、そうであっても構いはしないのだけれど、ここは集合知の格好の入門書「みんなの意見は案外正しい」の受け売りで、そうではないということにしてしまいたい。というのも、「集団的知性」のような用語と同じようなものとして扱う場合、まさしくAmazonのレビューの状況だって集合知になってしまうので、この文章にとっては都合が悪いからだ。それに石原慎太郎もナチも群衆の英知の結果だと思い知らされるのはなんとも辛いではないか。

みんなの意見は案外正しい」の中で、著者のジェームズ・スロウィッキーはこの集合知を元ネタ本「狂気とバブル」のテーマ「集団的狂気」と対比される概念として定義しているようだ。いろいろな逸話をかき集めると、人間は集団になるととんでもない英知を発揮することもあれば、狂気としか思えないような愚行を盛大に繰り広げることもある。では一体何が人間の集団から英知を引き出し、逆に何が愚行に踏み切らせてしまうのか。

これは別に新しい問題というわけではない。むしろ古来からいろいろな賢い人たちが頭を悩ませてきたことだ。世の腐敗を前に、ある者は少数による指導体制を理想とし、また別の者は真の平等こそが英知を引き出すと夢想する。知的傲慢さや無知ゆえに「少数のエリートが愚かな民衆を指導する体制」に魅了されて道を踏み外したエリートなんて、あちこちで聞いたのでもはや代表的な例さえ思いつかないくらいありふれた話ではないか。

みんな大好きWikipediaにも、この「何が集合知と衆愚を分けるのか」という点についての簡潔な要約がある。Amazonのレビューをこの条件に当てはめてみると:

意見の多様性

これはどうだろう。レビューを書くのは少なくともある程度は読み書き出来る人に限られるし、Amazonにアカウントを作ったりフォームに文字を入力して登録するなど一定以上のIT関連のリテラシーが求められるが、それでも意見の多様性は十分に担保出来るかもしれない。しかし、だいたいレビューなんぞ書くような御仁であるからして、他人に教えを垂れようとふんぞり返った威張りん坊やお節介さん、文句を叫び散らしたくて溜まらない欲求不満型の人、ものすごく感動したので思わずその感動を世界中と共有したくなった感激屋さんばっかりである可能性もある。その一方で、資格や厳しい選抜を通ってきた人にしか出来ないことでは決してないので、能力のバラつきという点では多様ではある。この点は保留したい。

独立性

一方、こちらについてはうまく条件をみたすことが出来ないことがはっきりしている。既に評価している人がいるかもしれず、先に投稿された内容に影響されてしまうかもしれない。既に評価の高い他のレビューに意見を寄せてしまったり、思い切って逆張りして大勢の反感を買うことで注目を集めようとするかもしれない。大手小町やその他の相談サイトが集合知とならないのは、このような他人の意見のバイアスがかかってしまうことで個々の意見の独立性が損なわれてしまうことが大きい。

分散化

まあ、これは問題ないだろう。自宅で、職場で、ファミレスの片隅で、みんなそれぞれレビューを書いている。

集約

フリースタイルのレビューなので、そこから集合知的な総意となるような意見に集約することは難しい。かろうじて星の数を平均したり、ピアソン係数やら何やらでも使って調整するのが関の山だろう。例えば「札幌市で初雪が観測される日」や「東京の梅雨明け」といった明確な「正解」がある問いに対する答えを集約するのはそれほど難しくはないが、レビューというのはどれが正解というものがあるわけではないので、もう少し漠然としたものになるのは致し方ない。内容の傾向の分析手法はいろいろあるだろうから全く不可能ではないのだけれど、これといった手法が確立しているわけではない。

という具合に、4つしか無いチェック項目の内の1つしかちゃんとクリアしていないのだから、あんまりうまくいきそうもない。また、Wikipediaには記載がなかったが、この他にも集合知となるためには、参加者は正しい答えを出すことについて適切に動機づけされている必要がある。この点についても考慮すると、まず正しいレビューとは何かが不明瞭である上に、レビューする動機もそれと必ずしも関係があるわけではないのだから、Amazonのレビューを集合知と呼ぶのは問題があると断言しても構わないだろう。まるで古の哲学者のいうように、問いがちゃんとしてないから答える方はやってらんない、というわけだ。

ただ、Amazonのレビューよりも面白いことを測定できる装置が当のAmazonから出ているのは興味深い。Kindleは複数のデバイスやアプリの間でどこまで読んだのかを共有して読書をしやすくしてくれる機能があるので、このデータはすなわち人がどこら辺で読書を中断しているのかがわかる。またマーカーを引いたり読み返した箇所、読書のスピードが変化した箇所など記録しておけば、このような行動の蓄積こそが、まさに集合知的なレビューとなり得るのではないだろうか。ウェブやアプリの開発現場ではおなじみのユーザーの行動分析というやつだが、未来の作家や出版社はこの手のデータを元に作品の評価を分析することになるはずだ。Amazonで扱っている音楽だってそうなるのかもしれない。その結果、これらのメディアがどのようなものに姿を変えていくのかはわからないが、少なくともAmazonのレビュー欄よりは興味深いことになるだろう。

2013年のオークランド・アスレティックス

昨年の優勝にも関わらず、うちのお兄ちゃんも大好きな日本スポーツ企画出版社の雑誌「スラッガー」でも今期の予想は3位だったオークランド・アスレティックス。テキサス・レンジャーズの大幅な失速もあって、とうとうアメリカンリーグの西地区二連覇を達成してしまいましたよ。

今日までにマジックは残り1だったので、優勝は試合途中にダイアモンドヴィジョンに放映されていたようにカンザスシティーがサヨナラ満塁ホームランでテキサスに勝った時点で決まってはいたのですが、最後にスクリブナーが勝ってもあんまりうれしくなさそうなのは自身がリリーフで2失点してしまっていたからですね。ご愛嬌です。

でも、感動がない試合だったわけではありません。今年だけで二度もウェーバー公示されたのを跳ね返してメジャーに昇格したダリック・バートンが優勝を決めた試合でホームランを放っています。二度も公示されてまだ元のチームにいるということは、二度ともどこのチームも獲得の意志を示さなかったという厳然たる事実をあらわしているわけですが、そんな選手が最後に這い上がって8月は一塁手のレギュラーとして活躍しているというのは素晴らしいと思います。左打ちのバートンは本来右投手用の一塁手なのですが、左投手用の一塁手として今年デビューして好成績を残しているフライマンが打撃練習中に怪我をしてからは不動のレギュラー(主に9番バッター)として出場し、打率3割と結果を残しています。この選手、一塁の守備には定評がある、というかもはや名手という評価を得ているのですが、実は元キャッチャーで、打力を評価されてオークランドに移籍してから内野手に転向しています。まるでハッテバーグの再来ですが、打撃もまたハッテバーグと同じような評価を受けていた選手でした。しかし、2007年のデビュー時には鮮烈な印象を残したものの、その後は友人宅のプールに飛び込んで頭を打って重傷を負ったり、2010年の再デビューで273/393/405という「ちょっと長打力は見落としするけどフランチャイズの見本となる高い出塁率」にリーグ最高の110四球でレギュラー確定といわれたのも束の間、相手投手に対策されて以降は怪我もありズルズルと衰退していったその姿は多くのファンをがっかりさせました。しかしAAAサクラメントでしっかり実績を残して這い上がってきたのは評価に値します。AAAでは三塁手としても出場していたのですが、どのポジションでもいいので来期もなんとか残留してもらいたいものです。

バートンと同じくキャッチャーから転向した内野手として、今年はジョシュ・ドナルドソンのブレークした年として語り継がれることになるでしょう。当時のレギュラー捕手だったカート鈴木の牙城を崩すことが出来なかったアンソニー・レッカー(デビュー戦で20失点)やランドン・パウエルといったキャッチャーの一人として選手寿命を終えるかに思われたドナルドソンでしたが、昨年の後半から一気に打力が開花し、おまけに守備力も大変高いことが判明して、リーグでもトップクラスの三塁手となりました。なんといっても「同一ポジションで置換可能な平均的選手と比較してどれだけ勝利を上積みしたか」を示す指標WARでは7を越えているわけですから、ミゲル・カブレラエヴァン・ロンゴリアといったビッグネームに堂々と肩を並べる成績を叩き出していることになります。特に左投手を相手にした場合はミゲル・カブレラの少し下、ようするにまともな人間なら最高峰といえる成績なのですから文句のつけようがありません。今では完全にフランチャイズの顔になった感があります。父親が5歳で刑務所に収監された厳しい環境の中、子供時代はひどいいじめに遭ってキリスト教系の学校に転校して難を逃れるなど苦労してきたドナルドソンですが、2013年になって実父が初めて彼のプレーを観戦し、その目の前で四球2つに二塁打と三点本塁打と大活躍しました。ちなみに、ドナルドソンがオークランドにトレードされたとき、一緒にシカゴ・カブズから移籍した選手たちの中には阪神でプレーしているマット・マートンもいました。移籍後すぐの試合で四番で出場していたのは驚きでした。

それと、野手で特筆すべきはエリック・ソガードでしょう。どうやらやまもといちろうから放出だろとけなされていたようですが、それも今は昔(あ、このトレードは大成功でしたよ、膝が死んでるスウィーニーと毎年2ヶ月は休むし今年は上原の引き立て役になったベイリーをレディックと交換しましたからね)、昨年ブレークしたセスペデス、レディック、モスらがことごとく不振に苦しむ中、右投手用の二塁手としてその地位を安定させたのはファンにとっては大きな喜びでした。MLBでは珍しい眼鏡でプレーすることから、#nerdpowerのハッシュタグまで用意される人気ぶりです。

ヤンキーズ戦で目の覚めるようなロングリリーフを見せたジェシー・チャベスがナポレオン・ダイナマイトのセリフを決めるのが素晴らしいです。

今年のチームはキャッチャー受難の年でした。開幕戦のキャッチャーだったジョン・ジェイソは試合中に二度もマスク越しとはいえファールチップが直撃した影響で脳しんとうとその後遺症の治療のため最後の一ヶ月間をリハビリに費やす状況、左投手に極端に弱い(右が相手ならバリー・ボンズになる)ジェイソを補強する右打ちの捕手デレク・ノリスは今年から加入したベテラン外野手クリス・ヤングにベテラン選手と間違えられた老け顔をマスクで隠して活躍していましたがホームベース上のクロスプレーでつま先を骨折してしまいました。しかし、カート鈴木が「このまま安定した成績を残し続けたら高年俸になって雇い続けられなくなる」という危機感を募らせていたチームは捕手の層を分厚くしていたため、この状況が28歳のほとんどメジャーで実績のない左打ちの捕手スティーヴン・ヴォートが昇格して4本の本塁打を放つきっかけとなりました。そして、デレク・ノリスの怪我の後には、高年俸になることが予測されたので放出されたカート鈴木が、ええと、そのう、まあ、ぶっちゃけ年々成績が下降して移籍先でくすぶっていたのを再度トレードで獲得して、総じて守備に不安のある捕手陣がおおいに補強されることになったのでした。オークランドの低迷期を孤軍奮闘で支えていたカート鈴木の帰還はファンに熱烈に歓迎されました。おかえりキヨシくん、おっさんはとってもうれしいよ。

昨年も派手な補強は実現しなかったのですが、今年もトレードデッドラインまでにルーキーのグランド・グリーンを放出してアルベルト・カヤスポをエンジェルズから獲得しただけにとどまりました。これでソガード、ラウリーと共に複数ポジションをこなせるミドルインフィールダーが3人揃ったので、誰が故障してもカバー出来る体制が強化されました。個人的には野球選手に人格を求めることはしないので、まあどうでもいいことなのですが、カヤスポは2007年にDVで逮捕されています。その後告訴は取り下げられ、夫婦は子供と一緒にまだ暮らしているそうですが、かつてエンジェルズに在籍したチャック・フィンリーは妻から受けた激しい暴力に苦しみ離婚しているわけで、カヤスポも少しは彼を見習うといいと思います。

とはいえ、オークランドを支えているのは、その強力な投手陣です。毎年安定してあまりに強力なので、まるで所与の存在のように思われてしまいがちですが、当然ながらそんなわけはありません。まあ、もちろん悪いケースもあるのでまずはそちらからあげていきます。長期契約した途端に怪我ばかりしているブレット・アンダーソンは相変わらず今年も怪我のため活躍できず、シーズン終盤になって大差のついた試合で失点しまくって、アウトは誰にも打てないスライラーでポンポンと三つ続けて三振で取るというプレシーズンマッチ仕様の投球を続けてシーズンを中抜きし、今からポストシーズンに備えるという贅沢ぶりです。実は彼は高校時代にはその投球よりも打撃力で有名で、同年代にハンク・コンガートラヴィス・スナイダーがいる中で堂々の打撃三冠王だったらしいので、ナショナルリーグへの移籍も真剣に検討した方がいいのかもしれません。その他、薬物疑惑のジョーダン・ノルベルトが早々に契約を切られ、昨年の活躍で慢心したかスプリングトレーニングで散々な投球を披露したオーストラリアの投手トラヴィス・ブラックリーも契約を解除されました。そして何より、昨年産まれたお子さんが産後24時間以内に急死するという悲劇に見舞われた右の変則投法のパット・ネシェックが今年は途中まで踏ん張っていたものの後半にひどい内容の投球が続き、おそらく来年の契約はないと予想されています。残念なことです。

それ以外は、リーグ最高レベルの投手陣としか言いようがない充実したラインナップでした。先発は昨年PEDの禊ぎで50試合出場停止処分を済ませ40歳にして球速が上がったバートロ・コローンを筆頭に、ジャロッド・パーカーA・J・グリフィンダン・ストレイリートミー・ミローンという陣容でしたが、コントロールが生命線のミローンのコントロールが安定せず、ここには新人のソニー・グレイが入ることになりました。グレイはオークランドにドラフト1位指名された当時は最もMLBに近い新人投手として注目を集めていましたが、小柄な右投手として制球力を向上させるよう要求された影響で本来のピッチングが出来ず、なかなか結果が残せなかったことから以前のいい加減な制球で球威で押すタイプに変更したところ成功してMLBデビューを果たしました。そういえば同じようなタイプで同じような問題に苦しんでいたブラッド・ピーコックも今年ようやく移籍先のヒューストンで結果を出すことが出来ましたね。彼らのようなスタイルは悪い時にはどうしようもなくなるので早い回でノックアウトされることもあるのですが、グレイは今のところそれなりの結果を残しています。早く強力なシンカーでも覚えてティム・ハドソンのようになってもらいたいものです。

今年のコローンの成績はかつてサイヤング賞を獲得した年よりも上かもしれません。右打者のインコース、左打者のアウトコースに向かって異常に曲がるツーシームと終盤になると95マイル(152km)を越える速球、投球の7割以上がストライクという制球力を武器に神懸かり的な成績を残しています。ただし、昨年のPED問題があるので二度目のサイヤング賞は考えにくいでしょう。一方、ジャロッド・パーカーは5月以来ずっと負け知らずの投球を続け、先週ついに病気のためローテーションを一度飛ばした後の登板でようやく負け投手になったくらいの好投が続きました。往年の槙原を彷彿とさせるいいピッチャーなので今後が楽しみです。

球場の移転問題がずっと議論されているオークランドですが、先発投手を眺めるとちゃっかり現在の球場の利点を活かすようにフライボールピッチャーを並べているのが面白いですね。A・J・グリフィンに至ってはリーグ最多の被本塁打というおまけつきです。広くてフェンスが高くておまけにファールグラウンドが広大なオークランドの球場は老朽化のため今年も何度も下水道のトラブルに見舞われていますが、若手の先発投手たちにとってはありがたい存在のようです。この強力な先発陣を支えるのがこれまたリーグ最高峰のリリーフ陣です。ロングマンには先述のジェシー・チャベスがいます。AAAでは先発なので、延長18回のとんでもない試合で6イニングを投げることも平気です。先発が手薄な他球団には喉から手が出るほど欲しい人材なのではないでしょうか。ジェリー・ブレヴィンズは投げ方を見ると左のワンポイントに見えますが実はそれなりに長いイニングをこなすことも出来て、昨年から安定感のある投球を続けており、イチローを極端に苦手にしている以外は頼れる左投手です。先発投手と彼らロングマンが試合を作ればもうしめたもので、後はいつものメンツが手ぐすねを引いて待ち構えています。左のショーン・ドゥーリトルは152kmから155kmくらいの真っ直ぐを投げ込む左投手です。以前、王監督がインタビューで左の速いピッチャーは本当に打てないと感慨深く(おそらく江夏を思い浮かべて)語っているのを見たことがありますが、ドゥーリトルの真っ直ぐもまた本当に打たれません。そして何より、2年前まで彼は将来を嘱望された強打の一塁手だったのが感慨深いです(大学時代は投手と一塁手の二足のわらじでした)。管理のしっかりしているメジャーリーグですから、オリックスの嘉瀬のように酷使されて肩を壊してしまうこともなく活躍してくれることを祈ります。ドゥーリトルと同じく中継ぎのエース格なのが2012年のオールスターに出場したライアン・クックです。こちらも150kmを越えるストレートを投げますが、ドゥーリトルがフォーシームで浮き上がってくるような直球なのに対して、クックの場合は打者の近くでストンと落ちるようなツーシームが主体です。最近あまり調子が良くないのが気がかりです。そして9回にメタリカの昔のヒット曲「One」をバックに登場するのが、ノームのキャラクターとマウンドで怒り狂ったように叫び散らすスタイルで人気のオーストラリア人、グラント・バルフォアです。外野席のファンはイニングの前から立ち上がり頭を前後に振り続けて怒りの表現に加担します。実はバルフォアには素直な回転のフォーシームとカーブ、スライダー、チェンジアップというオーソドックスな球種しかなく、直球もそれほど速いというわけでもない(せいぜい150kmくらい)のですが、制球がいいときはかなり結果を残すので、なんと今年は昨年から続いた連続機会セーブでチームの永久欠番デニス・エカーズリーが持つ球団記録を破ってしまいました。

オークランドの戦術は、この強力な投手陣を最大限に活用するものです。上原浩治が何を言ったとしても、先発投手はチームの最高の投手です。後ろのピッチャーは、どんなにいい投手であっても、やはり「短いイニングであればいいパフォーマンスを発揮する投手」でしかありません。だって、そんなにいい投手であれば、先発して試合の大半のイニングを任せるのが理にかなっているわけですから。また、終盤になればなるほど、リリーフも優秀な投手が出てくることになります。そこで、先発投手を早く降板させることが有利に試合を進める鍵になるわけですが、オークランドの場合は、とにかく相手投手に球数を投げさせることでこれを実現しています。特にマックス・シャーザーのようにひたすら豪腕でねじ伏せる投手が相手なら、彼はMLBで20勝以上するのですから当然なかなか打てないわけですが、可能な限りボールを見極めてたくさん球数を放らせることにより、5回くらいで降板せざるを得ない状況を作り出す作戦で対抗するのです。そうすることで、シャーザーと比較すれば豪雨と春雨くらいの差があるリリーフ投手たちに襲いかかって勝利をもぎ取ることが出来るわけです。こんな単純な作戦がどこまで通じるのかという話もありますが、意外と通じちゃってるんですよね。ダルヴィッシュが相手のときなど、三振なんかどうでもいいから、最後に勝てばそれでよしという感じの割り切った攻め方が非常に印象的でした。まるで昔のオーストラリア代表チームが松坂を打ち崩した試合みたいですね。今年の甲子園では花巻東の選手がわざとファールを打ち続けて相手投手を疲れさせるバッティングを披露し賛否両論を呼びましたが、もちろんメジャーリーグでそんなことをしても150kmを越えるストレートを相手にそんなことをするのは無理です。実際、アスレティックスも別にそんなことをしているわけではありません。単純にタイミングの合わない投球には手を出さなかったり早いカウントから狙ったボール以外に手を出さないようにしながら機会を伺っているだけなので、球数を投げさせるという戦術を非難するような声は特にありません。

さて、これからいよいよポストシーズン、まずはデヴィジョンシリーズが始まるわけですが、去年はここでデトロイトに最終戦までもつれて敗退しました。デトロイトの絶対的なエース、ヴァーランダーが強力な投球内容で立ち塞がり、オークランド・アスレティックスの「疲れた先発を降板させてリリーフに襲いかかる」いつもの戦法が通じないように、いつもは100球程度で降板するのになんと120球も投げて完投するという荒技で第5戦をもぎ取られてしまいました。デトロイトの3勝2敗の内の2つはヴァーランダーだったわけで、彼の存在が明暗を分けたといっても過言ではありません。今年もデトロイトは強力な先発投手陣を揃えています。今日までにボストン・レッドソックスとオークランドの2チームがポストシーズンに進出を決めていますが、残り2枠の1つは間違いなくデトロイトです。あとはこの3チームの順位次第で対戦相手が決まります。ワイルドカードで進出してくるチームはまだまだ予想できませんが、出来ればそちらと対戦してもらいたいような気がします。まあ、短期決戦なので何が吉と出るかは全くの運ですから、何が有利で何が不利なのかもわかりませんけれど。

まめじの七五三

011308310015033

011308310015018

011308310015048

011308310015032

011308310015017

011308310015007

011308310015003

Titanium夏期講習

8/17、クリーク&リバー社様主催、Titaniumユーザー会による初心者向け講習を実施しました。当日はTi関連イベントなのに珍しく晴天に恵まれたので、いつも雨を降らせている犯人はぼくや@ryugoo_@h5y1m141ではないことがほぼ確実になりました。

大勢の方にご参加頂きましたが、告知から会場の準備や誘導など滞り無く運用して頂けましたので、C&R社様には改めて御礼申し上げます。

午前中はぼくがずっとしゃべりっぱなしで、Titaniumについての説明と今後の展望などについてのおおまかな解説をしました。こちらに公開していますのでご笑覧下さい。

20130817 Titanium勉強会(午前) from Toshiro Yagi

20130817 Titanium勉強会(午前2) from Toshiro Yagi

午後からは3つのクラスに分かれて実習となりました。少々暴走気味な解説もあったかもしれませんが、JavaScriptへの個人的な偏愛がみなさまに少しでも伝染すれば伝わればうれしい限りです。ソースコードはこちらから入手できますので、ご活用ください。

それから、Appceleratorが提供している教育用の資料の閲覧方法はこちらです。TCDの方はこちらで作業を進めています(さぼりすぎですね、がんばります)。

それにしても、お盆休みの期間にも関わらず大勢の方にご参加頂き、大変ありがとうございました。限られた時間の中でどれだけ必要な情報を届けることができたのか、不安なところはありますが、皆様の熱意に少しでも応えられるようにこれからも機会を見つけてこのような講習を続けていきたいと思います。

次回からは、ダウンロードが必要なソフトウェアは事前にUSBメモリか何かに用意してさっと進められるようにしたいですね。今回の反省点として次に活かしたいです。

2013年のTiIconicFont + Alloy

ウェブ上の情報が少し古くなっていたようでいくつか質問があったので、現時点で動作するサンプルをまとめておきます。あすとろなんだっけかさんの『Titanium mobile “early” Advent Calendar 2012』の18日目、@hoyo1111 さんのエントリー『【18日目】AlloyでもTiIconicFontを使いたい』を参考にしています。というかこれをほぼまるまる使っています。書き方を入門者に対応しただけですね。

TiIconicFontはサイレントヒルのひげ怪人Titaniumユーザー会ではおなじみのk0sukeyさんが公開してくれている、Font AwesomeやLigature Symbols、SS PikaのようなウェブフォントをTitaniumのLabelでも利用できるようにするモジュールです。インストール方法は次の通りです:

(1)ダウンロード

Alloyのプロジェクトはもう作成しましたね?まだなら、先に作成しておいてください。

TiIconicFontはGithubのページからZIP形式でダウンロードしたりgitでcloneして入手します。

(2)展開

Zipで落とした人はTiIconicFont-masterとかいう名前のディレクトリの下のResources/lib、cloneした人はTiIconicFont/Resouces/libを自分のAlloyのプロジェクトのapp/assets/以下にコピーします。app/assets/libディレクトリが作成されていることを確認しましょう。

(3)フォントデータの用意

TiIconicFontはそれだけでは動作しません。フォントのデータ(ttf)ファイルが必要です。例えばFont Awesomeならプロジェクトのウェブサイトからダウンロードして、展開したディレクトリのfont/fontawesome-webfont.ttfをapp/assets/fonts/以下にコピーします。app/assets/fontsディレクトリは存在しないので作成してからコピーしましょう。

app/assets以下にこれらが用意されればOKです。

app/assets/
├── fonts
│   └── fontawesome-webfont.ttf
└── lib
    ├── FontAwesome-deprecate.js
    ├── FontAwesome.js
    ├── IconicFont.js
    ├── LigatureSymbols-deprecate.js
    ├── LigatureSymbols.js
    └── ti.ss-pika.js

(4)iOS用の設定

iOSの場合は必要なファイルを生成するためにいったんビルドします。ビルドして作成されるbuild/iphone/Info.plistをプロジェクトディレクトリの直下にコピーして、コピーした方のファイルの最下部(/dictの上)に以下を追記します。Androidの場合は無視して地球の未来のことを考えます。

	<key>UIAppFonts</key>
        <array>
          <string>/fonts/fontawesome-webfont.ttf</string>
          <string>/fonts/LigatureSymbols.ttf</string>
          <string>/fonts/ss-pika.ttf</string>
        </array>

(5)動作試験用のViewを用意

app/views/index.xmlに下のような記述を用意します。

  <Label id="symbol" />

app/styles/index.tssにも適当な値を設定しておきましょうか。

"Label": {
  width: Ti.UI.SIZE,
  height: Ti.UI.SIZE,
  color: "Black"
}

(6)動作試験用のcontrollerを用意

app/controllers/index.jsに次のように記述します。

// Font Awesome
var fontawesome = require('lib/IconicFont').IconicFont({font: 'lib/FontAwesome'});
$.symbol.setFont({fontSize: 32, fontFamily: fontawesome.fontfamily()});
$.symbol.setText(fontawesome.icon('icon-thumbs-up'));

$.index.open();

Font Awesomeで利用できるアイコンの一覧はlib/FontAwesome.jsにあります。

(7)自慢

awesome_android

2013年前半のオークランド・アスレティックス

この数年ずっと一年か半年毎に書いている、自分とうちのお兄ちゃんが楽しむためだけのシリーズ。

昨年、映画『マネーボール』の公開とともに低かった前評判を覆してシーズン最後の試合で逆転するというマンガのような展開でアメリカンリーグ西地区優勝を果たしたオークランド・アスレティックスだったが、今年も前評判は低く、だいたいどのメディアでも3位くらいの予想でシーズンに入った。5チームしかいない地区の3位で、しかも残り2チームはあのやる気のないヒューストン・アストロズと能力のないシアトル・マリナーズなのだから、まったくもって侮辱的な予想である。しかし、昨年と比較すると、例によってそれほど大きな補強もなく、抜けたのが開幕投手経験豊かなショートクラブハウスのリーダーにして右の代打の切り札と、一言でいえばチームの要が全部と聞けばまあ誰だってあまりいい予想はしないだろう。相変わらずのオンボロ球場に巣食う、選手の年俸総額はMLB全体で下から3番目くらいの、好景気に湧くお隣のサンフランシスコをいびつな嫉妬の目で睨み続ける貧乏球団であるのはいつもの通り。

昨年オークランドが優勝した背景にある戦術はだいたいこんな感じだった。打者の成績には対戦相手となる投手の右、左により大きな偏りがあるケースが結構多い。実際、MLBのサイトでも対右、対左で成績を分けて閲覧することが出来るくらいだから、これ自体は別段新しい見方というわけではないのだが、オークランドは選手補強に際してこの点に目をつけた。成績をシーズンで平均するとたいしたことのないスコアになるため評価(と給料)が低く埋もれているが、実は相手投手が右/左投げのときだけは超一流の打者になるというタイプの打者を集め、1つのポジションにその手の打者2人を起用して使い分けることにしたのだ。出場試合数が少ないため個々人の給料はそれほど上がらないが、よく考えるとものすごい高給取りの打者が1人いる状態になるのでチームはとんでもなく強くなる。急いで補足するが、これ自体はプラトゥーン起用といって昔からよくあるやり方ではある。しかし、普通はレギュラーが決まらないポジションで仕方なく採用するのがこのシステムであり、シーズンを通じて複数のポジションでこれを徹底的に押し進めるようなケースはあまりなかった。

この戦法は2013年も継続しており、一塁、二塁、指名打者、捕手でこのシステムが採用されている(昨年と違って外野手は固定されるようになった)。また、象徴的だったのがシーズン前のトレードだった。外野手がダブついたワシントンが急遽マイク・モースの放出を決めた際、このヘラクレスのような体格の強打者モースを獲得する資金など持ち合わせていないはずのオークランドが全然関係ないのにしゃしゃり出て、ワシントンはモースをシアトルに送る代わりにオークランドの若手3人を獲得し(何人かは元々ワシントンからオークランドが獲得した選手だったりする)、シアトルはキャッチャーのジョン・ジェイソをオークランドにトレードしたのだ。実はジェイソは平均値で過小評価される典型のような打者で、左投手は全く打てないが右投手が相手の場合に限ってバリー・ボンズに変身する不思議な選手なのだ。オークランドのGMビリー・ビーンはもう何年もジェイソの獲得を熱望しており、とうとうワシントンの下手な選手補強という偶然のチャンスをものにすることが出来たというわけだ。ジェイソの他にも、極端に左投手に弱いが右投手が相手だとそれなりの成績を残す外野手セス・スミスや一塁手ブランドン・モスを出したり引っ込めたりしながら、例年通りの強力な投手陣に支えられ、いつの間にか今年も首位を走っている不思議の国のオークランド・アスレティックスなのであった。

そう、今年は前半からがっつり首位なのだ。2年前の自分に教えてあげたい。オークランドのファンであることは恥ずかしいことではないのだ、と。

2013年シーズン前の補強で最大のヒットは、なんといってもジェド・ラウリーの獲得だろう。ボストン・レッドソックスのドラフト1巡目という輝かしい経歴を持つ選手だが、骨折などの度重なる怪我や、ディープキスで感染することで知られる奇病、伝染性単核球症により数ヶ月プレー出来なくなるなどひどい目に遭い続けたため、遂にボストンを追われ今MLBでもっともマイナーリーグに近い弱小球団ヒューストン・アストロズでくすぶっていたところを、しつこい交渉の結果、対左投手用の一塁手クリス・カーターらとのトレードでオークランドが獲得した。正直、個人的にはマックス・スタッシという野球一家出身の若手キャッチャーも放出されてしまい残念なトレードではあったのだが、ラウリーの活躍は大方の予想をはるかに上回っている。ショートとしてはリーグでもトップクラスの打撃成績で、両打ちで相手投手の左右に関係なくコンスタントに結果を残す上に長打力もある。これまでの怪我や病気も、衝突による骨折など長引くものではないと判断して大型トレードに踏み切ったオークランドの大勝利だ。同じトレードでついでに獲得したピッチャーは春先にトミー・ジョン手術が決まり早々に脱落したが、もう誰も覚えていないだろう。

今月で非ウェーバーのトレードは締め切りだが、今のところ大きな成果は挙っていない。噂ではジェイク・ピーヴィーの獲得を狙っているというが、確かにオークランドの広い球場ではフライボールピッチャーのピーヴィーには有利だろうけれど、まあきっと資金の面で無理だろう。ネイト・フライマンがそれなりに頑張ってはいるが、右の強打者が欲しいところではある。

そうそう。エリック・ソガードがレギュラーとしての地位を固めつつあるのも喜ばしい。ファンが眼鏡のイラストとハッシュタグ「#nerdpower」を球場に掲げて応援することでも知られる、今時珍しい眼鏡の野球選手である。野球と勉強の両方でアリゾナ州立大学の奨学金を獲得し、決して恵まれた体格ではないのに活躍しているこの選手だが、マイナー時代には三振より四球が多い巧打者で、『マネーボール』でもおなじみのポール・デポデスタがサンディエゴ時代に獲得したことでも知られていた。シーズン当初は右投手専用の二塁手という扱いだったが、次第にプレー時間を伸ばしつつある。

一方、何年もずっと期待の若手だったマイケル・テイラーが、AAAでチーム歴代記録に並ぶ打撃成績を残すものの、つまりそれだけメジャーに昇格しても定着出来ずマイナーリーグに戻って来るという意味でもあるわけで、遂にチームのトップ・プロスペクトにも入らなくなってしまった。しかし、スタンフォード大出身でハンサムな青年でもあり、春先にはサンフランシスコのラジオ局のインターンをしていたくらいから、しゃべりも出来るのできっと引退しても仕事はあるだろう。

リーグの首位を走りながらオールスターにファン投票ではひとりも選ばれない上に監督推薦でも野手は一切選出されないというスーパー過小評価されたオークランドの2013年も、相変わらず見ていて飽きない。

追記:野球が好きならみんなチェックしているMiLBで西武ライオンズから移籍したままAAAに埋もれている中島裕之の動向も一応追いかけてはいるのだが、最近ではショートのラウリーが完全にレギュラーに収まっているので、使いどころがなくなった中島を左投手用の二塁手にするべく起用が続いているようだ。しかし278/341/374という数字を見れば長打力に欠ける以外は悪くはないのだけれど、同じポジションの若手グラント・グリーン(324/378/501)にははっきりと見劣りするので、先に昇格されるのも無理はない。そのグリーンでさえ上では全く打てずに降格になったのだから、まだまだ厳しいだろう。$6.5mの契約は来年まで残っているので、メンタルの強さに期待するしかない。チームは打てる右の内野手を渇望しているので、頑張ってほしい。少なくとも、打撃不振で降格の際のオレ様発言連発ですっかり不遇になったジャマール・ウィークスよりはるかに多くのチャンスがあるはずだ。

ImageAsResized更新

AndroidにもTiBlobの機能としてImageAsResizedが実装されたにも関わらず細々と利用されているImageAsResizedモジュールですが、Titanium側の仕様変更に追随していなかった部分を更新しておきました。2.0系に合わせて更新して以来の変更です。今回の変更でローカルファイルのリサイズが正常に動作するようになりました(これまでもTiBlobを渡せば動いていたんですが)。

特徴は、回転に対応していること、支点と距離を指定すると切り取りにも対応していること、元画像とプロポーションが違う大きさにリサイズしようとすると勝手に切り取られること(仕様です)。

// Resources以下のファイルは先頭に「/」があってもなくても大丈夫です。
// SDCARDの中のファイルはTi.Filesystem.externalStorageDirectoryでフルパスを渡します。
var androimage = require('org.selfkleptomaniac.ti.imageasresized');
var image_data = androimage.imageAsResized(width, height, "images/boy.jpg", 0);
var rotated_image_data = androimage.imageAsResized(width, height, "/images/boy.jpg", 90);
var sd_card_image = androimage.imageAsResized(width, height, Ti.Filesystem.externalStorageDirectory + "tmp.jpg", 0);

// ちなみにimage_view2は90度回転しています。
// そう、回転にも対応しているんです。
var image_view1 = Ti.UI.createImageView({image:image_data, top:20, canScale:true, width:width, height:height});
var image_view2 = Ti.UI.createImageView({image:rotated_image_data, top:20, width:height, height:width});
var image_view3 = Ti.UI.createImageView({image:sd_card_image, top:20, width:width, height:height});

wrap.add(image_view1);
wrap.add(image_view2);
wrap.add(image_view3);

結果はこんな感じ。

resized_mame

Google+の利用を停止されました

先ほどGoogleからこんなメールが届きました:

八木○○ さん、

Google のユーザー コンテンツおよび行動のポリシーに繰り返し違反したため、Google+ をご利用いただけなくなりました。

Google+ では、迷惑な宣伝・営利目的のコンテンツ、一方的または大量の勧誘などのスパムが含まれている投稿は禁止されています。攻撃的な投稿や同じような投稿の繰り返しも禁止されています。

Google+ に保持したいコンテンツがある場合、2 か月間は Google データエクスポートを使用してエクスポートすることができます。コンテンツはあなただけが閲覧できます。その期間を過ぎると、コンテンツは削除され、コピーを取得することはできなくなります。詳細

これは、有効な Google+ プロフィールを必要としない他の Google サービス(Gmail など)には影響しません。

よろしくお願いいたします。

Google+ チーム

というわけで、Google+が利用できなくなってしまいました。

_人人人人人人人人人人人人_
> Google+アカウント停止 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

でも、よく考えたら、もう何週間も前からGoogle+への投稿は禁止されており、そもそも投稿は出来ない状態だったんですよね。これがその証拠画像です。珍しいからとスクリーンショットを保存してTwitterに投稿していました。

Google+にログインするとこんな警告が

なので、投稿出来ない以上は違反をさらに繰り返すことなんて不可能なわけですから、上のメールはいったい何を問題としているのでしょう。見当もつきません。

そもそも投稿を禁止される以前だって、Google+には、Taberarelooを使ってはてブやTumblr、Deliciousなどと同時にブックマークを投稿するだけだったので、なぜ他のサービスは全て素通りでGoogle+だけこんな厳しい処分を受けることになるのか全くわかりません。セルゲイ・ブリンの悪口だって書いていません。うっかり子供の裸の写真でも載せたってわけでもないし。せめて具体的な違反事項のポインタでももらえるといいのですが、一方的に通告されるだけなので改善しようがないのが現状です。このエントリを読んでいるGoogleの方、ぼくの代わりにGoogle+の担当者に大きな声で「バーカ、バーカ!」とお伝えください。

あまりにワンパターンな投稿ばかりだ、というのが理由なら、まあそれもわからないでもないですが、人間ってそんなに毎回ユニークなことを発言するべき存在なんでしたっけ?

まあ、正直なところGoogle+なんて別になくても構わないサービスなのでこのままアカウントを復帰させるつもりもないのですが、Googleのような業者にアカウント削除の判断をされても困らないように今後他のサービスもリスクヘッジしておかないといけないことは改めて思い知りました。例えばGoogleアカウントが削除された場合、Google Appsで利用中のアカウントに影響があるといろんな業務が停止してしまいます。せめてメールだけでも自分で運用するメールサーバを用意しておくべきなのかな、でも面倒くさいな、などいろいろ悶々としてしまいます。まったく。このエントリをお読みになったGoogleの方、ぼくの代わりにGoogle+の担当者の頭をテニスラケットでいい音がするくらい強めに引っ叩いてやってください。

追記:

no-replyからのメールだったので返信しても無駄なのですが、どうせ誰もぼくの苦情なんか聞き届ける気はないだろうから、以下のように返信しておきました。

知るかボケ!だいたいG+なんか他サービスと同時にブックマークを
投稿するくらいしか使ってねえぞ。何がポリシー違反だ、どこが
問題なのかわからないのに改善なんか出来るかクソが。どうせこの
メールなんか誰も読まないだろうから言わせてもらうけどな、
こんな検閲好きなSNSはmixi以来だね。お前らなんかFacebookの敵でも
ない、ただのmixiの出来損ないだボケ。NSAのケツでもしゃぶってろ。

記念画像。

gr

A man who tried to opt out