開発合宿最終日

あっというまの開発合宿最終日。

昨日に続きGraphillionのPython3移植作業を行っていた。

ぶじテストコードを全て通し、toxを導入して、いくつかユースケースを通してまあ問題なさそうだと判断したのでPRを出した。

で、さらにユースケース通してたら何かエラーがでる… しかもC++レベルでのエラーで、エラーになるケースとならないケースが存在するとかいやなかんじ。 しょうがないのでC++のコードを読みつつ作者の気持になって考える作業をし、 なぜここで , を含む文字列を弾いているのか、ここになぜ , が入るのかを考えること数時間。

pickleおまえか

pickleのプロトコルがアップデートされ効率的なバイナリプロトコルになっているのが問題だった。 つまり , と解釈されるバイナリ表現になったときにC++レベルでは不正な文字列として弾くようになっていたというオチ。 なるほどね。

そんなこんなでPRを更新して合宿終了。

帰りのバスではぼーっとして、紹介してもらったそば屋によろうかどうか考えるような考えないような時間を過ごしていた。

そば屋

上田のそば屋は食べきれないほどのそばを出さないといけない呪いにでもかかっているのだろうか。

帰りのバスを途中下車し紹介してもらったそば屋に結局行った。

ここのそば屋では並盛の上に中盛りがあるという…という瑣末なことはおいといて、 普通盛りで、なんで、桶ででてくるかな。 細麺で、コシもしっかりしてて、そばの風味もちゃんとしてるのに、 量が多い。

他のメニューの店ではここまで量多くないのに、なぜそば屋…

完食しました。

お土産に栗おこわ

これは相変わらず。

今回は冷凍の栗おこわも選択し長い期間楽しめることを目論んでみた。

Sphinxの検索にはMecabがよい?

今年導入したばかりのOktaviaなのだけれども詳しい人に聞いてみると、 Mecabがいいよ、とのこと。ふむー。

開発合宿

外は雪、滑らないので開発するしかないじゃない。

何やるかちゃんとは決めていなかったけれども、結局懸念事項だったGraphillionのPython3対応をすることに決めた。 これは過去何回かCythonで移植にトライしていずれも挫けた過去をもつ案件で…Cythonで書くの本当に面倒なのだよな…

今回は手段を変え、直接C APIレベルでの移植することに。

まあ、そのままコンパイルすると通りませんよね。

とりあえず移植のためのC APIレベルでの差異について調査。

おおきくわけて

  • 文字列の変更(ユニコードが標準の文字列になりバイト文字列が導入されるするようになった)
  • モジュールの定義に使う構造体が変わった
  • メソッドの定義に使う構造体が変わった

幸い先行者が何名もいて、情報には困らないレベルだった。 あ、構造体の定義が変わったのはコンパイラさんに教えてもらったのだったな。

あと sixfuture に対応するC APIレベルでの互換ライブラリをノウハウごと公開してくれていたのでそれを利用した。

py3c

作業してる最中に自分のCやC++の技能レベルが下がっていないことを確認して驚きつつ、 ちまちまと作業やパッチ送ったりなんなにしたらコンパイルは通るようになった。

まあそこからも長いよね。 コンパイラさんの指摘がなくなったのでテストコードを流しつつ、失敗した箇所の理由を特定し、 デバッガ仕込むの面倒だったのでprintデバッグでPython2.xとPython3.xでの挙動を確認しつつ原因を究明していった。

そんなこんなでテストコードの8割くらいは通るようになった。 Cythonで頑張ってたときはそもそもコンパイルが通らなかったのですごい進捗だなあ。

あいかわらず美味しいペンションのご飯をたべつつ早めの就寝。

大根おろしのみぞれ鍋と馬刺しって、もうご馳走じゃないですか。

まだ時差ボケしてた。

そば

合宿初日、いつもの刀屋で昼食にそば。 温泉宿の朝食がおいしくて米を食べすぎていたので普通より少ない中に。

行きのバス

15分くらい走ったところから記憶がない。 ルートが変わっていたらしいです。

ペンション

雪は相変わらず積もっててやっぱり寒い。 今回は滑らず持参した本を消化しつつなんかするつもり。

VPNでSSHが繋がらない…仕事がちょっと残ってたのでテザリングでしこしこ作業してました。。

ハイパフォーマンスPython

