2013年9月14日土曜日

Chef ここで詰まった

Ubuntuで使っているPCがあって、環境を手軽に作ったり壊したりしたい。
そんな希望の助けになればと思って、Chefを導入。

http://www.opscode.com/

自分でサーバを立てたり、開発元のサーバを借りたり、あるいは導入先のPCで自給自足したりと構成が柔軟なこと。LinuxとかWindowsとかクロスプラットフォーム性が高いこと。その辺が魅力。

公式サイトや入門書のチュートリアルはスムーズに進むんだけど、実際の環境に適用しようとすると……。いろいろと不具合もあって、なかなか前に進めない。絶賛開発中のホットな製品ならではの楽しさがある。

自分がハマっている問題。

Windowsをワークステーションにしていると、knife cookbook site install が途中でコケる。
 既成のレシピをopscodeからダウンロードしてくるんだけど、tarで展開する時に、パスを'C:/Users/....'とやっちゃうので、必ず失敗する。

gitのリポジトリと同期しようとすると、gitプロバイダがrootユーザのホームからgitの設定ファイルを取り込もうとしてFile not foundになる。
 Chef::Provider::Git with user attribute queries /root/.conf/git/config
 https://tickets.opscode.com/browse/CHEF-3940

なかなか楽にならないなぁ。楽しいなぁ。

2013年8月27日火曜日

社会を良くするには、まず子供の教育から

……って意見がよく分からない。分からないので、端緒として、まず「どのように分からないのか」をブレークダウンするべく、仮説を2つほど立ててみた。
仮説なので、近日のうちにも、遠い将来においても内容も結論もコロコロ変わりうる。そういう種類の文章であることを予めお断りしておく。

1. 現時点での解決をあきらめているという仮説

社会問題として提示されている事柄について、選挙権も経済力も持たない、行動力で大人に劣るはずの子供に希望を託すということはどのような了見であろう。私が想像するに、これは「状況を改善する知恵は、今の我々にはない。そこで、正しい問題意識を身に付けさせた子供が大人になるであろう未来まで先送りにする」ということの言い換えである。
特に、他の対策の補足としてではなく、開口一番にこれを言い出す人については当てはまりそうな気がする。(気がするだけで残念ながら根拠はない)
問題のありどころが分からないまま、「なんとかしなければならない。今何か手を打たないといけない」と焦っている人もいるかもしれない。もしかしたら「この問題は待ったなしの喫緊の課題として、将来の世代に解決を託す」という論述に疑問を感じない人もいるのかもしれない。

2. 子供であれば操縦可能と考えているという仮説

他に思いつくことも無いから心がけを変えるしかない、という結論を一旦アリとする。
しかし、そこで自分たち世代(今、社会を運営している当事者である)の意識を変えるではなく、子供の教育を変えることを手段とするのはどういうことなのだろうか。
心がけの問題なのに、自分の意識を変えるつもりもなければ、同世代の他の大人を説得するのもあきらめたということか。
ここで教育と言われているのは、その領域に精通する専門家を育てろという主張であるかもしれない。が、その場合は、どのような学問領域に、どのような期待をかけているのかが併せて言及されているべきであろう。



大人を説得できない道理で、子供を教育可能であるとされるのはなぜか。社会の成員として、どのような人物像が望まれているか、社会の側から提示できるからである。望まれる人物像の提示は大人に対しても可能だろうと思うが、子供は学校・家庭・地域などに縛られている度合いが大人より高い。であるから、むしろ、望ましくない考え方を排除するのに都合が良いと考えることはできるだろう。
ただし、上に挙げた教育の主体(学校・家庭・地域)のそれぞれの望みが一致していない場合、子供たちは相手によってそれぞれ異なる人物像を演じることを強いられるし、その間の相違が過ぎれば子供自身の人格が破綻しかねない。
この不幸を防ぐには、教育の主体の間で意見の統合を図るのが良いと思われる。が、残念なことに彼らの実体は既に互いの説得をあきらめて、それゆえに子供の教育に活路を見いだそうとしている大人である。積極的に不幸を防ぐ努力は見込めず、文字通りの意味で幸運を祈るしかない。
この不幸を防ぐことができなかった場合、子供としては、自らの判断で特定の教育主体を選ぶか、あるいはどの教育主体に対しても面従腹背の態度を取ることでなんとか人格の破綻を防ぐという戦略をとるしかない。それは将来‘ロクな大人になる’ことをあきらめることを意味するのかもしれないが。

2013年8月10日土曜日

[美談] 数万人を救った、いのちの声

ただ自らの命を惜しんだだけの叫び声が、数万人の人々の命を救うこともある。これはそんなお話です。

