T

ec2上のownCloudをgoofysで無限大に

メモ。

MacBook Proが最後に出てから1年以上経過しているが、また今年も新しいのは出ないようだ。そろそろみんなのSSDもいっぱいになっているのではないかと思う。自宅のマシンにバックアップを保存してもいいのだが、どうやっても各社のクラウドストレージほどの冗長性は確保できないし、DropBoxやGoogle Driveはバックアップには便利だが、クラウド上のディスクと手元のマシンを同期するだけなので、ディスクの容量削減には役に立たない。

そこで、Facebookで勧めてもらったownCloudを試してみた。こちらはブラウザから操作する他にWebDav経由でFinderに外部ディスクとしてマウントすることもできて、ローカルマシンの容量削減にはいいみたいだ。

ownCloud自体がS3を外部ストレージとして利用する方法を提供しているので、正しく設定すればそのままで分散ストレージを実質的には無限大に利用可能になる。が、いかんせん遅い。遅さはファイルのバックアップを面倒にし、面倒さはバックアップを保存すること自体を妨げるので、これは悪である。退治せねばなるまい。

とはいえ方法は簡単だ。我々にはすでにgoofysがある。goofysはs3fsよりもずっと速く動作する。速さは正義である。

ownCloudをec2上に設定する方法は割愛する。どうやらそのためのAMIが用意されているようだが、何が入っているか調べるのが面倒なAMIを使うのは嫌なので、普通のAMIにインストールした。あとはgoofysだ。まず、owncloud上でフォルダを作成する。そして、goofysのマウントポイントをそのフォルダにしてしまう。サーバ側では、「owncloud/data/ユーザ名/files/ファイル名」になっているので、ここを利用する。

$ sudo yum install -y fuse
$ id apache
uid=48(apache) gid=48(apache) groups=48(apache)
$ export GOPATH=$HOME/work
$ go get github.com/kahing/goofys
$ go install github.com/kahing/goofys
$ cat > ~/.aws/credentials
[default]
aws_access_key_id = AKID1234567890
aws_secret_access_key = MY-SECRET-KEY
$ sudo GOPATH/bin/goofys -o allow_other --uid 48 --gid 48 バケット名 マウントポイント

-oオプションはそのままfuseに渡されるので、これでApache(uidとgidが48)が利用出来るマウントポイントが出来上がる。

フリーランス7年目

2010年の9月からフリーランスになったので、今月で満6年が過ぎ、7年目が始まりました。日頃お世話になっている皆様方に感謝いたします。ありがとうございました。そしてこれからもどうぞよろしくお願い申し上げます。

さて、6年目は後半に初歩的な失敗があったので、反省の年になりました。年度の後半となる春先はとにかく仕事の読み違えが続き、久しぶりに大きな痛手を被りました。一番ダメージが大きかったのは、期日が決まっているので大急ぎでということでお話をいただいていた案件が、スケジュールを確保した後に結局お流れになってしまったのにうまく対処できなかったことでした。

スケジュールを確保する、と簡単に言いますが、同時期にせっかく頂いた別の案件を無理やりに他に依頼したり、お願いして延期していただくような対応を含んでいるので、予定が変わっても急に「やっぱりやめました、前の通りでお願いします!」とこちらの一方的な都合でロールバックするわけにもいかず、下手をするとその後数ヶ月は本当に文字どおり全く仕事ができなくなってしまいます。それに、仕事というのはタイミングをずらすだけでドミノ式に次々とトラブルが降ってくることもあるので、後々まで引きずることがよくあるのです。とはいえ、発注がなければスケジュールを確保しない、といったルールを徹底するのもそれはそれで難しく、この辺りの機微を久しぶりに勉強させてもらいました。

個人事業主でフリーランスをやっていると、月給制のサラリーマンと違ってこんな時に収入が途切れて困ったことになるので、日頃から二、三ヶ月くらいはなんとかなるよう準備しておくことが大切ですが、なかなか簡単なことではありません。

ただ、確かに失敗してばかりでは仕方がないので対策しなければいけないのですが、こういったケースに対応する便利な手段というのは、リスクの高くなる要素を含む案件はお断りするといった大胆な策以外には、根本的なところでは多分そんなにはないんじゃないかと思います。もちろん案件を減らしてもそれはそれで逆にリスクが高まるので、今後どうするかを考えて、そもそも中長期の受託案件に依存する度合いを減らすべきだという結論に至りました。幸いにも最近ではスタートアップの技術サポートやインフラ構築と保守といったお仕事も増えてきているので、そちらの割合を増やして、一人でやっている以上は決してスケールしない開発やコンサル、教育関連の事業の宿命をリスクを分散することでごまかしつつ、多少損をしても知らんぷりできるよう備えながら、今後確実に訪れる体力気力の衰えに対応していくことになります。

そうそう、仕事に関しては、相変わらずリモートワークを続けています。家族と三食ともに過ごして子育てにコミットしながら自室で作業しているのですが、子供達もだいぶ大きくなってあちこち駆け回ったりビデオ会議に顔を出そうとイタズラすることも増えてきた上に、仕事部屋もだんだん手狭になってきたので、そろそろなんとかしなきゃいけないなと考えています。コワーキングだと他の人もいらっしゃるので、音で集中力が途切れがちな性格なためあんまり向いていないんですよね。ちょうどスポーツサイクルにも慣れてきたので、最近では駅から離れていてもいいから近所に静かで手頃な仕事部屋でも借りようかな、と不動産サイトを見て回っています。築年数とか周辺施設はどうでもいいので、家庭用でいいから専用に回線を引き込めて、できればルーフバルコニーがあって疲れたら遠くを眺めることができるというのが理想です。

でも、こういうのって周囲に参考になるモデルがほとんどいないので、よくわからないんですよね。書斎とか制作部屋を持つというライフスタイルはソフトウェア開発者というよりは職業作家とか漫画家に近いのかもしれませんが、それにしても身近な参考例が少ないことには変わりありません。家庭を持って一軒家に住みながらフリーランスで仕事をするという、いろいろな生活の形のいいとこ取りみたいな強欲な人生を送るのはなかなか難しいです。