去年のPyConJPで原書が展示されていたやつ。 去年のうちに翻訳本が発売されており、買ってはいたのだけれども読む機会がなく今日にいたる。 Pythonに関する最適化をメモリのアロケーションとかからクラスタリングまで網羅的に紹介する本でした。 あー、わたしが書いてもこんな紹介するなと思ったかんじでした。 これは…対象読者がすくない系の大変な本だ。

紹介の方法が具体的なコードがあるところが多数で、使い方の導入になっているのがよかったです。

説明だけになっているところは…あまり時間がとれなかったんだろうな…。

温泉宿

明日からの開発合宿に先立ち別所温泉に行ってきた。 ちょっといいお値段のプランで申し込んだせいもあり、日頃うけることのないもてなしをされ挙動不信な反応をしてしまったのはいたしかたない。

この地域は以前、薬用人参の栽培が盛んだったらしい。 夕食のスープでだしてもらったけれども、ちょっとポタージュっぽくておいしかった。

ほか、食べ物の話だけれども、クルミとチーズ、マスカルポーネチーズと干し柿の組み合わせは新鮮だった。

泉質は単純硫黄泉で若干の匂いくらい。皮膚に刺激があるほどではないのでゆっくり入浴できた。

地域的に山間で静かなところだったのでノイズが少なく自分を見つめる時間をとれて満足した。

あんかけやきそば

別所線の出発駅である上田駅周辺にはあんかけやきそばが昔からある料理らしく今回気になったので食べてきた。 あんかけはやまのほうのそれ、野菜がたんと入っていて、あん自体はちょっと甘め。 そして麺は錦糸卵のように細いものを焼き固めているかんじのものでした。

好みよりかいくぶんか甘かったのだけれども、酢をまわしかけたらイケるかんじの味になり、 全部いただけました。 あと一緒にたのんだ小わんたんは普通の量くらいあった。こちらは醤油の塩気が効いてていいコントラストになってました。

別所線

鉄道むすめでした。

しなの鉄道

りんご売ってた。なぜ。

redisクラスタ

redisは3.0からクラスタ機能がついていてマルチマスタ構成をとれるようになっている。 もちろんレプリケーションも搭載されているし、マルチマスタなので負荷分散の効果を見込める。

…なのだけれどもネットワークを分ける機能が足りていないような気がしないでもない。 レプリケーション、仕様みたかんじだと通常のポート+10000番を使ってるっぽい。 だけどそれだとNIFは同じものになって帯域食ってしまわないかな。

iptablesレベルでポート指定で宛先書き換えとかで対応するのかもね現状は。

対してKafkaはAdvertiseの仕組みでクライアントに通知するアドレスとクラスタ内で使うアドレスを分けることができる。

https://github.com/antirez/redis/issues/2527

という観点で調べてみたらでてきましたよ。3.2から使えるようになりそう。:

I don't think there is a simple way to make this backward compatible at binary level.
I tried but it adds a lot of complexity, so basically this feature will not back ported to 3.0, will be 3.2 only,
and when upgrading a cluster there will be to restart all the nodes with 3.2, since 3.0 <-> 3.2 chat will be impossible.

なるほどね。

時差ボケは続くよ

今日も20時くらいには就寝して2時くらいに起きる。 えーと市場勤務でしたっけ私。

スタミナ丼のミニの存在意義

あの味が恋しくなることがあるのだけれども、あのデフォルトで多い量を食べると一食分になってしまうので、 ってときにとりあえず軽食として味わって満足するのに適した設計になっていると思いました。

小食…なんですかそれ日本語ですかね?

眠い日

時差ボケがあいかわらずで昼食のあと家族を駅まで送り出してスーパーへの買い出し終えたら眠くなってそのまま夜に。 何やってたんだろう今日は。

Selenium WebDriverとAppium

まだ調査中なのだけれども。

まずSelenium2.0がWebDriverという仕組みをもっていて、テストをおこないたいコード、クライアントはそのAPIでリクエストを投げるとドライバがうまいことブラウザを操作してくれる。 これは WebDriver Wire Protocol を使ってやりとりされる。

よってC/Sモデルに従っているのでサーバを置き換えることができる。 モバイルに特化している Appium というものがある。

Appiumはシミュレータや実機でのテストにも対応していると謳っているのだけれども、実機へのセットアップがやっぱり難しい。 Sauce Labs が使っておりXaaSで提供している。

帰国

一週間の出張を終え帰国した。 行きは日付変更線の向こうへ行って日が増えた気がしたけれどもやっぱり戻ってきたら変わらなかった。

