2013年11月24日日曜日

ゆっくりとRuby on RailsからPHPに移行(回帰)しています。

時々、ウェブ関連のシステムを組むことがあります。
そういう仕事が入った場合、ここ数年は、Ruby on Railsを使ってきました。
でも、ここしばらくで、ゆっくりとPHPに移行しようとしています。フレームワークも、必要に迫られなければ使わないで、できるだけplainなPHPで仕事しようとしています。
plainなPHPのほうがRailsよりずっと昔からポピュラーだった技術ですので、現在Rubyをメインに使っている人の中には、PHPの経験豊富な人も多いと思います。けれど、僕は、Rubyメインで仕事をするようになる前は、ずっと、JavaとPerlをメインに仕事をしてきました。ですので、PHPを仕事の中心にしようとするのは、今が初めてです。

ひょっとしたら、時代に逆行しているのかもしれませんね。

PHPに移行(回帰?)しようと考えている理由は、以下のとおりです。

1,RoRは変化が早くてついていくのが大変。
Railsは頻繁にバージョンアップがあり、バージョンアップの際、下位互換性が犠牲になることが多いです。もちろん、このことは決して悪いことばかりではありません。フレームワークが新しい技術を取り込めば、開発者は、新しい便利な技術を簡単にとりいれることができますから。新技術の取り込みと下位互換性は、トレードオフの関係にあります。Railsは新技術の取り込みの方に重点を置いている、というだけのことです。
ただ、今の僕にとって、ウェブ開発は仕事の中心ではありません。そういう僕にとって、新バージョンにキャッチアップするコストは馬鹿にならないのです。

2,RoRは手離れが悪い。
僕は、兼業でエンジニアをやっているので、時間の都合上、作ったプログラムの運用までやっていられません。納品後は、基本的に、発注者の方で運用してもらうことになります。
ところが、Railsを使って作ったサイトは、非常に手離れが悪いのです。
随分改善されたとはいえ、Railsで作ったシステムは、動作環境を選びます。とりあえずApacheさえあればあまり環境を選ばず動くPHPに比べると、Railsは、運用したときにトラブルが起こることが案外多いのです。自然、納品後のサポートが必要になることが多いです。それに、フレームワークの進歩が早いので、Railsを使って作った古いサイトにちょっとした機能追加をしようとしたりすると、新バージョンのRailsに合わせてコードの多くを書き換える必要が出てくることが多いです。そうしますと、ちょっとした仕様変更の際に、どうしても、最初の開発者が面倒を見る必要が出てきてしまうことが多いように思います。

3,開発環境を選ぶ。
現在、僕は、コード書きをはじめ、PCを使って行う仕事のほとんどを、Linuxをインストールしたやや小さめのノートPCを持ち歩いて行っています。仕事の中には、ワードやエクセルの文書を作ったりするものもあります。
仕事の場所を選ばず、スキマ時間で仕事ができるのがメリットです。
ただ、最近、持ち歩いているノートPCを重たく感じるようになってきました。老化したんでしょうかね。そこで、持ち歩くマシンを、より軽量のノートか、もしくはタブレットに変えたいと思っています。
問題は、
A, RoRは、Windows版のrubyでは、結構トラブルが多い(そうなるとRoRの開発には、LinuxかMacOSX、もしくはvirtualboxのような仮想環境が必須になります)。
B, virtualboxをストレスなく動かすには、結構高いスペックのPCが必要(安価なタブレットPCにはハードルが高い)。
C, 最近のWin8搭載のタブレットPCには、OSをLinuxに置き換えて安定して動かした実績のあるものが少ない。
D, 必然的に、購入候補はMacBookAir一択になっちゃうんだけれど、僕はマック嫌いなんだなぁ。

というわけで、買うものがなくなってしまうのです。これが、PHPであれば、Windows上のApacheでもなんとか動作環境を整えられる(もちろん、本格的な開発には苦しいこともあるのですが、とりあえずこれで十分だと思います。必要なときにはvirtualboxを使えばいいのですから。)ので、随分選べるものが増えます。
特に、最近、物欲が刺激されて仕方がないSurfacePro2が選べるのは大きいです。

そんなわけで、ゆっくりとPHPに移行しています。ただ、実際に移行し始めると、Railsでは簡単にできたコレがPHPでは難しいなぁ、と感じることも多くて、結構大変です。

近いうちに、そのへんのことも書こうと思います。

それではまた

2013年11月22日金曜日

邪馬台国とベイズ統計学

先月の文藝春秋の記事です。邪馬台国の位置をベイズ推定で推測するという話。書いたのは安本美典という人です。全く存じあげない人ですが、この記事は非常に面白い。

以下は、この記事について、僕の理解です。