2016年の卒業式の贈る言葉

 学生の皆さん、ご卒業おめでとうございます。成績の方はいかがでしたか?ご不満のある方は自分の胸に手を当てながら、一歩前に出て来てください。

 さて、今年は就職活動も大変でインターンやアルバイトで出席がなかった学生さんも多いので、大事なことをいくつかこの機会にまとめてお伝えしておきたいと思います。

 まず、これから社会人になる皆さんは、必ずこの資料に目を通しておいてください。ブラック企業対策プロジェクトが発行している「ブラック企業の見分け方」という冊子です。66ページもある長い資料ですが、しっかり読んでおいてください。あるいは、もう就職してしまったのでから意味がないと思う方もいらっしゃるでしょうから、その場合は「会社をどう休む、病院でなんて言う」をお勧めします。

 なぜなら、皆さんがこれから就職して仕事を始める企業の大半は、ブラック企業だからです。すいません、いきなり変なこと言っちゃって。

 先日、三月三日に誕生日ケーキを買いに、近所で評判のケーキ屋さんに行きました。甘い匂いにつられたアリのように、といっては失礼かもしれませんが、店の外まで大勢のお客さんが並んで、大変繁盛しています。それもそのはず、このお店のケーキは都心の有名店も霞むほどの美味しさで近隣では知らない人はいないほどの知る人ぞ知る名店なのです。なので、毎日こうして行列が絶えません。

 しばらくしてようやく店の中に入ると、一時は住宅でも流行していたいわゆる南仏風の建物の奥、レジの向こうの厨房がガラス張りになっていて、お揃いの白衣に身を包んだ大勢の人たちが一心不乱に働いているのが見えます。ケーキ屋さんのケーキって、手作業が多くてなかなか自動化できないみたいなんですね。だから、人気店の需要を捌くには、どうしても大勢の作業者が必要になります。そんな姿を見ていると、ちょっと嫌なことに思い当たって、ついギョッとしてしまいました。

 …まだ読んでる?ごめんねいきなりケーキの話になっちゃって。もう少し我慢して。

 で、このお店のケーキは、美味しいだけじゃなくて、値段が手頃なことでも知られています。確かに、あまり洋菓子に詳しくなくても、この味でこの値段はちょっとあり得ないだろう、ということだけはすぐにわかります。でも、お店にはこれだけ大勢の人たちが働いているのです。おかしいと思いませんか?ケーキを1つ作るのにも何人もの作業が必要なのですから、当然人件費がかかります。またお菓子なので材料費も必要です。どちらを削っても、質の悪い職人、質の悪い材料、いずれもケーキの味が悪くなる要因になり得ます。

 すると、お店の前に小さな看板が掲げられているのに気付きました(わざとらしい気付き方ですね)。アルバイトの募集です。そして掲載された時給に驚きました。なんと、これだけ多忙なお店で、確かに可愛らしい制服を着て甘い匂いに包まれて過ごせる職場ではありますが、時給は都の最低賃金程度なんですね。またパティシエも募集中でしたが、こちらも月給20万程度です。つまり、削っていたのは、職人や材料の質ではなく、職人を含めた従業員の賃金だったんです。

 不当に安価にものを販売することを、ダンピングといいます。例えば、市場を独占するために赤字覚悟で不当廉売するような行為はこのダンピングに該当し、独占禁止法で禁止されています。一見するとものが安く手に入るのだから消費者には嬉しいようにも思われますが、例えばある企業が不当にものを安く売ることで他のライバルが参入できなくした後で、市場を独占して一気に価格を吊り上げたらどうなるでしょう。これがケーキなら我慢すればいいかもしれませんが、例えばどうしても定期的に服薬する必要がある深刻な病気の特効薬だったらどうでしょうか。このように、ダンピングは健全な競争を破壊して不健康な状態の市場を作り出してしまうので禁止されている行為なのです。

 もちろん、ケーキ屋さんも不当に市場を支配して競合を蹴落とし、甘いものを求める近隣住民の欲望を一気に支配することが目的で人件費を下げているというわけではないと思います。もっと単純に、例えば、善意から、みんなに美味しいケーキを少しでも手軽な値段で食べてもらいたいと考えているかもしれません。ただ、経済においては本人の意図というのはあまり重要ではなく、そこに現れる否応無しに突きつけられる現実、過度な競争や軋轢を生むシステムそのものが問題になってくるのです。

 ふうん、ケーキ屋さんもアンタみたいに面倒くさい客が寄り付いて大変だね、と思いながら読んでいる卒業生の皆さん。これはケーキ屋さんだけに限った話ではありません。っていうか普通はそうだと思うけど、卒業の贈る言葉なんだから当然皆さんのこれからの進路に関係ある話です。上の方で思いっきりほのめかしてますけど、なぜなら皆さんが就職する職場もまた、ダンピングによって成り立っているからです。

 なんだってーとかいうアスキーアートは掲載しません。

 もちろん、ソフトウェア業界とケーキ屋さんには大小様々な違いがあります。仕事という面ではソフトウェア業界の方がまずいことの方が多いかもしれませんね。競争過多なのは同じでも、まず第一にあんまりお客さんが満足していないし、第二にこれっぽっちも美味くなくて、職人の給料と一緒に質も平気で削る世界ですから。思い出してください。皆さんが今の就職先に採用されたのは、その高いスキルで会社を飛躍的に発展させるからではなかったはずです。というか正直、技術の面で何らかの選抜を一切受けていない人の方が多いと思います。面接でコードを書いたり、Githubアカウントを送ったりもしていないでしょう。つまり、大半の場合は若くて(つまり給料が安くて)なんかこちらのいうこと聞きそう、くらいの理由で雇われているのが現状です。これが、上司や経営者が高い給料で贅沢するための措置であれば悪意が原因なのでまだマシなのですが、その上司や経営者も大した報酬もないまま働いているはずです。まあ、もちろん、それでも皆さんよりは稼いでいるかもしれないですけどね。

 悪意が原因ではなく、ただ値段を下げて相手に買ってもらうために人件費を削り、削れない場合は従業員の質を削って安く雇い、低価格でサービスや商品を提供する。これは二重のダンピングです。一つは、普通の意味でのダンピング。もう一つは、安く働く従業員である皆さんによる、労働力を不当に安く提供するダンピングです。え?オレたちが?いやいや、給料は目一杯もらってるし、下げる気なんかさらさらない上に、今の給料も同級生と比べても別に安くないよ?とおっしゃるかもしれません。

 でも、自分の収入が適正かどうかなんてあんまり考えたことないですよね?

 まず、預金額を考えてみます。あんまり溜め込んでも仕方がないので、預金はほどほどでもいいと思うのですが、でも全然ないというのはまずいです。給与の3ヶ月分くらいはないといざという時に困るはず。みなさんの給与は結構高い所で額面20万、税金や保険で手取りはその80%の16万円くらいでしょうか。60万円貯金するのには、毎月5万円コツコツ貯めて1年かかります。ボーナスの話は一旦脇に置きます。すると11万円で生活するわけですが、家賃と光熱費はどれくらいが適正でしょうか。都心で働くとして、もちろん都心に違いほど通勤は楽です。通勤が楽なら自分への投資、勉強会に出たり本を買って読んだりする時間を捻出しやすくなります。反面、まだまだまともな条件の物件は高いはずです。仮にドアからドアで通勤に1時間かかる部屋を7万円で借りたとします。残りの光熱費や生活費を4万円でやりくりするわけですが、きっと携帯電話とインターネットプロバイダの契約だけで1万円くらい吹っ飛んでいるので、1日に500円も使えない生活になるはずです。かなり厳しいですよね。こんな風に、働いても働いても豊かにならないことを、ワーキングプアと呼ぶ人もいます。

 どうしましょう。ええ、こういう時に真っ先に削るといいのは預金です。金利もないんだし、ここを削って生活をもう少しマシなものにしましょう。じゃあ、いくら削って、どんな生活にすればいいのでしょうか。

 みなさんは、将来、家を買ったり車を買う、あるいは子育てをしたいと思いますか?あるいは、贅沢な暮らしがしたいとか、毎年旅行に行きたいとか、そういった類の将来プランはあるでしょうか。まあ、漠然とでもいいので何かあるとして、ではその場合、給料がいくらくらい必要になりますか?

 いや、別にモニタに向かって叫んだり急いでメールを書いて送ってもらわなくてもいいです。清貧生活であれば別にいいですが、そうでなければ、どのプランであっても、ちょっと給与が足りないですよね?足りてるっていうなら、それはそれで別にいいんですよ。でも、そうでないなと思ったら、続きを読んでくださいな。

 基本的に、皆さんは、いくら働いてもあんまり豊かになれない条件で自分の労働を会社に提供しています。つまり、自分自身(の労働時間)をダンピングしているのです。だって、そうしないと職に就けないから。そう、知らず知らずのうちに、皆さんは求人市場における不当廉売行為に手を染めているのです。もちろん、他の大勢の人たちもそうです。ダンピング、というと聞こえは悪いですが、ワーキングプアになるような待遇を受け入れることは、やはり労働力の不当廉売なのです。自分の将来を売って今の生活に替えているだけなのですから。なので、どこかの時点で価格を適正にしないと、自分の方が倒れてしまいます。

 もちろん、急いで言い添えますが、皆さんの待遇は違法行為によって不当に低くなっているというわけでは全くありません。それは皆さんが強欲な亡者で労働市場を不当に占拠しているからでもなければ、経営者が血も涙もない鬼畜で奴隷を買いに行くついでに皆さんを雇ったからでもありません。そうではなく(例外はいるでしょうが)、上にも書いたように、関わっている人たちの善意や悪意は関係なく、ただ否応無しにそんなことになってしまう傾向があるということなのです。多分、昔は年功序列で経済も右肩上がりだったので、給料は将来どんどん上がるものとみなされていたから、若いうちに安月給でも問題はなかったのに、今はそういう状況じゃないくせに古い制度や慣習だけが残っているだけのことなのでしょう。もし本当に悪巧みをする連中がいて、そのせいで良くないことが起きているならまだ良かったのですが、そうではなく、ただ世の中の大半が不当に低い待遇で暮らしているだけだという事実こそが、この問題の根深さなのです。最低限、自分自身が生きていけるだけの分しか保障されていないので、例えば人口の再生産(子供を産んだり育てたりすることです)などは昔と比べて相当難しく、それは昨今の出生率の低下を見ても明らかです。大事なことなので繰り返しますが、これは、皆さんや雇用主が個人的に悪い人だからではなく、世の中がそういう傾向にあるということなので、うっかり社長の部屋に怒鳴り込んだりしないでください。

 そして、だからこそ、せめて悪い会社や上司に行き当たった場合に備えて、上のリンクの冊子を読んで自己防衛してください。

 でも、悪い話ばかりじゃいけないと思うので、こんな状況で皆さんはどうすればいいのか、まあ授業中にもお話ししたとは思うのですが、最後にもう一度繰り返しておきます。

 預金がそれなりにあっても、収入がそんなに高くなければあんまりお金を使うのはいいことではありません。第一、不安で使えないはずです。だから、できることなら、皆さんはまだ若いんだし、今は小銭を溜め込むより、そのお金を自分に投資してスキルを上げて、より高い給与で仕事が出来るようになるべきです。入ってくる当てがある時だけ、安心してお金を使えるからです。まともな生活には、多めの預金よりも多めの月収が効いてきます。だから、どんな人生プランがあったとしても、もしそれが何も使わず何も所有しない清貧暮らしであれば別ですが(それはそれでいいと思います)、当面の目標は、健康を維持しながら月収を上げること、給料を上げることにするべきです。

 では、皆さんの会社で給料を上げる方法は、何でしょうか。

 普通、ここは答えは「会社による」なんですが、皆さんの就職される会社は別です。なぜなら、スキルを必要とする業務にもかかわらずスキルの良し悪しで選考していないで皆さんを採用した会社に、ちゃんとしたキャリアプランが用意されている方が稀だからです。ごめんね、せっかく入った会社なんだから、皆さんもその会社を好きになりたいだろうけど、でもやっぱり、これは経営者が善人じゃないからとか悪人だからとかいう話ではなく、どうしようもない傾向なんですよ。だから、もっとぶっちゃけると、給料を(ごくわずかな場合を除き)上げる方法はありません。転職するしかないのです。というわけで、条件のいい会社に転職できる人間になることが皆さん共通の目下の最大の目的となります。

 そういう風に目標を設定すると、お金の使い方もおのずと決まってきます。自分のスキルを上げる時間を確保するためなら1万円家賃が高くても会社から近い場所に住むべきでしょう。通勤が楽な方が健康も維持しやすいはずです。そのお金で時間と体力を買ったことにして、勉強時間に投資してください。会社の業務を覚えることも勉強ですが、同僚がそのまま力尽きて倒れて寝ている間に、帰ってもう少し先まで学んでください。無茶を言う上司には上の資料を使って適当に対抗し、ちゃんと休憩しながらパフォーマンスを発揮出来るよう調整してください。飲みに行くのもいいですが、出来れば勉強会などでスキルの高い人たちの話を聞くために出かけるよう心がけてください。戦国武将のどうでもいい逸話を披露する上司の話はスルーしてその間に英単語の一つでも覚えましょう。ピープルウェアを読みましょう。C言語を覚えましょう。ミクロ経済学を学びましょう。

 「チョコレートを、食べなさい。あなたの脳を、洗いなさい。ダダ、ダダ、水を飲みなさい

 そして、学びながら、世の中は知れば知るほど結構面白いと気づいてください。もう知っている人はもう一度味わってください。そこまで心が広くないという、まるでぼくみたいな人には、「Living well is the best revenge」という、一説ではジョージ・バーバートのものと伝えられているものの、実際にはユダヤ教の口伝(タルムード)にある「Live well. It’s the best revenge」が由来という、不穏な感じがすごくいいので気に入っている言葉を贈りたいと思います。ぼくらの世代がそろそろ仕事を引退する頃には、最大の人数を誇る最悪の世代として悪名高いジェンレーションXが労働市場から次々に消え去るわけで、高スキルの人材は引く手数多になっているでしょう。その頃までコツコツ頑張っていればきっと大きく報われるんでしょうね。いいなあ。