コードシェアのときはその運営会社ではなく実際の機材の会社でチェックインしないといけないらしい。 またオンラインではその機材の会社でしかできなく、また運営会社と機材の会社では管理番号が違うので、 機材の会社の番号を調べてやることになるらしい。 オンラインチェックインできなくてよい席を確保できなかったので次は気をつける。

帰りの飛行機でANAの機体だったので久しぶりに席に置いてあるサービスメニューをみたら、ANAオリジナルのドリンクがあって、 たまにはメニューをみてみるのもいいものだと思った。なお甘過ぎた。

いつも飛行機に乗るときにはあえて和食をはずしていたのだけれども、そんなこと気にせずそのとき好きなものを頼めばよいのだなと思った。 あとアイスは食べたくないときがあるのでオプションにしてもうちょっと安くならんのかな。 やっぱり日本の会社のサービスはいいのだけれども、そこまで必要じゃないんだよな正直…機体さえメンテされて席の間隔に余裕があれば。

時間は遅延しつつも、都内ではトラブルなく、最寄り駅からは雪残ってるのにタクシーがつかまらなく徒歩で帰ってきたけれども、 帰路はまあまあな感じで帰ってこれたのでよしとする。

帰途にて食べた馬賊の担々麺はちょっと値上げしてたけどおいしかった。

孤独という話

以前から同意はしているのだけれども日本にいると空気読めや慣れに影響されて忘れてしまうのでメモしておく。

コミュニケーションは齟齬があることを基本として最終的には自分で決定するしかない。

疑問が残るようだったら、手段として、違和感を感じた語句の意味しているものの説明を求めたり、 自分が感じたことを説明して、相手が意図した内容だったかを確認する必要がある。 それでも失敗したら責任を引き受けるしかない。 もしかしたら相手はそもそも間違った知識を信じて、誠意もって対応しているだけなのかもしれないのだから。

今回の帰国のスタートとしてホテルからバスに乗ったのだけれども、バスの運転手は英語を喋る中国人のおっちゃんだった。 SFOは国内線や国際線のターミナルが別なので国際線のターミナルへ行かなければならないのだけれども、 どうにも国際線のターミナルはどこだと質問をしていた乗客にその国内線のターミナルで降りて乗りかえろと言っているようだった。 その乗客は降りていってしまったのだけれども、やっぱり国際線に乗りたければ別の場所で降りるのが正解だった。 (私はそこで降りるのが正解なのか分からなかったので道路の道案内を信じ車内に残ったが、人にアドバイスしてするほどは確かには知らなかったので黙っていた ここでI think ...といって自分の意見を述べるのがアメリカ、それかもっと広く、英語圏の文化なのだろうな)

国際化の重要性とプロトコルアップグレードの類似性

SFOのANAカウンターにて、受付の人と最初は英語でやりとりをしていたが、パスポートを出したら向こうも日本人だったらしく日本語でやりとりするようになった。

これって最近のだとHTTP/1.1でのやりとりのなかでクライアントがHTTP/2.0へのアップグレードを要求してそこから通信が高効率でできるのと似ているなと思った。

で、これってプロトコルアップデートというだけでなくて、単にサイトの国際化がされているってだけでも同じような効果があるんじゃないかと。 つまりサイトが国際化しているとそれのネイティブな利用者との時間あたりのコミュニケートできる情報量が増えるといえるのではないか。

7年来の友だちに会った

サンドウィッチの写真をFacebookに投稿したら最近ほとんど音信不通だった友だちから連絡があった。 2ヶ月ほど前にパリからサンフランシスコに引越したそうだ。

話はとんとん進み今日サンフランシスコに行って会ってきた。

(本題からは離れるが、この会いたいということをチームのメンバーにいったら週末の宿をSFOの近くにとってくれた。感謝している)

あいかわらず身長は高く、そして7年の月日は彼をギークからファッションを纏うナイスガイなギークに発展させていた。 奥さまの貢献は偉大だ。

いまは反対岸のオークランドに住んでいて、ビザが5年あって、ビザを手に入れるのにメチャクチャ書類書いてインタビューしてという苦労話を聞かせてくれた。 こちらではまだ比較的低所得だけれどもリッチになる可能性がパリよりあるらしく望み高く活動しているようで、ぜひ頑張ってほしい。

本屋を紹介してくれて、妻への土産をいっしょに選んでくれた。

時間は偉大だ。本当にいい男になっていた。

口を開くと相変らずな調子だけれども技術にも明るく楽しい時間を過ごせた。

環境は行動に作用するか

現時点では作用するを支持する。