その人の名はグレムト・ゲール。大ガミラス帝星銀河方面作戦副司令官です。
いきなりこう言うのもなんですが、軍人としての彼の評判は決して芳しいものではなく、日和見主義者、下品で卑屈な男というのが衆目の一致するところです。彼の実際の行動も、部下の戦功を横取りしたり、ピンチに陥った味方を見捨てて逃げるなど、ロクでもないことばかりでした。

運命の日は唐突に訪れました。時の軍総監、ヘルム・ゼーリック国家元帥が一万隻以上の大艦隊を動員し、自由浮遊惑星バランで観艦式を行ったのです。
そこでゼーリックが告げたのは大ガミラスの臣民からの敬愛を一身に受ける総統、アベルト・デスラーの暗殺でした。
呆然とする将兵。そこに、2発目の爆弾が投げ込まれます。辺境の惑星、テロンの戦艦が単艦で、よりにもよって大ガミラスの大艦隊に殴り込みをかけてきたのです。惑星バランは、まるでドラえもんの工場にネズミが投げ込まれたような阿鼻叫喚に包まれました。同士討ちを避けようとする艦があれば、その一方には味方に犠牲を出してでも敵を撃退せよと言い放つ上司。将兵の混乱と緊張はもう限界です。
しかし、運命の手は容赦を知りません。朗らかな笑い声とともに3発目の爆弾が投げ込まれました。声の主はデスラー総統その人。暗殺が未然に防がれたこと、首謀者が他ならぬゼーリックであることを得意げに指摘します。が、中央の事情に通じた者ならいざ知らず、この場にいる将兵の多くはたった今総統の死を知らされたばかり。もうワケが分かりません。

「逆賊め」

総統の生存。上司の叛意とその頓挫。ましてやゲール自身は総統に何ら含むところはありません。むしろ総統大好きと言ってもいい。ここでゼーリックを撃たなければ、他ならぬ彼自身が逆賊の一味とみなされかねません。そんなことがあってはならない。何よりも大切な自らの保身を願う、心からの行動です。しかし、程度の差こそあれ、この状況はこの場の皆が共有するものであり、ゲールの一途さがこの混乱した状況に一定の方向性を与えていきます。

ゼーリックの命により撃沈されたはずのヤマト。その復活の報告もゲールに対して行われます。この場で主導権を握っているのは誰か。誰の指示に従って行動すべきなのか、それが明らかになった瞬間であります。

「てっ、撤退!直ちに現宙域を離脱しろぉっ!」

この場に集ったガミラスの将兵は、もちろん波動砲の脅威を目にしたことはなく、その結果惑星バランがどうなるかなど想像したこともありません。しかし、ゲールの恐怖に満ちた叫びと、明快な指示が彼らに適切な行動を取らせ、彼ら自身の命を救うことになります。


お偉いさんの気まぐれの観艦式のはずが、突如、本国まで90日という遙かな遠方に理不尽にも追いやられてしまったガミラス将兵。そして、意図せず、大艦隊を指揮することになったゲール。
飢えと渇き、宇宙の難所、部下の反乱、セクハラ疑惑……。様々な困難がゲールと彼に従う大艦隊に訪れることでしょう。
長征10万光年。ゆきて帰りし物語。帰ろう、あの日常へ。もっとも長い90日間の始まりです。

そのゲールを演じるのは広瀬正志。かつては『機動戦士ガンダム』のランバ・ラル、近くは『Fate/Zero』の言峰璃正。少年達に‘大人であること’その意味を叩き込んできた、ベテラン声優であります。


2013年5月31日金曜日

その後の郵便番号検索

ToDoとしていた項目のうち、URIがイケてない問題は解消。
Apacheの設定弄るとか、普段使ったことのない筋肉だからひどく苦労した。(そもそも最初の時点では、Apacheの設定で解決するのだというところさえ知らなかった)

ついでに、サービスの内容をぼんやりと説明するページを作って、トップに割り当てた。ここ。
http://bagend.sakura.ne.jp/zipcode/


元の住所データが123,400行。

そのうち、330行程は住所が長すぎて書ききれなくって2行以上に分割(!)されていた分。
この郵便番号データ、パっと見カンマ区切りなので、いわゆるcsv型式に見える。が、実際には論理的な1件が物理的な1行になっていない不定型なデータだ。分割された行の中での順序の情報とかも入っていないので、とりあえず上から順番に繋げばいいのだと信じるしかない。これを1行に繋げる処理までは実装済み。