全くの素人が自転車を買ったので記録しておく(1)

自転車修理事始め

血圧も高いし体重も減らすべきだと会う人みんなに言われるので、自転車を買った。

周りに誰もスポーツバイクに乗っている人がいないので、最初に参考にしたのはひたすら @kanose さんのブログと検索だった。正直、ここまで調べ上げているサイトは他になかなかないし、意見もとても参考になる。そこから貼られているリンクをたどって読むだけで十分に勉強になるはずだ。もっとも、全部を本気で調べたらきっとペダルを漕ぎだす前に老衰で動けなくなるかもしれないが。

その後、仕事の関係で筋金入りの自転車狂に出会ったので色々と質問してみたりしながら準備を進めた。結局、方針としては

・買うのはクロスバイク
・サイズが合うこと重視
・予算は上限10万円くらい

くらいにざっくり決めて、いざ自転車屋さんに出向いたのだが、最初は情報を仕入れるだけにしようと思っていたのに、結局なんだかんだ言ってこれだよねとその場で一発で決めてしまった。

GIANTというのは台湾のメーカーで、70年代から主にOEMで色々なブランドの自転車を生産してきた会社だ。以降本格的なレースにも参戦し、世界中で高い実績を積み上げている。店員さん曰く、店内にざっと並んだ色々なブランドのおしゃれ自転車も「まあぶっちゃけみんなGIANTが作ってますよ」とのこと。特徴としては、とにかく価格が安く、価格破壊のレベルといえるアグレッシブな製品を出してくることで有名らしい。確かに、この自転車もシリーズでもっとも安いモデルでさえ内装ケーブルになっていたりする。正直、たまの通勤に使うだけでレースに出るわけでもないので、そこまでハイスペックなものは求めていない上に、初めての買い物なので安く済むならそれだけでもありがたい。また大震災の際には輸送に使われるようにマウンテンバイクを千台も寄付して使い方を指導し、割と早く交通インフラが復旧したのでそれらは最終的には遠距離通学になってしまった子供達の通学用に使われることになったりした記事を読んでグッときたのも決め手になった。たまたまサイズがちょうどいいのが在庫にあったので、翌日には納車となった。