複数の要因がからむので一概にはという話はもちろん同意するが、すくなくとも高級ホテルのロビーで書いたこの日記の文体がフォーマルなのが証左だろう。

追試が必要だ。

肉の日

朝食のAll American Subから始まり、昼食の中休みを挟み、夕食のシュラスコを決めた。

サンドウィッチ

写真では伝わりにくいかもしれないけれども右の水のボトルは1Lです。

../../../_images/IMG_1518.jpg

ランチはイタリアンっぽい何か

アメリカンイタリアンデリバリーのようなもの。 スパゲッティとかラビオリとかのパスタとりあえず全部トマト味。 あとはサラダというなんとも、うん、中休みにはちょうどよかった。

アーティチョーク

そうだよ。肉の記憶の向こう側へ忘れてしまうところだったよ。 シュラスコ屋さんのビュッフェで念願のアーティチョークを食べました!!

味は他のものに例えるのが難しいかんじ。アーティチョークとしかいえない。 ユリ根とも違うしな…。

今しらべてみたらチョロギも英米ではアーティチョークと呼ぶらしい。なんだって!!

仕事の話題がまったくでてこないなと思った

単にNDA的に公開するかもしれないところに書いておけないっていうのはあるのだけれども そもそも汎用なものが少ないので記録しておく必要性を感じないというのもおおいにある。

あ、Gohanはいい製品だと思いますよ。

ユースケースを食わせて製品を鍛えるという表現はエンジニア独自なのかなと思った。

仮想マシンを動かすだけじゃもう足りないフェーズなのかもね

後発の仮想マシンをネイティブのハイパーバイザで動かす製品がMacでもではじめてきたけれども あまり食指が動かないので何でかなと考えた結果、仮想ネットワークを思っている通りに組めない製品はもうそれだけでは魅力あるものではなくなってしまったのではと。 もちろん自身の興味の向きがってのもある気はするのだけれども。

仮想マシンを動かしたいというモチベーションは、その仮想マシンの上で何かしらのアプリケーションを動かしたり開発したりしたいというがあっての話なので、 またそういうものは単体で動く以上のことをするのが珍しくなくなってきている、 つまりネットワークを使って外部とコミュニケーションをとらないケースが逆に珍しいのでってのが大きい。

ネットワークがコントロールできていないと、例えばクラスタを構築するミドルウェアの実証実験はまずもって正しく評価できない。あとはクラウドの制約であるブロードキャスト/マルチキャストパケットの破棄をシミュレートしたりという環境が構築できない。帯域を制限させてネットワーク遅延な環境とかも構築できないとアプリケーションの信頼性が…とまあ意外に色々あった。

OpenStackの言葉で何を思っているかを表現すると、 Novaでインスタンスを動かすだけでは足りなくなって、 Neutronでネットワークを使いたくなって、 それをポチポチコマンドで叩いていくのもダルいよね、最低限Heatは使えるようにしたいよね。 というかんじである。

あと別レイヤーの話で家庭でもアプリケーション動かすのに環境を整えるの面倒だよねというモチベーションがありPaaSの気運が高まってきている。 CloudFoundryがよさげなので調べてみようと思っている。

もちろん個人ユースのゲームとか事務作業に使うものとかは除く。

よく働いた日

モーテルに帰ったら22時。 近くのレストランでディナーを食べておやすみなさい。

メニューにOctopus Grillがあったので頼んでみた。 オーブンでグリルして酢が効いたソースをかけたらマリネしたかで結構いけた。

一緒に頼んだルートビアはグラスに氷がたんと入ってて水っぽくなってて微妙だった。 シカゴピザ屋で飲んたIBCルートビアは美味しかったな。

ランチはメキシカン

トルティーヤチップとサルサソースくらいしか思いだせない。 まあ他にもソースぽいものだった気がするので、小豆を煮たようなペーストもあったかな。 あとは…タコスはなかった。

グローバルスタンダードのクオリティと日本語話者の強み

まあ一例ということはふまえつつ。

かのシリコンバレーにある企業のサポートでもJVMにルート証明書をインストールする方法をしらなかったり、 英語が喋れるというだけで現場投入されンガンンだったり、 Backpainといいだしたらフェードアウトするシグナルだったり、 という話を聞いた夢をみた。夢ですよ。

あと日本人のとくにエンジニアは何か調査したら情報を日本語でまとめて共有する傾向が他より強いらしく、 日本語を読めない非日本語圏から情報を検索してくれと依頼されることがあったんだとか。 という話を聞いた夢もみた。