これらを繋いで作った123,100件のうち、1,900件くらいが194-0000みたいな「町田市のその他の地区」の番号。
残りの121,000件が「町田市○○町」みたいな町名とか番地に割り当てられている。

そのうち、800件ほどは「○○町1〜5丁目、△△町」みたいな面倒なことになっている。
全体の1%にも満たない量なんだけどね。

この800件をきれいに整理してみせるのが目標。
自分がこの問題に取りかかった理由であり、一番大きな作業である。

この住所データの整理にとりかかる前に、テストを書こうとしてる。
データベース用のロードデータを作成するバッチ部分だけ。Webでの問合せ部分は、あまり弄る必要性を感じていないので。
肝の部分くらいテストを書いておかなくては……という義務感半分。xUnitやmockの使い方に習熟しておきたいってのが半分。

2013年5月21日火曜日

郵便番号

会社員@事務系です。


FizzBuzz問題華やかかりし頃、一部で「業務プログラマ的には、むしろ郵便番号のcsvで腕試ししたいよね」的な話が持ち上がっておりました。

FizzBuzz 問題どや顔で解くひとなんかよりも "KEN_ALL.csv" をうまく扱える人の方が社会的貢献度高いhttp://togetter.com/li/352382


とはいえ、未だ実際にその実装例を見ることができていません。しょうがないから、自分で作りました!
…とドヤ顔で言ってやろうと思って、既にもう8ヶ月。他の問題に手を出したり、プラットホームをGoogleAppEngineからレンタルサーバに乗り換えたり、ほとんど開発と関係ない時間でしたが。


郵便番号→住所
http://bagend.sakura.ne.jp/zipcode/index.cgi/zip2adr?code=1940015

住所→郵便番号
http://bagend.sakura.ne.jp/zipcode/index.cgi/adr2zip?pref=福島県&muni=福島市&street=置賜町

問合せの結果はJSONフォーマットで返します。他のサーバから利用してもらう想定なので。

streetは実際に登録されている町名とユーザーの入力の、いずれか短い方を基準に、前方一致したものを複数返す仕様としています。
上記の例だと「置…なんだっけ?」とか、「いきおい余って、丁目まで入れてやったぜ」という場合に対応してます。
streetに入力された町名がデータ上存在しない場合は末番00の「○○町(以下に掲載がない場合)」になるはずです。


ソースはこちら。
https://github.com/morinatsu/ZipCode

郵便局のサイトから圧縮ファイルをダウンロードして加工するバッチ部分と、そうして組み上げたデータベースをもとに問合せに答えるWebサービス部分にわかれています。
これに、データベース(sqlite3を利用しています)にデータをアップロードする部分まで作りこめば、完全自動でいけるはず。
ただ、上記のソースの開発はUbuntuでやりましたが、運用サーバはさくらレンタルサーバのFreeBSDなので、そのままでは動きません。辛かった…。


TODO:

  • 「以下に掲載がない場合」とか、問合せ結果として、あまり面白くない文言はそのまま使わないようデータを修正させる。
  • 「○○町、△△町、××町」など、町名などが列挙されているものを分解して扱う。
  • 「○○町1丁目〜6丁目」とか、連続しているものも分解して扱う。
  • テストを書く。
  • 意味もなく、パッケージ化を試してみた結果など、意味のなくなったファイルを消す。
  • 格好悪いURL /zipcode/index.cgi/ の修正。mod_rewriteの使い方が…。


上3つくらいはちゃんと実装しておかないと実用にならないし、下3つをなんとかしないと「作った」とは言えないよなぁ。
あと、ジェネレータ関数を作っておいて、json.dumpsでうまく使えず結局list化しているのも何とかしたい。


2013年4月29日月曜日

HK 変態仮面


映画『ダークナイト』を、アメリカ人が自らその正義の拠り所を問う映画であるとすれば、日本人にとってのそれがこの映画である。主人公、色丞狂介はバットマンさながらにマスクを被ることで異形の自警市民、変態仮面となり、その恐怖をもって街にはびこる悪を圧倒していくのである。

この映画の一番の見所は『ダークナイト』におけるジョーカーに相当する役柄を演じる安田顕の怪演であろう。
変態仮面には、ヒーロー映画の主役にふさわしい、ある種の均整美がある。対する彼はそのような均整を全く欠いた純粋な怪物として現れる。
異形のヒーローとしての自分と恋する少女との幸せを願う平凡な少年としての自分の間で揺れる狂介。その狂介に、彼はこう問いかける。「お前は果たして本物か」と。
その問いを発するにふさわしい、彼の本物ぶりとその行く末。ぜひ劇場に足を運んで見届けて欲しい。