どうせスポーツバイクなんか乗ったこともないので、買うまで試乗もしなかった。

ちゃんとした製品みたいだし、まあレースに出るわけでもないから、安いに越したことはない。たまたま空気入れはパナレーサーのが自宅にあったので、あとは手袋でも買うかなあ、などと最初は気楽に考えていた。しかし、そんな甘い考えはすぐに文字通り打ち砕かれてしまったのであった。続く

Rage Against エセ民間療法

 偶然にも二人の著名人がガンに罹患し、片方は亡くなりもう一人もすでに転移して悪化した状態だという。そして、どちらも医療を拒否し民間療法に頼るという間違いを犯した。

 うん、間違いとはっきり言い切ってしまって構わないし言い切るべきだ。

 事例はデータではない。ガンについてこれで治った、これが効いたという宣伝は必ずしもデータに依るものではない。本当なのか、他の要因はなかったのか、検討されている証拠もない。

 よく、科学は万能ではないとかいう人がいる。当たり前だ。誰もそんなことを前提になどしていない。科学への批判としてこれはそもそも理屈が成り立っていない。第一、そうでないと科学は進歩しない。

 でも、科学的手法というものはまた別の話だ。

 もちろん調査に誤りや手違いが起きることはある。当たり前だ。でも、調査そのものを慎重に設計して、十分にランダムなサンプルからデータを収集し、またそれらすべてを公開して、あらゆる方面から誰もが何度も検討することを可能にするという科学的手法そのものは、たとえ科学が万能でなくても、有効性がなくなるものではない。

 ここで少し自分語りをさせてもらいたい。いや、正確には母親のことだけれど。

 検診で母にガンが見つかり、しかもステージ4と診断されてから、世の中には民間療法の宣伝がずいぶんたくさんあることに気づいた。何気なく読んでいる新聞にも、毎日のように書籍や雑誌の見出しに見つかる。医者には行くな、抗がん剤は悪い、ダイエットでガンが治る、などなど。母はなんといっても占いとかが大好きな人だったので、もちろんちゃんとした情報にも当たっていたが、それらの変な情報もあれこれ追いかけていた。そして、有望そうなものがあれば医師にこれはどうだろう、あれはどうだろうと尋ねたりしていた。国立がんセンターの医師はインフォームドコンセントという面でもしっかりした人で、手術で取り除けない転移があること、それらを全部取ると結果生命も失うので、抗がん剤により縮小させて手術可能になったら取り除く方針であること、抗がん剤は強力な副作用もあるが、何よりどれが誰にどう効くのかは使ってみないとわからないこと、そのためにきちんと検診して効果を見極めながら治療する必要があること、などを丁寧に説明してくれたので、最初はショックだった母もた闘うか降参するかしかないことを理解し、闘うことを選択することができた。笑ってしまう人もいるかもしれないが、医師にあれやこれやの民間療法についてアドバイスを求めるのも、母にしてみれば立派な闘いだったのだ。医師はそんな母の変な質問にも、決して嘲るようなことはせず、ひとつひとつ丁寧にその矛盾や誤りを説明してくれた。一番完結な説明は、もしそれが効くと正しい手法で調査され、有意な差が認められているなら、もちろん我々は治療に採用します、というものだった。そりゃそうだよね、と母も納得していた。

 ぼくも納得した。そして、同時に強い憤りを覚えた。普段は気丈に振る舞っているが、実際には母がわなわな震えるほどの強い不安に毎日何度も苛まれているのは知っていた。それを押して週に何度も電車やタクシーで遠くの病院まで通いながら命をかけて闘っている人間に、善人面して嘘や過ちを信じさせようとあの手この手を使う連中がいる。そりゃ多少の気休めにはなるかもしれない。でも、もし誰かが心の弱さや無知からそんなものを本気で信じてしまい、積み上げられた知見から設計された医療を拒否するようになってしまったら、というかあの手の奴らの中には積極的にそういう方向に読者を誘導している輩もいるのだが、それはもう十分に殺人ではないか。生きたいという至極まっとうな欲求を貶めて金をむしり取る行為を正当化できる理由はひとつもない。そんな嘘の本で汚い金を稼いでいる出版社だって、その広告を載せているふざけた新聞だってみんな同罪だ。

 患者が納得しているならいいじゃないか、という意見に与することはできない。死というものはまたその足音を聞いたことのない者には単なる空想の産物でしかない。死に至る病を背負った人の不安なんて自分がそうなってみないとわかるわけがない。そんな状態の患者の判断を尊重するというのは、やっぱりおかしいじゃないかと思うからだ。それより何より、不安に苛まれている人が、正常な判断力を失って間違った方向に進んでしまうことを助長するあらゆる言説を支持するわけにはいかないのだ。

 ステージ4のガンが治る確率など微々たるもので、せっかく手術したって一桁台の生存率がやっと二桁になるくらいが関の山だ。だけど、母は確率もクソもない薄汚い連中の嘘ばかりの甘言に惑わされることなく、最後まで闘い、やがて治療の甲斐なくターミナルケアに移され、そこで短い生涯を終えた。ひょっとしたら、インチキ代替医療を宣伝する連中はそれ見たことかと言い立てるかもしれない。図々しい奴らだから。けれど、息子として一言いわせてもらいたいのだが、母は少なくともあいつらの勧める気休めとやらには勝ったし、今でもそれが大いに誇らしい。

 上の方で民間医療に頼ってしまった二人を、間違っていると書いたけれど、それは両人を断罪したいからでは決してない。死への恐怖は人から正常な判断力を奪い、また世の中には支えが必要なそんな状態の人たちを食い物にする鬼畜がいて、そいつらを駆逐するには、やっぱりそういうのは間違っていると常に言い立てることが必要だからだ。なので、困っている人たち、本当に助けが必要な人たちの、生きたいという願いを悪意からでも善意からでも邪魔する連中が消え去るまで続けるつもりだ。