邪馬台国については、魏志倭人伝に様々な記載があります。こういう物を中国から下賜したとか、邪馬台国には、こういうものがあったとか。で、それと似たようなものが日本の各地から出土しているわけです。

もし、その出土品のうちのどれかが、文献中に記載があるものと同じものとわかれば、それで邪馬台国の場所は、ほぼ確定してしまうわけです。たとえば、「奈良市内のドコソコから出土した鏡が、実は、中国の文献中に記載のある、魏から邪馬台国に下賜した、あの鏡そのものである」という証拠があれば、それで、邪馬台国は奈良にあったという強い傍証になります。

問題は、日本の各地から、銅の鏡があまりにたくさん出土していて、そして、もちろん、そのうちのどれかは魏の文帝(曹丕)から卑弥呼に下賜された、あの鏡なのかもしれませんが、どれが、その鏡なのかということがさっぱり分からないということなのです。

では、出土している鏡が、いずれも、一定の割合で、邪馬台国に魏国から下賜された、あの鏡である可能性があるのだと考えてみましょう。そう考えると、魏の鏡である可能性が高い鏡が大量に出土している場所は、邪馬台国であった可能性が高いということになります。

安本氏の、ここから先の議論は、臨床試験などで医師が行う議論とほとんど同じものです。ある現象が体の中で起こっている確率を見積もるために、まず、一定の検査前確率を考えて、それから、一定の尤度比を持つ検査をいくつか行います。その後、検査することで、検査前確率は検査をするごとに変化して、最終的に、目的の現象が起こっている確率を推測できるわけです。安本氏は、鏡以外のいくつかの出土品のデータを「検査」として使って、日本中の各県に邪馬台国があった確率を推定しています。

さて、現代的な臨床医学を行っている身としては、この議論、随分ツメが甘いと思いました。

甘いと思った点を列挙します。
1,これらの「検査」の前の「検査前確率」について。
検査前確率は、これまでのこの分野の議論を踏まえて、ある程度合理的に決めるべきだと思うのですが、どうも、記事からは、そのあたりが曖昧に思われました。

2,各出土品を用いた「検査」について。
尤度比を出土品の数に比例すると考えて議論しているようなのですが、ここは、もうすこしきちんとした議論が必要なのではないでしょうか?
出土品は、いずれも弥生時代末のものです。これらの遺物が現代まで地中に保存される確率というのは、どの程度のものなのでしょう?また、地中にあるこれらの遺物が発見される確率というのはどうなのでしょう?
こういった確率は、出土品の種類によって変わるのではないでしょうか(たとえば、大きな剣と小さな鏡とでは、保存される確率や発見される確率は同じといえないのはないでしょうか?)また、地中にある遺物が発掘される確率は、開発の進んだ都市部と、農村部や山地では、大きくことなるのではないでしょうか?
こういったことの考慮が随分甘い気がします。

3,各「検査」の独立性について。
この記事では、事前確率にすべての「検査」の尤度比を単純に掛けて、最終的な確率を算出しています。つまり、それぞれの「検査」の結果は、互いに独立だと仮定しているわけです。でも、本当にそうでしょうか?
鏡や剣や銅鐸など、それぞれの出土品の出土する確率が独立とはとても考えにくいと思います。

いろいろツッコミどころもあるのですが、しかし、この種の歴史に関する議論にもベイズ推定のような手法が使われるというのは非常に面白く感じました。このような手法は、歴史学や考古学の世界ではどれくらい一般的なんでしょうか?

いろいろ、興味深い記事でした。

kindle paperwhiteのサポートに感動しました。

先日、僕の愛用のKindle paperwhite 3Gがお亡くなりになりました。
画面が下の画像のように、画面の一部が割れたように三角形の破片のような図形が現れて、その部分の表示が変わらなくなってしまったんです。どんな本を表示しても、画面には、真っ白の三角の破片と、真っ黒の三角の破片、それからグレーの三角の破片が写り続けています。

壊れた時間は、午前2時。どうしたらいいのかわからなかったんで、とりあえず、「kindle paperwhite 壊れた」
なんてグーグルに入れて、調べてみました。すると、アマゾンのサポートページがヒットしました。そのサポートページを見ますと、どうも、サポート電話なるものがあるようです。

「あの、うちのkindleの画面がおかしいんですけれど。」
「はい」
「画面の一部が変になって」
「画面を何かにぶつけたとか、そういうことはありませんか?」
「いえ、ありません。」
「アマゾンで購入した書籍の他に、なにか、お客様の方でデータを入れたりはしていませんか?」
「いいえ」
「そうですか。それでは、今から代わりの新しいkindleを無償でそちらに送ります。」
「今からですか。本当にタダなんですか?」
「はい。ええと、早ければ本日の午前9時までには新しいものが届くと思います。」
「あ、そうですか(ええ!そんなに早いの?)」
「はい。ただ、現在の在庫の関係から、お客様のお持ちのモデルではなくて、最新のモデルしか配達できないのですけれど、それでよろしいでしょうか?」
「え、もちろん、構いません。」