HK 変態仮面公式ウェブサイト


2013年4月23日火曜日

リスクと向き合う 福島原発事故以降


「福島原発事故以降」とタイトルにはあるが、原発事故について語っている第一章は全体の5分の2ほど。残りは新聞に連載された著者の半生を再構成した第二章。

著者は研究者として諸々の公害問題・環境リスクに取り組んできた人。彼女がこれまでの人生の中で得てきたものを総括しつつ、さらに震災とそれに伴う原発事故という経験を経て、どういう視点で放射線のリスクを捉えるべきかを論じている。

  • 化学物質のリスク評価法で放射線のリスクを見るとどうなるか。
  • 年間1ミリシーベルトという数字は誰がどうやって出したのか。
  • 彼女のがんのリスクに対する考え方。それがどのように変わったか。
  • 今、どのような研究に取り組んでいるか。


自分が読んでまず驚いたのは、よく分からないと強調されている、低線量被曝の影響について。それでも大抵の化学物質よりはデータが揃っているのだということ。では、データが少ない場合にどのように判断するか。そこに彼女の取り組みがある。

ニュースを丹念に追っている人なら、個々の事例や議論は聞いたことのあることばかりかもしれない。この本では、それらをリスク評価の専門家の視点で整理するとこうなりますよ、というのがわかりやすく示されている。
不安にかられて情報を集めてはいるものの…という人向け。その前に、そもそも彼女自身が信頼できる人なのか…っていう方は第二章も読んで。



リスクと向きあう 福島原発事故以後
中西 準子
中央公論新社
売り上げランキング: 21,848

2013年4月14日日曜日

心が折れそうなビジネスマンが読む本


タイトルから予想されるように、よくある「うつ予防本」。

気をつけなくてはいけないのは、著者および他の人の実体験が元になっていること。ホントに心が折れそうな時に読むと、この本がきっかけで心が折れかねない。

強調されているのは、会社内の非公式な、あるいは会社の外での人間関係の大切さ。それと、兆候のつかみかた。いざ、というときの心構え。

新社会人の時は実感沸かないだろうから、社会人になって2~3年経ったころに読んでおいて、心が折れそうになる前にもう一度読み返すのが正しい読み方なのではないかと思う。

著者の立ち位置か、読者を意識してか、割と会社に対して攻撃的(副業を勧めてたり)なところがある。これがなければ、メンタルヘルスの参考書として会社から社員に勧める本にもなると思うのだけど。





2013年4月6日土曜日

コミックダッシュ!新刊カレンダーのPython2.7対応

久しぶりにDashboard覗いたら、GoogleAppEngineのPythonバージョンが2.7に上がっていて、今使っている2.5が非推奨になっていた。
ちょっと前まで「一部の先行ユーザーで試験的に…」とか言ってたのに。
せっかくだから、今のうちに対応しとくかー。 


コミックダッシュ!新刊カレンダー


久しぶりに、開発用PCのフォルダ開けてみたら、中身がない。一代前の別のPCで開発したのか。
まぁ、こんなときのためのGitHubである。さっそく、cloneして何事もなかったかのように再開だ。 

現バージョンでの稼働確認を取ろうと思ったら、さっそくBeautifulSoup(*1)が見つからないときた。
そりゃ、確かに無いよなぁ。インストールしてないもん。
ただインストールするだけならpipが便利なのだけど、AppEngineに載せるには共用のPython環境ではなく、アプリのフォルダの内側に持ち込む必要がある。
アーカイブをダウンロードし、解凍して、setup.py。懐かしいな、この感覚。

お次はなんだ。findAllメソッドが無いのか。BeautifulSoupのバージョンをPython2.7に対応するものに上げた際、PEP8(*2)に対応していない名前のメソッドが軒並みリネームされたらしい。findAllはfind_allになった。
それでも、やはりfind_allがないと来る。ただし、NoneTypeオブジェクトにはfind_allがないと来た。これはこれは。
BeautifulSoupがバージョンアップしたついでに、動作も変わってしまったようだ。以前は捕まえていたhtmlタグを見つけられなくなっている。

結局、Python2.7対応というよりは、BeautifulSoupと正規表現をいじるのに時間の大半を費やしてしまった。
パフォーマンスとか、取っているのに使っていない要素とか、いろいろ手直ししたいところはあるけれど、疲れたのでやめにした。


*1 説明しよう。BeautifulSoupとは、Webページの内容をPythonで取り扱うためのライブラリとしてメジャーなものである。
*2 説明しよう。PEP8とは、Pythonプログラマなら順守すべきとされているコーディング標準である。逆らっても罰則はない。ソースを読んだ他のPythonプログラマから鼻で笑われるくらいだ。