6年目とこれからの話

 2010年9月からフリーランス生活を始めて、これで6年目に突入しました。日頃から様々な面で皆様に支えられてこれまでやってこられたことを感謝いたします。ありがとうございます。これからも宜しくお願いします。

 現在の仕事の内容は大きく分けると受託開発とコンサルティングです。この5年間ほとんど変わっていません。最近では受託はスマートフォン向けアプリが多いですね。コンサルティングはいろいろです。その他の時間は個人的な勉強に充てています。また週に一度のペースでウェブアプリケーションの開発などの講座を専門学校で担当しています。

 また、仕事も講師業の他はほぼ家で作業しているので、三食家族と一緒の日がほとんどで、子供らの送迎やイベントに出席する機会にも恵まれ、ワークライフバランスはすこぶるいい感じです。

 仕事の方もおかげさまで状況は安定し、年内の予定はほぼ埋まってしまいそうです。多少の上下はありましたが、今年も目標の予算は達成できそうなので、ありがたいことです。所得税を払うまでは少しだけ浮かれた気分で過ごしたいと思います。

 経済的にはこの3年ほど微増続きでだいたい同じような感じです。なにぶん一人でやっているものですから、リソースもないので急激に成長させることはそもそも無理なのですが、投資家とは無縁の自己資金だけの世界に暮らしステークホルダも自分だけなので困ることはありません。もともと、無理に利益を積み上げていくようなガツガツしたスタートアップのようなものはあまり好きではなく、どちらかといえばスモールビジネスを続けて自分に合ったニッチを見つけ細々と、でもある程度豊かに暮らしていきたいと考えていたので、今のところこれが理想通りだったのかなという気がしています。

 しかし、同時に、個人でやっている以上は現状だけでなく今後の生活についても考えていかないといけません。なんといっても退職金もなく収入保障の保険はあっても病気や長期的なトラブルを抱え込んだりするとひとたまりもありません。

 それに、これまでは受託開発である程度のパフォーマンスを発揮できればそれで十分だったわけですが、それを今後何年続けることができるのか、ちゃんと考える必要があります。本来、会社の業務であれば調子が良ければ人を雇って収益を増やしたり、スケールするサービスを展開するなどしていけばいいわけですが、どうも性分として出来ればいつも一人でいたいので、いまいち事業の成長という方面に乗り出すことができません。

 それでも、今後は一人のリソースで対応した分だけ収入があるという状態を改善する方法を考えていかないといけないでしょう。老後の資金の確保だけでなく、子供の進学などで支出も増えるわけですから、うまくいっている内に次の対策を考えるのがいちばん賢いやり方なはずです。課税される消費税がどんどん上がることを考えるとなおさら真剣に考えないといけません。

 よく考えたら、サラリーマン時代だってどんなに干されようがいつか来る日のためにあれこれ布石を打ってきて、ようやくそれが実になってきたようなものですから、今後も同じですね。

 というわけで、年末から来年にかけては、次の10年のための布石を打つ作業をもう少し本格的にやっていきたいと思います。具体的なことは失敗すると恥ずかしいので明かせませんが、小さく一歩ずつやっていきます。

 せいぜい5年くらいニッチに居座って細々暮らしているだけで成功談も何もあったもんじゃないですが、やはりここまでこられたのは運の他にもいくつかの要因があったと思います。まず、プログラミング関連の仕事をしている中で、ああこれは本当に有利だったなと実感したのは、他の人より英語ができること、といって悪ければ英語に抵抗が全然ないことです。ログやマニュアルがちゃんと読めるだけでなく、各種の用語で使われている単語や言い回しも元は普通の生活の中で使われている語であったりするので、プログラミングを巡るいろいろな概念の理解も楽になります。次に、仕事自体が気に入っているというのも大事でした。ぼくはさほど頭が切れるわけではないので、みんながやっていることについてじっくり眺めて考えて、ゆっくりとそれらを学び取り、そこからようやく競争相手を安く早く出し抜く方法を探すことが出来ればいいやと考えているので、眺めているのが好きなものを仕事にしてよかったと思っています。単純に新しい技術だけでなく、過去から思いがけず背中を叩かれるように復古してくる技術もあり、全く関係がないと思っていたものが突然繋がったりするのでソフトウェアの世界はなかなか飽きません。

 ええ、裏を返せば、ソフトウェア開発の仕事はそこまで高度に抽象化された仕事になってしまったのだ、ともいえるでしょうね。それは賢い人たちが本来の仕事をするために簡単な事はたいしたことがない連中(ぼくだよ!)でもできるように、より簡単にしていった結果でもあるのでしょう。いい時代です。

 だらだらと長くなりましたが、今後もこんな感じで、スモールビジネスで自分の手が届く範囲内を充実させるべく努力していきます。そして、結果として皆様の利益につながるものが提供できれば幸いです。これまで支えていただいた皆様に感謝すると同時に、これからもどうぞよろしくお願い致します。

SPIKEのWebhookをRailsで受け取る

久しぶりにブログでも書こう。

手数料無料の驚きのカード決済サービスSPIKE、使わない手はないということで試してみたのだけれど、RailsでWebhookを受け取るとエラーになってしまう。

Error occurred while parsing request parameters.
Contents:

なんかURLエンコードされた文字列

JSONをPOSTされた際にうまくパースできないようなのだが、コントローラで受けたときにはもうエラーになっているのでアプリケーションのレベルでは対処しようがない。結局、こちらを参考にモンキーパッチで動かしてみたのだけれど、もっと楽なやり方があれば教えてもらいたい。

まずはinitializerを用意して、特定のページへのアクセスでデフォルトのパーサを迂回させる。

# config/initialize/webhook.rb
# https://github.com/intridea/grape/issues/340
require File.dirname(__FILE__) + '/../../lib/webhook_parser.rb'

MyApp::Application.config.middleware.swap ActionDispatch::ParamsParser, MyApp::ParamsParser, :ignore_prefix => '/path/to/webhook'

これでwebhookへのアクセスのときはlib/webhook_parser.rbが呼び出されるようになった。

#lib/webhook_parser.rb
# https://github.com/intridea/grape/issues/340
module MyApp
  class ParamsParser < ActionDispatch::ParamsParser
    def initialize(app, opts = {})
      @app = app
      @opts = opts
      super
    end

    def call(env)
      if @opts[:ignore_prefix].nil? or !env['PATH_INFO'].start_with?(@opts[:ignore_prefix])
        super(env)
      else
        @app.call(env)
      end
    end
  end
end