実際に新しいkindleが届いたのは9時頃でした。
ええ、サポートが迅速すぎて感動しました。
たぶん、次に買うのもアマゾンになりそうです。

ビッグデータ嫌いです。

いや、僕は、統計でメシ食ってたこともあるし、データマイニングみたいな論文も書いたことあるんですが、そういう話ではなくて、

最近、アマゾンでネルソンの小児科学のテキスト買ったんです。クレジットカードで、です。

すると、しばらくしてから、疑義照会(?)みたいな確認の電話がカード会社からあったんですね。

確かに自分が買ったものですと伝えると、別にそれ以上何も言われませんでした。この本、ご存じない方も多いかと思うのですが、小児科医の勉強するテキストとしては、一番ポピュラーな本です。つまり、カード会社のビッグデータによると、お前が小児科の勉強するのなんておかしい、というわけです。

何が気に入らないって、僕は、先々月、そのカードで聴診器買ってるんですよ。で、その時にも、カード会社から、確認の電話がありました。ええ、確かに僕が買ったものです。そういうとそれ以上のツッコミはありませんでしたが。

そのときに、少なくとも、僕が、聴診器を買うような種類の人間だとわかったはずだと思っていたんですが、どうなっているんでしょうね。

僕は、一応、医者ですし、小児科専門とは言いがたいですが、初期研修は小児科で研修しましたし、結構、小児患者診るんですけれどね。

いったい、信販会社のビッグデータは、どういう理由で僕が怪しげな医者だと思い込んでいるんでしょうね。

似たようなことは、べつのところでもありました。githubというプログラマ向けのサービスをしているサイトがあるんですが、そこにログインしようとすると、いつも、
「アンタは、本当に人間か?サイトをクロールしてるロボットじゃないの?」
と聞かれるんですね。他の人に聞くと、そんなこと聞かれてるのは僕だけのようです。医者じゃないだけでなく、人間であることすら怪しくなってきてしまいました。

どうなっているんでしょうね。本当に。

全然納得できないのですが、今日はこのへんで。

それではまた。

ローラーボール(水性ボールペン)の改良について

僕は、万年筆が好きです。
スラスラヌラヌラした書き味が気持ちいいのもありますが、たくさんの文章を書いていると、やはり、万年筆のほうがボールペンやシャープペンシルよりも手が疲れにくいのですね。これは、万年筆のほうが筆圧が低くなるからじゃないかと思います。

ただ、万年筆は、ボールペンなどに比べると手入れや扱いが面倒です。

そういうわけで、最近は、ローラーボール(水性ボールペン)を使っていることが多いです。水性ボールペンは、安くて、万年筆のように面倒がなくて、その上、筆圧が油性ボールペンよりも低くても書きやすく、インクの出方なども万年筆に近いのが嬉しいのです。

ただ、どうしても、水性ボールペンと万年筆の違うのは、ペン先の弾力です。万年筆は、少し強い筆圧をかけると、ペン先がたわむので、構造上、あまり強い筆圧をかけにくいのですが、水性ボールペンだと、ペン先に弾力がないので、僕のような、もともと筆圧の高い書き手は、緊張すると、だんだん筆圧が高くなってくる。
そうすると、手が疲れやすくなってきて、結構しんどいわけです。
特に硬いデスクの上で下敷きなどを使わずに書き物をしていると、もう大変です。手首から手のひらにかけて、あちこちが痛くなってしまいます。

で、常々考えているのですが、水性ボールペンに、少し強めの筆圧がかかると、新がわずかに引っ込むようなバネをつければ、さらに万年筆に近い書き味の安価で実用的なペンができるんじゃないかと思うのです。
ノック式ボールペンのように、芯の後側にバネがついたボールペンはいくつもあります。そういう構造は、作るのはそれほど難しくないように思うのです。

だれか、そういう水性ボールペンを作っていないものか、少し調べてみると、似たようなアイデアは、他の人も考えていたらしく、いくつか、特許や実用新案が出ています。

ボールペンの芯の後ろに、弾力性のある部分をつけることで、下敷きが不要になり、書き味がなめらかになる効果があるというものです。
こちらは、ボールペンの芯に弾力のある部分をつけたものですが、これも、同じ効果を狙ったものです。

ところが、現在のところ、そういう商品は売られていないようなのですね。
アイデアは昔からあるのに、実際の商品としては売られていないというのは、なにか、実際に使ってみると、予想外の面倒な問題があるのかもしれません。

少し余裕ができたら、この、バネ付きボールペン、自分で耕作して作ってみようかと思っています。

それではまた。