2013年3月27日水曜日

原発災害とアカデミズム

俺を楽しませるためにがんばれよフクシマ。おそらくは、その3。


惜しい。事故から既に2年が経っている。ここで今さら「とりあえずの解答集」とか出されても困ってしまう。そもそも本書は解答を示してもいない。既存の解答に対する疑問・不満を提示している、というところだ。

この本で描かれているのは、ある日突然に生活者としての戦いを余儀なくされた研究者達の心の声である。彼らの戸惑いとか苛立ちとか憤怒とか恨み節とかが綴られている。
専門外の自分たちには、それどころか専門の研究者にとってさえも「それはまだ分からない」以外の結論がありえない脅威、低線量被曝に対してどう向き合うか。考えあぐねているうちに大学当局は勝手に安全宣言を出してしまった。え?それってアリなの?研究者としてどうよ。


全体の構成とかはなく、12人の著者がそれぞれの問題意識をもとに独自に議論を展開している。紙面の都合で論述が省かれたところも散見される。対象読者は日本語が読める人すべて。(想定した読み手に訴えるより、まずは自分たちの思いを吐露したい、という意識で書かれているように思えた)

とにかく色々と惜しい。研究者にとって拙速や見切り発車が罪であるならば、そう主張する者の本は時間をかけて練り上げられたものであることが望ましいはずだ。逆に今を切り出すリアルタイム性を求めるならば、むしろ紙の本という体裁を選択しなかった方がよかったのではないか。タイミング大事。



2013年2月21日木曜日

2013年2月20日水曜日

まおゆう

子供の頃読んだ、宮沢賢治の本に「世界全体が幸せにならないうちは、個人の幸福はありえない」みたいな言葉が書いてあったのを思い出した。賢治自身の言葉だったか否かは忘れたが。
賢治は田舎のしかも文筆業の人だったので、例え本心からそう思っていていたとしても、実際に世界全体を幸福にするなんてことはできっこなかった。

『まおゆう』は知識や権力、戦闘能力など、現世的な力をたまたま持ち合わせてしまったために、世界全体を平和にすることに実際に取り組まざるを得なくなった男女の話だ。……というような見方をしている。
彼らがもっと横着な性格であれば、適当なところで手を打って、それこそ世界の半分を山分けにすることもできただろう。しかし、それをやるには彼らは生真面目すぎたし、横着の行き着く先がどうなるか見えすぎ、そして彼らの住む世界は分かりやすく不幸すぎた。
彼らの目指す方向(近代化)とか手段が、倫理的にあるいは社会学経済学的に正しいかってのには、あまり興味を持っていない。フィクションの世界の住人に暮らしの満足度アンケートとか、取りようがない。であれば、その幸不幸を云々することさえ机上の空論だ。

そんなことより、彼らと彼らに巻き込まれた人々それぞれの、希望とか、才覚とか、不満とかがどのように絡まっていくのか、そういうのを見届けたい。そういうことを期待している。

2013年2月9日土曜日

囲碁の話

正のエネルギーと負のエネルギー、どっちが生き残るかゲームの始まり。

ビッグバン直後の宇宙。碁盤は宇宙全体の大きさを持ち、かつ無限に小さい。19×19の区域に分けられているが、あくまで便宜上のものだ。

それぞれの区域には、正の物質によって占められる、正のエネルギーで満ちる、負の物質で占められる、負のエネルギーで満ちる、という4つの将来があり得る。

ゲームが始まった時点の宇宙は完全に未確定。分けられた区域のそれぞれがこれら4つの状態が重なりあっている状態で始まる。そこから1手1手が打たれる度に、あり得る将来の可能性は収束していき、宇宙の重さが増していく。


序盤のうちは単なる偶然で進行していく宇宙の成長。だが、石の数が増え、互いに近づくことにより、引っ張り合いや反発が起こるようになり、電磁気学の法則の支配が顕わになっていく。石同士は互いに連結し、絡み合い、原子や分子が形作られていく。石同士の結合によってできたそれらの間にも同様に、穏やかな引き寄せ合い、あるいは激しい反応が起こり、さらに大きな構造に育っていく。構造のスケールが大きくなるにつれて、それらの動きは偶然性よりも、この形であればこう打つべしという、決定論的なものになっていく。


19×19に分け隔てられたそれぞれの区域の状態が確定してしまえば、それは宇宙の成長の余地がなくなったということ。宇宙の死である。


碁を打つ時、詰め碁の本を読む時、ふとそんなことを考えてしまわないようにしたい。