これでSPIKEからのWebhookをエラー無しにコントローラで処理できるようにはなった。

  #webhookを受け取るコントローラ
  def webhook
    # SPIKEから送信されるrequest bodyから余計なバックスラッシュと先頭と最後のダブルクォートを消す
    parsed_request_body = JSON.parse(URI.decode(request.body.read).match(/\A"(.+)"\Z/)[1].gsub(/\\/, ''))
    # あとはお好きなように
  end

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

 まさかの2連覇を果たしても順位予想は2位か3位という悲しきアンダードッグ、オークランド・アスレティックスの2014年は割と地味に始まった。

 まず投手陣。補強されたのは無名の若手とのトレードで移籍したフェルナンド・エイバッドセス・スミスと交換でやって来たルーク・グレガーソン。球は速いがコントロールに難がある左投手と、中継ぎのくせに球速はないがスライダーを多投してタイミングを外すことに専念する地味な右投手だ。実績のあるグレガーソンは2015年にはFAなので1年限りの腰掛け移籍である。このエイバッドの獲得もあってか、この数年左のワンポイントから割と長いイニングまで投げていたジェリー・ブレヴィンズ(日米野球で来日してましたね)がところてん式に放出され、小柄で全くパワーがないがやたらめったら足の速いビリー・バーンズが加入している。ブレヴィンズ、どういうわけかやたらとイチローを苦手としていたのでナショナルリーグに移籍できてよかった。そして華々しいルーキー時代の活躍から一転、長期契約を獲得した直後からずっと怪我で出場していなかったブレット・アンダーソン(北京五輪の三位決定戦で日本相手に勝ち投手になった人)が放出され、これまたなかなか芽が出ずポテンシャルの高さだけは定評のあった長身左腕ドリュー・ポメランツとトレードされた。それからなんといっても驚きだったのは独立リーグを経てMLBに復帰したスコット・カズミアーの獲得だ。『マネーボール』に出てくるカージマー、といえば通りがいいかもしれない。そう、あの有名なドラフトのシーンでメッツが獲得したお陰でビリー・ビーンがずっと狙っていたスウィッシャーを見事A’sにもたらした、あの高卒ルーキーが何の因果かA’sに入るのだ。2013年シーズンはクリーヴランドで好成績を挙げてカムバック賞まで獲得したのだが、独立リーグ時代に著名なピッチングコーチから指導されていたらしく、驚くべきことにそのコーチは今は元A’sのエースにしてFAで巨額+長期契約を獲得した途端に二流の先発投手に成り下がったまま無事契約満了してバイアウト$7Mまで手に入れて、悪名高い代理人スコット・ボラスと一緒にサンフランシスコ・ジャイアンツを骨までしゃぶった挙句、当然のように契約してくれるチームがなくなり引退状態だったバリー・ジートを指導しているとのこと。これで2014年のローテーションはカズミアー、グレイA J・グリフィンパーカーとなり、残り一枠はトミー・ミローンが有力視されていたが、加えてソフトバンクが数年前に獲得し損ねたジェシー・チャベスとポメランツが争うことになった。また昨年までのクローザーで地元の人気選手、オーストラリア人のグラント・バルフォアがFAで高給取りになるので、新しいクローザーとして昨年まで2シーズンで100セーブを達成しているジム・ジョンソンが入ることになった。松井がサヨナラホームランを放ったことがあるベテランでシンカーを多投する地味な選手だが実績は十分だ。

 野手の補強はもっと地味で、まず全くの期待外れだったクリス・ヤングを解雇して、地元出身のユーティリティのニック・プントを獲得。ショートも守れるので中島が全く使えないと判断された以上は必要な補強だ。それから、レイズからFAになったサム・ファルドを獲得している。ファルドはどうやらかなり前から狙っていたようで、守備が上手で足が使えてボール球を振らず勉強も出来るという、最近のA’sが好みそうな選手だ。これでチームにはジェド・ロウリーとファルドという二人のスタンフォード出身(しかも元チームメイト)が在籍することになった。スタンフォードといえば最近ではGoogleみたいな企業で有名だが、主席で卒業しながら若いうちは野球をやるとMLBに入り通算270勝を挙げた上に20勝した年に引退したマイク・ムッシーナ(歴史上20勝して引退したのはサンディ・コーファックス以来42年振りらしい)や、飛び級で3年で卒業した秀才なのに西武ライオンズや日本の独立リーグでもプレーしたクリス・カーターのように面白い野球選手を外出していることでも有名だ。ロウリーも奥さんが外交官で本人も野球関係の文章を新聞に寄稿するちょっとした文化人だったりする。いずれにせよ、途中ポジションがかぶっているジェントリーを昇格させるためウェイバー扱いになりミネソタに移籍したファルドをトレード期限までに先発投手を放出してまで再獲得したのだから、A’sはよっぽどファルドに何かを見出しているのだろう。

 2014年のA’sは昨年に続いてプラトーン戦略を継続し、強力な投手陣に支えられてペナントを制するという戦術でシーズンに臨んだ。スティーヴン・ヴォートが怪我で出遅れ、野手はこんな布陣になった:捕手は右投手にだけ異様に強いジョン・ジェイソと、長打力はあるが守備はお粗末なデレク・ノリスが併用。一塁は右投手が相手なら超一流のホームラン打者ブランドン・モスと左投手用にネイト・フレイマン、二塁はアマ時代は強打で知られた守備のいいオタク顔でシーズンオフには嫌がらせのような大量の票を集め「Face of MLB」投票で決勝まで勝ち進んだエリック・ソガードが右投手用で、DV事件を起こして逮捕歴もありとにかく三振しないが守備に難があるアルベルト・カヤスポが左投手用。三塁はこのチームには珍しく固定されているが、それは有名選手と若手数人のトレードで加入したパッとしない控え捕手から内野にコンバートされた途端に急成長しトリプルAで四割を打って昇格後はMVP級の選手になったチーム最高のスター選手ジョシュ・ドナルドソンが入るからだ。ちなみに同じトレードでA’sに入ってきた選手に阪神のマット・マートンがいる。ショートにはおそらくレギュラーとしてはMLB全球団で最低の守備範囲を誇る両打ちのジェド・ロウリー。レフトはなんだかんだいってセンターから素直にコンバートされレフトにしては送球がいいので捕殺の多いヨエニス・セスペデス、センターは衰えたとはいえまだまだ広い守備範囲とMLBの外野手として最低レベルの肩でとうとうマイク・トラウトにセンターフライで一塁から二塁に走られた(間一髪でアウト)両打ちのココ・クリスプ、ライトは移籍直後の華々しい活躍が嘘のように打撃不調に苦しむMLBトップクラスの強肩ジョシュ・レディック

 そして、いよいよ開幕を迎えたわけだが、まず崩壊したのは投手陣。二桁勝利を達成してこれから飛躍が期待されたAJ・グリフィンとチームのエースになりかかっていたパーカーがトミー・ジョン手術で開幕前に脱落。A’sは先発ローテーションの2/5を失うという大惨事に見舞われた。その穴を埋めたのはロングリリーフからの転向組、チャベスとポメランツで、共に抜群の投球を披露し、特にポメランツは課題だった制球も安定しておおいに期待に応えた。もっとも、ノックアウトされた後にベンチを殴って骨折する杉内リスペクト行為で6月に故障者リスト入りしてしまったが。一方のチャベスも、MLBの投手としては異様に細い体格ながら鋭いカッターを武器に長いイニングを投げても安定感を見せた。短いイニングを全力で投げても被本塁打が多いのでむしろ先発の方がいいのかもしれない。とにかく、マイナー組織が非常に手薄なため昇格させる先発がいなかったA’sの前半戦はこの二人が救ったといっていいだろう。

 惨事は続く。新クローザーのジム・ジョンソンは顔を出すたびに失点を重ね、ついにクローザーを降ろされてしまった。この2年間クローザーを務めたバルフォアはとにかくセーブ失敗がないので地元でも非常に人気が高く、9回になると外野席のファンがずらりと並んでヘッドバンギングをしてテンションを高めるという儀式まで出来上がっていたくらいなので、不甲斐ない後継者にファンは容赦なくブーイングを浴びせていた。バルフォアがFAで高年俸になるという理由で獲得したのに高年俸でしかもバルフォア自身はメディカルチェックに引っかかってボルチモアへの移籍が破断になり格安でタンパベイに移籍したのだから余計に間が悪かった。チームは懸命にジョンソンの復活をフォローしていたが、点差がある場面であろうがどこで使っても結果を残せず、移籍先も見つからないまま月日は過ぎ去り、最終的には解雇となってしまった。

 しかしジョンソンの崩壊の一方でチームは代替となる戦力をきっちり確保できていた。新加入のエイバッドは神がかった投球を続け、年明け早々に獲得しておいたトミー・ジョン手術明けのエリック・オフラハティは夏以降復帰してから安定感のある投球で貴重な中継ぎとなった。ヴェンターズ、キンブレルと並んでアトランタのブルペンを支えたオフラハティが獲得できてきっちり復活し、おまけに2015年のオプションまであるのだから感動ものである。また、ケガ続きの野手だった若手が最後の手段で投手に転向したらシングルA級では誰も打てないことが判明し、ダブルAでもトリプルAでも三振の山を築くのでMLBに昇格したらミゲル・カブレラでさえ手こずる球を投げることがわかったという映画みたいな人生を歩んできたドゥーリトルがジョンソンに代わるクローザーに指名された。昨年からの持ち越しでダン・オテロは相変わらずシュートが冴え渡りゴロの山を築き、不調だったライアン・クックもそれなりに数字を残したのできっともうすぐいいトレードのネタになるだろう。

 そんな感じで、なんとなく前半を切り抜けたA’sだったが、不安要素はたくさんあった。まずグレイもチャベスやポメランツも年間を通して投げ切った実績がなく、ポメランツは上記のように杉内ってしまった。球速が持ち味のカズミアーも夏場以降はやや安定感を欠く投球が見受けられるようになり、先発のテコ入れは急務となった。実績のある先発投手はトレードで放出済みなので昇格というオプションはない。そこでビリー・ビーンと冷酷な仲間たちは他チームと次々と大型トレードをキメていく。まずマイナーリーグの若手有望株トップ一位のアディソン・ラッセルと昨年のドラフト一位のビル・マッキニー、先発経験もあるダン・ストレイリーをまとめてシカゴに放出し、FAまで半年しかないジェイソン・ハメルと2015年シーズン終了後にFAになるジェフ・サマージャを獲得。それからキューバ出身の選手として過去最高額で契約したセスペデスをボストンに送りやはりあと半年しか契約できないジョン・レスターを獲得した。レスターといえばガンから復活したボストンのエースでポストシーズンにもやたらと強いことで知られており、このトレードは今年こそはデトロイトの壁を打ち破るという意思の表れと当初は受け取られていたが、後のインタビューによればビリー・ビーンは事態はもっと切迫しているとみなしていたようで、レスター無しでポストシーズン進出は無理だと判断していたらしい。一方、二年連続ホームランダービーで優勝するなど地元でも人気の高かったセスペデスの放出はファンの間に大きなショックを与えた。ちなみにA’s残留と契約延長を希望していたセスペデスはインタビューによればトレードの知らせに泣きそうになったが、電話したら母親が大泣きしてしまいタイミングを失ったので泣けなかったそうだ。セスペデスの母は元キューバ代表のソフトボールの投手で、シドニー五輪に出場し120km/hを投げたこともある豪腕である。ちなみに、このトレードに触発されたのかデトロイトはデヴィッド・プライスを獲得するという大型トレードを敢行したが、ポストシーズンではヴァーランダーシャーザー、プライスの豪華三本立てできっちり三連敗して敗退し、ヴァーランダーは付き合っているグラビアアイドルのプライベート写真がiCloudから流出した。

 トレードの結果はまずまずだった。毎年前半しか活躍しないハメルは案の定ピリッとしない投球が続いたが、2014年のMLBで最もツキのなかった男サマージャはチームが変わってそれなりの打線の援護もあり、結果を残すことになる。レスターはさすがの投球で、観戦するたびに、ああ、いいピッチャーっていいピッチャーなんだなあと同語反復するしかない見事な活躍を見せた。

 だが、崩壊したのは投手陣だけではない。野手の成績もまたシーズンが進むにつれてひどい下降線をたどってみせた。毎年過小評価されるA’sについての記事を書く仕事を記者から奪い取るために今年のオールスターにはなんと5名もの選手がA’sから選出されたのだが、選ばれた野手のドナルドソン、モス、ノリスが揃ってシーズン中盤から後半に極端に成績を落とした。わかりやすいOPSだけで見ても、ドナルドソンは終盤やや持ち直したものの6月が.509、9-10月は.686と大きく下げた(2014シーズンのOPSは.798)。モスは8月のOPSが.548で9-10月が.613(シーズン.772)、ノリスは.560、.642(.763)だ。ほぼ独走かと思われた前半から結局エンジェルズに抜かれてワイルドカードでポストシーズンに進出するまで成績が落ちたのだから、先発投手陣の補強がなかったらと思うとぞっとする。いずれにせよ、怪我であろうが不調だろうが、原因は何であっても、打撃の主力がここまで一気に成績を落とすと前半と後半ではまるで別のチームになってしまった。また移籍したセスペデスも7月はOPSは.573、その後も8月こそ.754と持ち直したが9月は.680なのであまり足しにはならなかっただろう。そういえば新加入のニック・プントもフェルナンド・ロドニーの高めのボールがストライクとコールされてヘルメットを叩きつけて退場させられた際には奥さんが若い頃の自分のおっぱいより高かったとTweetして援護するもキャリア最低の打撃成績で終わってしまった。またジョン・ジェイソはこの数年ずっとシーズン途中で脳震盪とその後遺症により出場できなくなる問題が続いているが、2014年も結局同じように消えてしまった。もう捕手は無理だろう。ところでチームは怪我の多いキャッチャーの補強のため膝の手術からFAとなっていたジオバニー・ソトをシーズン終盤に獲得しているのだが、レギュラーでプレーしていた経験のあるベテランらしくは安心できる試合運びとプレーを見せてくれた。ノリスと比べるとその差は歴然だった。フロントの大勝利だろう。それから打線のテコ入れに特大ホームランか三振か三振か三振というA’sらしいベテランのアダム・ダンを年俸はホワイトソックス持ちで加入させた。ダンは今年で引退する意思を表明しており、現役選手で最も長い期間ポストシーズン経験がない記録を更新し続けていたので温情もあったのだろう。

 と、いろいろあって、なんとかポストシーズンに滑り込むことに成功したA’sは89年以来の進出となるカンザスシティと初のワンゲームプレーオフに臨む。先発は当然レスター、途中まで4点のリードを奪うものの、序盤にキャッチャーのソトが怪我で退場した途端、守備に難のあるノリスが6個も盗塁を許し、決勝点も盗塁で進んだランナーの生還で敗退してしまった。ダン・オテロのボールは確かにシュートしてくるくせ球かもしれないが、ウェストしたボールを落とすのだからノリスの技術には深刻な問題がある。まあ、いい試合ではあったけれど、レスターを獲得して今年こそはポストシーズンを勝ち進む姿を見たかったのに残念な結果となってしまった。あんなに無茶なトレードをしたのだから、来年以降のことなんかどうでもいいとなりふり構わず攻めたフロントの活躍も虚しく、2014年もまたいつものように3年連続でポストシーズンの最序盤でA’sは姿を消したわけだ。何が悲しいって、結局この試合にアダム・ダンは出場していないので、最後までポストシーズンの出場がないまま引退してしまったのだ。

 A’sのファンは負けてもまだ楽しみが残っている。オフシーズンこそがA’sのA’sたる所以なのだ。敗退直後、ビリー・ビーンは今頃息してないんじゃないかと思ったのもつかの間、A’sは次々と大型トレードを敢行する。まだ契約が残っているが年俸調停権を得たチーム最高のスター選手ドナルドソンをブレッド・ロウリーを含む1対4のトレードでトロントへ放出したのを皮切りに、ブランドン・モスを若手ジョー・ウェンドルとの交換でクリーヴランドへ、サマージャをフェグリーやセミアンを含む若手4人との交換でシカゴ・ホワイトソックスへ、そしてノリスを2投手と交換でサンディエゴへとそれぞれ放出してしまったのだから驚きだ。確かにいずれもトレード価値としては最高の時期にあるので最大の見返りを期待できるのだが、それにしても三年連続ポストシーズンに進出したチームをほぼ解体してしまったわけだから大胆極まりない。しかもロウリーをFAで失った後釜のショートにドリューやアズドルバル・カブレラのような有名選手を獲得するといわれていたのが蓋を開けてみれば(失敗しただけかもしれないが)MLBでショートの実績がないセミアンになるサプライズもあり(続報:ジョン・ジェイソ、アリゾナ・フォール・リーグで活躍したダニエル・ロバートソンとマイナーリーグで目覚ましい成績をあげながらアンフェタミンで50試合の出場停止を食らったブーグ・パウエルを放出してベン・ゾブリストユネル・エスコバルを獲得しましたよ)、やっぱりシーズン中より見ていて楽しい。そうそう、中心となる右打者としてビリー・バトラーと三年契約を結んだのも、契約延長のオプションを破棄した元の所属チームのカンザスシティーと比較すると意外な高評価であったため驚きの契約となった。

 結局、昨年やや高くなったチーム総年俸がまた10Mほど下がり、ギャングやスラムで有名な(ドラマ『サンズ・オブ・アナーキー』の舞台でもある)オークランドから富裕層の多いサンノゼに移転する計画も頓挫したまま貧乏球団であり続ける2015年シーズンを迎えることになったわけだが、おそらくマネーボールの第2章となるにふさわしい成功を遂げたこの3年間の体制はいったんここで終わりになり、来年からはまた新たな姿のチームに生まれ変わることになるのだろう。それがうまくいくのか、それとも2000年代後半のような低迷期となるのかはまだわからない。が、それでもこの低予算ゆえに頭と度胸でなんとかしなければならない宿命のA’sは見る者をまた楽しませてくれることは間違いない。

SwiftとTitanium

Objective-Cと並んでiOS用アプリの開発に利用できる言語、Swiftが発表されました。私たち歌と踊りが大好きな陽気で愉快なTitaniumユーザーとしても注目すべきニュースです。

Titaniumとは、ご存知の通り、アプリの上にJavaScript実行環境を用意して、JavaScriptを通じてアプリを実際に動かすネイティブのAPIを叩いてしまうツールです、というとわかりにくいですが、ようするにネイティブのAPIで動作するアプリがJavaScriptで書けてしまう素敵なツールです。インストールガイドを辿るくらいの手間をかけるだけで簡単にセットアップできる上に、Node.jsなどモダンなJavaScriptの知識を活かして大規模なプログラムを作成することも可能です。ややこしい設定もなくiOSやAndroidなどに対応し、慣れたユーザーなら複数のプラットフォームで動作するアプリを短期間で開発することができます。

さて、Titaniumはこれまで、JavaScriptで書かれたプログラムをアプリの上で動作するJavaScript実行環境が評価して、その結果をネイティブな環境とやり取りする仕組みで動作するものでした。しかし、現在開発中の次期バージョン、Ti.Nextと呼ばれている新しいシステムでは、JavaScriptに独自拡張を施した言語で記述するとそれらをObjective-CやJavaといった言語にコンパイルして、文字通りネイティブアプリにしてしまう仕組みが導入される予定です。本当はJavaScriptがそのままObjective-Cに変換できればいいのでしょうが、さすがにちょっと記述するのが難しいので独自の変更が入っています。おそらく、現在JavaScriptとXMLでTitaniumのアプリを作成するAlloyフレームワークがあるので、ユーザーは新しい変な言語を覚えるのではなく、これまで通りAlloyでアプリを作成すれば、その他のツールチェインがよろしく取りはからってくれるよう、いわばAlloyがDSLとして機能するようになると予想されます。Alloy自体はBackbone.jsのModelやCollectionを取り入れたBackbone.js + Underscore.jsみたいな最近よくあるJavaScriptのMVCフレームワークに似たところもあるので、慣れてしまえば結構便利です。

そこへ話題のSwiftの登場となるわけですが、RubyMotionのような開発環境を提供しているサードパーディーのコミュニティは割と早めに反応しているようなので、TitaniumとSwiftのこれからについても、簡単な展望を予想してみたいと思います。このSwift、ざっと眺めたところJavaScriptとかなりよく似ています。少なくともObjective-Cの文法に追随するためのヘンテコな仕組みを必要とせずJavaScriptからのコンパイラも作成しやすいように見受けられます。そのため、特にTi.Nextのような仕組みはiOSに関しては飛躍的にTitaniumに有利になるでしょう。Swiftを覚えなくても馴染みのあるJavaScriptで記述できる上に、単純な仕組みのコンパイル部分を理解すればいろいろな応用が出来るはずです。TitaniumはバックエンドはAndroidやTizenなどプラットフォーム毎に切り離されているので、Titanium自体の開発者にとってはそれぞれに合わせてネイティブの言語でAPI層を構築するのが大変でしたが、その手間がかなり軽減されそうです。そして、それはJavaScriptでクロスプラットフォームのアプリを作成する利用者にとっても大きなメリットになるでしょう。

Titaniumの使い方として、まだObjective-CやAndroidのJavaにあまり精通していない人でも、とりあえず動作するものが作れてしまう利点を最大限に利用して、動くものを作りながら、徐々にプラットフォーム毎の仕組みを理解し、やがてはそれぞれのネイティブな言語での開発を始めるに至るブリッジの役割を求めるケースが最近増えてきているように思われます。そんな意味では、Swiftを活用するのはいったんエキスパートに任せて、JavaScriptからSwiftを利用しつつ徐々に学んでいくのも悪くないと思います。なんといっても動く製品がなければビジネスも何も始められませんからね。

そうそう、METALが発表されましたが、このあたりはLanicaの人たちに頑張ってほしいですね。

StartSSLをEngineYardで使う

SSLの設定といえば

次ハマったらTATOOしかない。

とそれなりの覚悟が必要なことでも知られていますが、子供もいるのでプールや銭湯に入れるように、ブログに書いて次からハマらないようにします。

StartSSLという格安のSSL証明書を発行するサービスがあります。いえ、嘘をつきました。格安じゃなくて、無料です。無料のSSLです。全てのブラウザでサポートされているわけではありませんが、サービスによっては十分なのではないでしょうか。

自分で設定する場合にはStartSSLのマニュアルを参照すればだいたい事足りるのですが、EngineYardのSSLはお作法が決まっているのでメモしておきます。

とはいえCSRの作成なんかはルーティン作業なので詳細は省きます。

# openssl genrsa -aes128 2048 > server.key
# openssl req -new -key server.key > server.csr

StartSSLは1024bitは脆弱すぎるので受け付けません。作成したcsrで証明書を取得します。

StartSSLの申し込み手続きが完了すると、ca_root.pem、ca.pem、ssl.crtが手に入ります。EngineYardのSSLの登録フォームも名称を除けば3つの入力欄があるのでちょうど良さそうですが、そうは問屋がビジネスしません。

ey-ssl-form

ここには、上からssl.crt、CSRを作成したときに用意した秘密鍵を入力します。秘密鍵はパスフレーズを設定してはいけませんので、解除しておきます。

# cp server.key server.key.back
# openssl rsa -in server.key > server_no_pass.key

残る一つの入力欄ですが、ここではまりました。直感的には中間証明書を入力すれば済みそうなのですが、それだけだと不十分です。EngineYardでは特殊なことをしない限りnginxを利用することになりますが、nginxは中間証明書をサポートしないので、サーバ証明書と結合してあげないといけません。StartSSLの中間証明書はこちらから入手できます。Class 1であればこちらをダウンロードします。最後の欄にはこの中間証明書と、先ほど入手したca.pemを結合します。

# cat ca.pem sub.class1.server.ca.pem > unite.csr

EngineYardのmainのChefが実行されると、この入力欄の一番上と一番下が結合されて1つのcrtファイルに加工されます。nginxの設定ファイルにはこの結合されたファイルが指定されることになります。ファイルは/etc/nginx/ssl/以下(/data/nginx/sslとしてバックアップ対象にもなっているようです)に保存されますので、もし心配な場合は上のコマンドをサーバ内で実行して自分で試してもいいでしょう。/etc/init.d/nginx configtestが通れば少なくとも起動はします。

とにかく、これで3つの入力欄が埋まりましたので、保存してアプリケーション画面でSSLを設定、Applyを実行すれば反映されます。正しく設定されたかどうかSSLのチェッカーなどで確認してみましょう。