ぱいぱいにっき

Pythonが好きすぎるけれど、今からPerlを好きになりますにっき

#builderscon tokyo 2017に行ってきました, 階差機関と3Dプリンタの話をしてきました

書こう書こうと思っていたのですが遅れました。ちなみに2016の記事も眠っております。今更出す訳にはいかないやろ……。そんな感じで自分の中のワナビー属性を再確認しました。

さて去る8/3〜8/5にかけてbuilderscon tokyo 2017というものが行われたのでそれに行ってきたり、トークをしてきたりしていたのでその感想ブログというわけです。

builderscon.io

印象に残ったトークの感想

複雑なJavaScriptアプリケーションに立ち向かうためのアーキテクチャ

builderscon.io

ベストトーク投票3位のトークです。内容としてはGUIアプリケーションでいい感じにレイヤーを分けつつきれいに設計するには? みたいな話です。

僕は仕事ではまさにアーキテクト的な立ち回りをする事が多いのですが、設計に関しては他人のコードを読んで実践するという感じであんまり本に当たったことはありませんでした。そんなわけで去年とかもこのトークのスピーカーであるしんぺいさんがヤッパチーでやったトークを聞くまで「CQRSって何?」状態でした。聞いて「ああそれに名前ついているんだ」という感じです。こういう概念の話というのは自分でググるのは難しいです。何故かと言うとそれをなんと呼ぶのか難しいからです。というわけで人に聞くという手段を取るわけですが、周りにそういう人がいないと難しい。というわけでカンファレンスという場で体系的な知識をかいつまんで聞くというのは正統派なカンファレンスの利用方法ではないのでしょうか。

しんぺいさんはとっつきにくい概念を具体例に落とし込んで聴衆に理解できるように話すという点でとても優れたスピーカーであると思います。僕も投票しました。スピーカーとしても見習いたい。

Factory Class

builderscon.io

Jesse VincentさんといえばCPAN Authorという感じだったのがキーボード作って売っていたという話で、これは去年のbuilderscon tokyo 2016にも動け!Golang 〜圧倒的IoTツール開発へようこそ〜 - builderscon tokyo 2016というトークがあり、こちらも工場の話がありましたが、今回の話も工場関連。

僕は物理的な物を作るというのはやっていますが、それを製品として数百個数千個単位で売るというのはやったことがありません。ソフトウェアの世界でもProof of ConceptレベルのものもあればProduction Readyなものもあります。僕のはPoCレベルでこのトークで語られたキーボードはまさにProductionと呼べるものです。このような複雑な製品を個人で数千個作るのは出来ないので当然工場に頼むわけですが……トークを聞いているとkickstarterやindigogoでリリースできないガジェットがたくさんあるのがわかってきます(当然それだけが原因ではないのですが)。

マチュアがプロに頼むとカネがかかる、つまりぼったくられるという話はよく聞きますが、まさかやってくれないみたいなこともあるのかと思いました。途中「あなたが製造工場にとって取るに足らないほど小さな規模の製品を依頼しているのであれば、約束を反故にされる」みたいな話があったと思いますが、万全を期すために実力のある相手と組むことが逆に悪い方向に働くことがあるんだなあという新たな知見が得られました。今後の人生に活かしていきたいです。

The Evolution of PHP at Slack HQ

builderscon.io

みんな大好きSlack、みんな大好きPHP、そんな大好き同士は実は関連が深かったみたいな話、というかSlackはPHPで主に作られていますという話です。

会社でもSlackは使っていますが、概ね問題なく使っており、ボットおじさんとしてはAPIが豊富なのが良いという感じです。絵文字もカオスになっております。

Slackは他にもGoを組み合わせているようでそのあたりの組み合わせの話も聞けるかなと思ったのですがそうではなく、結構レガシーをモダンにするという話です。というかPHP5系をHHVMにするという「オッやっておりますなー」という話でした。でも実際に動いているからすごい。こういうこと言う人はいっぱいいますが、ちゃんとやりきっている人は貴重です。大変参考になります。話を聞いているとHHVMがやはりそういう既に動いている5系のアプリの移行をガッツリ想定しているからか、言語デザインやエコシステムとしてスムーズに行っている印象があります。またCanaryサーバ的な構成でデプロイしつつ比率をどんどん上げていくみたいな話も面白かったです。今回やっていきたいイチの話でした。

さてキーボード作る話もそうでしたが、今回も同時通訳がバリバリ活躍しておりまして、このトークの「びっくりタイプ変換」という訳は大好きです。スライドでもSuprise Type Conversionみたいな記述があったので直訳っちゃあ直訳。。。

自分のトーク

builderscon.io

3Dプリンタで作る1次元セル・オートマトン、階差機関、アナログコンピュータ」という題ですが、階差機関しかやってないです。世間の声としては概ね好評という話を聞いております。

僕がやりたかったのは、というかトークをする時のいつもの心構えなんですが「こういうのもあるよ」と提示することです。カンファレンスというのはある意味スピーカーの喋りたい話を参加者に半ば強制的に吹き込む事ができるので、自分の知ってほしい話を喋って新しい発想を促すぞみたいな感じです。その代わり時間を奪うわけですから責任も伴うわけです。いつもは自分が知って驚いたことや面白かったことを体系的にやっていく感じでやっておりうまくいっているのでしばらくはスタイルで行くと思います。階差機関の歯車の動きで加算とリセットを繰り返すのを理解したときは電撃が走った。

参考にした動画はこちら。

www.youtube.com

動いているのが見れます。

www.youtube.com

歯車動くのきれいみたいな動画です。

www.youtube.com

仕組みの動画シリーズの加算の仕組みのところです。これで仕組みを理解しました。このシリーズのあとの方にデジタル計算機である肝のインターロック機構や桁上り機構、コントロールセクションなどがあります。コントロールセクションの平板カムとリンク機構を組み合わせて回転を間欠的な往復運動に変えているのが見どころ。

そんな感じで機械計算機仲間を増やしていきたいですね。

というか裏がMaker Faire Tokyoだったんですよねー。来年は階差機関で出たいぞ。

以下はチラ裏ポエム。

ポエム

そういえばこのブログを書いている週末にはコミックマーケット92、つまり夏コミというやつが行われていて、奇しくもbuildersconの前身であるYAPC::Asiaの最後の年とおなじ東京ビッグサイトで行われているわけです。あのときは確かコミケの一週間後だったような。

さてこのコミケとbuildersconの共通点はなんだろうと考えた時に、僕が思ったのは「オールジャンル」という言葉です。

コミックマーケット同人誌即売会と呼ばれる催しに属しますが、僕が出展したことのある他の同人誌即売会に文フリというのがあります。これはオンリーと呼ばれていて、僕は創作文芸というジャンルなので創作文芸と評論周りのオンリーというやつです。他にも東方だったら例大祭、艦これであれば砲雷撃戦、同人音楽であればM3などとそこそこのジャンルであればオンリーというものはあるわけです。

では何故それに行かずコミケに行くかというと、それは人によって様々な理由があるからだと思うんですが、僕の中では知らないものを見つけたいからという話があります。これは逆の立場からもそうで、創作文芸というジャンルは一次創作つまりオリジナルなので二次創作にあるような公式からのルートのようなものはないわけです。じゃあどうするかというとなろうみたいな小説サイトとかで興味を持った人が実際の即売会に来てくれる。しかしそんな偶然ばかりに頼ってられないので、会場でうろついていたらなんか面白そうなやつがあったみたいなのを求めているわけです。

一度、コミケで隣の人が笏(しゃく)を売っていたことがありました。笏とは平安貴族とかが手に持っている平べったい木簡みたいなやつです。

Kamogawa ceremony 01.jpg
By Chris Gladis, Flickr user MShades - http://flickr.com/photos/mshades/153003004/, CC 表示 2.0, Link

で、面白いから買ったんですけれど、そこで笏は中世のカンペだった話とか、神社のホンモノから型紙を作ってそれを元に手で切り出す話とか面白い話が売っている人から聞けたんです。僕、笏なんてそれまで全く興味がなかったのに。コミケってそういう出会いがあるわけです。

buildersconもそういう「全然知らないジャンル、話、人に興味を持つきっかけになる場」になってほしい。トークだけじゃなくてHUBで飲んでそういう話が聞けたらいいと思うし。

そんな感じで大変満足し、大変承認欲求が満たされた会でした。いい話も聞けたし、いい話もできた。

ところで今回個人スポンサー及びスピーカーでいただいたしゃもじですが、笏に似てますよね? 笏には正しい持ち方があって……

(これは正しい持ち方ではありません)

起きたらしゃもじスタンド出来てたんだけど、高速印刷したらスカスカになってた #builderscon

写真を撮る練習

はい、ひょんなことから会社の人と旅行にいくことになり、「じゃあ写真はよろしく。いいカメラ持ってきてね」とか言われたので、久しく放置していた我が家のミラーレスを引っ張り出したのでした。

しかしまあ手持ちのレンズはキットのパンケーキズームという代物と、追加で買った標準単焦点という具合で。旅のポートレートをやるには少々力不足といった点があります。とくに望遠側が弱い。

単焦点はこれなんですけれど。あ、マイクロフォーサーズです。

photo.yodobashi.com

で、買ったのがこれで。

photo.yodobashi.com

もちろんオリンパスのやつとかでF4通しのレンズとかあるんですけれど、PROレンズなのでクソ高い。あとミラーレスは完全に放置していたのでまた放置しかねないので撒き餌レンズを買うのが適当だろうという具合ですね。

で、動物園行こうとしたんですけれどあとに予定が入っていたので目黒の植物園的なところに行って練習してきました。

www.ins.kahaku.go.jp

言ってみたんですけれど思ったより森です。僕はど田舎の森育ちなので森に来ると日常の風景を思い出す感がありそれはそれでよいのですがおもったより森でした。

P6170600.jpg

入り口からこれです。周りビルとか高速道路の高架とかあるんですけれど、なんで一歩入ったら森やねんって感じです。東京ってこういうの多くないですか? 皇居とか代々木公園とか……。

P6170623.jpg

P6170821.jpg

P6170867.jpg

こういうアップダウンある感じいいですよね。道的な伸びていくものに対しては魅力がある。構図とか学がなくてわかんないんですけれどとりあえず入れとけばいいかなって感じになってお手軽なのかも。

P6170644.jpg

3つに分けるといいってどっかのサイトに書いてあったけれどよく分からん。

P6170682.jpg

P6170710.jpg

緑ばっかじゃあれなんで、道端のものとか撮ってみる。しかし撮ったあとに俺は緑を撮りに来たのではないか? という謎の囁きによって少し後悔する。

P6170609.jpg

P6170699.jpg

まあどっちにしろ木ばっかなんで木を撮るんですけれど。ていうか異常に茂っていてコンクリートジャングルに寝泊まりしている身としては少し身構えますよね。

P6170621.jpg

あともともとなんか武家屋敷というか山城的なところだったらしくこういう看板があります。これは土塁と書いてあります。

P6170638.jpg

でかい。

P6170611.jpg

やたらでかい。

P6170634.jpg

高倍率ズームを買っているわけなので、まあこういう写真が撮りたくなるわけですね。

P6170684.jpg

若いので逆光でも構わず撮る。

P6170675.jpg

ワイド端は14mmなので歪むわけですが、そういうレンズは持っていなかったので広がりがありますね。

P6170826.jpg

適当に上に向けてみるとカッコイイ。金田パースに通じるものがありますね。

P6170869.jpg

これとか飛んでるんですけれど、撮っているときはよくわからない……。調べたらヒストグラムを出す機能があるっぽいので今度からそれ見ます。人間の目ってすごいなあって思いました。白飛びしない。

P6170717.jpg

葉っぱばっかなのもなんなんで花にしましょう。

P6170723.jpg

P6170727.jpg

花はなんかテレ端で寄ったほうがうまく決まるのはなんでなんですかね。うまく決まっていると思い込んでいるだけで実は別が良い? まあこれも飛んでますけれど。

P6170742.jpg

題名は「処遇」という感じです。

P6170852.jpg

P6170842.jpg

あじさいがいました。母が好きなんで送っときます。

P6170774.jpg

P6170777.jpg

とりあえず真ん中で撮ってみたけれどこっちのほうがいいかな? ってなったので寄せてみたらナルホドってなりました。このあたりの理論を身につけるのが難しい。何がいい写真なのか。何がいい構図なのか、何がいい色味なのか。解像度とは……。わからん……。

鳥とか蝶とかいたんですけれど、

P6170720.jpg

なんかこういう水を撮ってたら横でカップルが「めっちゃ黒い蝶いるじゃん、花の蜜吸ってるのかな」とか言ってマジかよってそっちに向けたら飛んでいきました。注意力が必要ですね。

で、スズメがバチバチ歩いていたんで撮ろうとしたんですけれど、

P6170665.jpg

P6170664.jpg

ダメですね。テレ端やし、シャッタースピードも上げられず。

で、カラスが木に止まっていたんですけれど、

P6170801.jpg

前の枝とかにAF当たって全然ダメで何度も撮り直して、そしたら「もう写真いっぱいです」とかカメラに言われて消してたんですけれど「あーもうどっかいっちゃったかなー」って思ってたらまだいて、どんだけこいつ休んでいるんだよって思いながら撮りました。

P6170811.jpg

角度を変えて撮れるぐらいじっとしていたなこいつ。カラスなんだけれどこうやって撮るとカッコイイな。

まとめ

  • 140mm楽しい。圧縮効果っていうんですか? そういうのもやっていきたい
    • しかし手ブレクソ辛い。ボディにもレンズにも手ぶれ補正ついているんだけれど、それでよくなっている気はせず呼吸を止める術が必要。今回はハンドストラップも導入し備えた感じ。
  • 今回は動かない物を撮っているわけで、旅行とか行くと人も撮るわけでそういうときは今回みたいに同じ構図を何枚も何枚も撮るみたいなことは出来ないわけである。平均して3枚から5枚ぐらい撮っている気がする。なので動物とかそういうのでやっぱり練習しないとなとは思った。
  • 単焦点は楽
  • カメラバッグ的なメッセンジャーバッグ買ったけれどそこそこ便利。重いけれど丈夫感ある。

YAPC::Kansai 2017 OSAKAに(行っ|喋っ)てきた #yapcjapan

ジャパーン!! 皆さんいかがお過ごしですか。

去る3月4日に行われたYAPC::Kansai 2017に行ってきたのでその感想です。雑多です。

yapcjapan.org

見たトークと感想

前夜祭: 突撃!隣の開発環境!

Vimmer(neovim)としてはVimmerの人が多くてほっこり。逆にEmacs勢が少ない。ひとでくんさんとかは昔はEmacsだったけれど、今はおもしろ拡張書きやすいから(という解釈でいいのか)Atomに移っていてナルホドなあと思いました。あとquartz composerスクリーンセーバーを作るのウケる。ああいうビジュアルプログラミング環境だったのか。

papixのalias設定し放題はウケる。僕もちょっとやってみたけれどこりゃ覚えられないなと思ったので、git statusgit checkout git push origin master すら全部手で打ちます。筋肉があればalias要らへんのや。とはいえ筋肉よりも記憶力のほうが強いひとはそっちを選ぶのは理にかなっていると思います。gcc とかと被らないの?という質問で「そんなにアホではないのでそれぐらいはわかります!」といってたのが面白かった。僕だったらミスって別のshellで立ち上げて直すことになると思う。

あと@ さんのWindowsのソフトの数々やテク(変数名が制限でややこいので変数を色で示す)などは、ううナルホド?と思いました。変数を色でやるのはなんかペアプロのときとかはいいかも。

同人作家としてはcharsbarさんの翻訳やるためにWZエディタの左手だけでやって右手を自由にして物理本めくったり鉛筆持つようにしていくのは関心でした。vimmerなら手を逆にするとできるぞと言われたけれど、僕は左手は利き腕ちゃうし難しそう。

songmuさんのは実は以前Yokohama.pmでライブコーディングやってもらった時があってその時に間近で見てたんですが、その時とはあまり変わらずの印象でした。tigとかもっと使っていったほうがいいかな?しかしfugitiveで結構やってたり。昔は使っていたのになー。

しかし

何を言っているんだ。

あとdankogaiさんがすぐ近くにいて以前のYAPCのときよりもdan the questionが飛び交っており、おおなるほど。。。となりました。

dan the interruptionなるほど。

メールフォームからメールを送る近代的な方法 azumakuniyuki さん

www.slideshare.net

幸か不幸か僕はメール技術に出くわしてなく、どうしてもというときは会社の諸先輩方に頼りっきりなわけですが、sendmailqmail など「ああ聞いたことあるー」ってやつを見て歴史を感じることができました。

そういえば今回のテーマは「温故知新」(トークしたのに会場来るまで知らなかったとはいえない)。こんな感じで歴史書みたいな発表が目白押しなのも目玉でした。

オープンデータを利用したWebアプリ開発 dokechinさん

www.slideshare.net

Mishina.pm(1回お邪魔しました!)の @ さんのトーク。オープンガバメント(古いか?)のデータを利用したウェブサービスについての発表でした。

行政のデータはいわゆる公式発表でこんなデータもあるのかと発見がある一方、情報の更新が遅いだとかそういう悩みにも言及されていてそりゃ大変だわみたいなのもありつつ、e-Statのデータは使いやすいとのこと。しかしe-Statのロゴが2000年台前後のホームページ感がある・・・。

YAPCでオープンデータといえばYAPC::Asia 2014でのperlbrewの作者である@氏の LT / Beyond Civic Hacking / gugod - YouTubeというLTが思い起こされます。データとデータを結合してビジュアライズするというグルー言語としてのPerlの使い方としても面白い発表でした。

2017年春のPerl charsbarさん

www.slideshare.net

Hokkaidoの発表は聞いてなかったので。

まあやっぱりキツイのは5.26.0で@INCから.(current directory)が消える件。セキュリティ問題になるのはたしかに分かるけれど、

do "hogehoge.pl";

とかやるのにも影響を受けると聞いてまじかーとなる。configとかではよくやっている。一時的にcurrentを入れるみたいなのも出来るようだけれど、どうなるかはどうなるかですかねー。

Webアプリケーションのキャッシュ戦略とそのパターン moznionさん

speakerdeck.com

沖縄で噂の彼です。「キャッシュの話をするんですよ。なので50万円を下ろしてきました」「無利息キャッシング」などと言っていて本当に大丈夫なのかなと思いましたが、キャッシュのパターンに名前をつけるという体系的な説明でおもしろうまいトークでした。

キャッシュは麻薬なんですよ、そうなんです、彼が言いたいことを言ってくれた。むやみにね、レスポンスキャッシュとか透過的キャッシュとかするとサービスは死ぬ!!!!!!!!!!!!! 人間も死ぬ!!!!!!!!!!!!!!!!!!! おい聞いているか!!!!!!!!!!!!!!!!! 消し込みとかどうするんや!!!!!!!!!!!! キャッシュとか根本的に難しい技術なんですよ、まともにやっていくにHAHAHAAHAHAHAAHAHAHAH!!!!!!!!!!!!

キャッシュはベンチでは安易に上がるんで人間成功体験を得ると(ISUCONなどで)やっちまいをしますが、それは真の成功体験ではない。僕は見に行ってないけれど、そーだいさんのトークでもRDBの技術は長いこと使えるので、RDBでまともにテーブル設計とインデックス貼ってクエリを書いてがんばってがんばって、それでもだめでマットウならキャッシュを使うように僕はしたい!!!!!!! し、僕のチームのレビューではそんなことを時々書いたりします。

話が脱線しましたが、moznionがやっている規模のサービスはなかなか無いんで、そういういざという時に使える技術を把握しておきつつ、とりあえずRDBでがんばる方向にしたほうがみんないいんじゃないかなと思いました。MySQLはクソ速いし正確だしトランザクションがある。こちらからは以上です。

Perl to Go codehexさん

Perl to Go

Go slideはogp出ないのね。。。残念。

さて様々なPerl MongerがGoをやっているわけですが、私もその例にはもれないので興味深い発表でした。

Perlで並列(Parallel)をやるにはforkがよく使われるテクニックであり、つまり他方のプロセスの変数の値を直接見聞きすることは出来ないわけです。一方Goはgoroutineという仕組みで軽量スレッドを立ち上げてやっていくわけで、スレッドなので共有メモリ環境です。CLIプログラミングに向いているという共通した特徴を備えるものの、並列のやり方は全く違うわけでした。

なのでProcletをGoに移植するのめんどくさそうだなーと思ったんですけれど、goletはそのあたりをPlan9アセンブラのコードまで追いかけつつシステムコールがこのように発行されているからスレッドのプロセスからも起動できるみたいなことを言っていてナルホドなあと思いました。

ところで界隈ではgenericsだのなんだの言ってますが僕は「genericsあったら使うけれど別にみんなが必要ではないやろ。実際に使うのはマッチョだけだしマッチョなら筋肉で解決しろ」派なので、皆さんコード生成していこうな。

利用しているBaaSが終了するときにすべきこと または Parse.com の終了と私たちの取り組み side_tanaさん

speakerdeck.com

普通、自分がやっているサービスがどっぷり浸かっているBaaSとかSaaSとかが終了したら絶望なわけですよ。しかしやらんとアカン、アカンのやという精神のもと、ちゃんとエクソダスしたのは偉い。僕とかMySQL for RDSが終わりますとか言われたら誰かに泣きつく。

じわじわ自分のところのデータベースに持っていくのに、BaaS側のサービスからもダブルライトしてもらうのは出来ないけれど、手前にプロキシ挟んでてよかったわ〜〜事案とかマジでこえーーーって思ったので気をつけよっと思いました。こえーっ。

PerlのWebアプリケーションをデプロイする時に僕達が考えたこと papixさん

speakerdeck.com

伯!方!の!塩! じゃなかった、餃!子!の!王!将!

デプロイのビジョンという話があり、サービスの中でデプロイっていうのは結構大立ち回りをやるやつです。しかしミニマムデプロイでいいやつもあるわけです。そういうわけで我々はボタンポチで一発デプロイしたいのか、それともどのフェーズでも人間が戻せるように慎重にやっていきたいのか、そういうのを見極めていく必要がありますねという話があります。

無理やりロケットに例えると

  • 低コストで運用したい日本のイプシロンロケットでは実質パソコン一発で後は全自動で上がっていくようになっている
  • 人間載せているので安全にやりたいロシアのソユーズロケットではどのタイミングでも人間が脱出できるような手段を用意している

そんな感じで載せるもの(=サービス)によりますね。僕のトークのときの質問でもありましたが、ソーシャルゲームでデプロイミスると損失やばいので完全な全自動はやっていません。けれど、出来るだけ状況に応じてコマンドを打ち分けるみたいなのは人間がミスると終わるので(終わったことがある)できるだけデプロイのコマンドは単純化しつつエラーメッセージが出たら人間が対処できるようにしています。

一方去年作った僕の会社のサイトはmasterブランチにマージしたらそのフックを受けてwalterのジョブを実行してcapistrano-stretcherによるデプロイが成されます。ウェッブサービスはマスタデータの類が少なくポンとデプロイするだけであれば切り戻しも簡単だしパツイチデプロイを高頻度に刻んでいくようにやっていくのがいいのでは、というのがわたくしの見解です。

Perl ウェブ開発の中世 〜CGIPlack の間〜 xtetsujiさん

www.slideshare.net

ガチ歴史でした。まずは「会社」という概念の成り立ちから……。YAPC東インド会社の話を聞くとは思わなかった。

僕は中高で箱庭諸島などのCGI世代であり、社会人になったときにはいきなりPlackアプリを書いています。なのでその中間を知るという上で非常に興味深い話でした。

mod_perlというのはあくまでもApacheの拡張なんですよね。今で言うOpenrestyみたいな(nginx-luaでアプリを書く)。今となっては言語自体のWebサーバがあるのが当たり前ですが、ああいう風にプロセス分離してCGI的な世界観を維持しつつ毎度forkしない仕組みを考えた人は素晴らしいなと。preforkモデルだいしゅき。

はてなシステムの考古学 motemenさん

speakerdeck.com

はてなというインターネットのサービスとしては長寿なシステムの塊の歴史書。

考古学っていうのは地面を掘って人の骨とかくった貝殻のあととか見てどういう暮らしをしていたのかというのを見ていく学問なわけですが、コードというものはすでにそれ自体が文字なので推察しなくとも直接読み取れる情報は残っている、と。

しかし古代の章で壁画が現れ「テキストによる記録は希少、口承による調査を行った」という時点で「口承文学だ!」と笑ってしまったわけで。何事も歴史が重なるとそうなるのかなと思うと感慨深い。いや、今はgitとかの歴史があるから、後代になっても残るのではないかというのもありますが。ミニスカ宇宙海賊っていう小説があるんですが、千年前の建国の映像が残っているみたいな話があり、テクノロジーが進むと記録が残るという側面はありそうです。

さてその後時代が進み、はてなブックマークリニューアルの話も出たんですが、動いているもんをシュッと差し替えるのは実装力以上に実行力が試されるものだと僕は思います。端的に言えば覚悟と説得力。これはクソいから捨てようっていう人はいくらでもいいますが、実際捨てて作り直せる人はほとんどいないと思います。

さてそのおかげか、社内にうまくいく構成を作れたのでそれに則ったサービスが続々と出ていくというのはストーリー性もあり良いなあと思いました。言語の選択やらフレームワークの選択やらモジュールっていうのは文化なので文化の伝搬にリニューアルの成功が絡んでいるのはと思います。

しかし文化というのはいずれどこかで閉塞するわけで、そこでルネサンスるわけだなあと思いました。温故知新ですね。

太古はみんな薄かった。それが積み重なって厚くなって身動きが取れなくなって、最終的には太古の薄いのを現代的にする形で復活させる。良い。

そんな感じではてなさんの歴史を追いかけながら文化の発展を知る良いトークでした。

LT

  • YAPCらしい多様性のある発表ばかりだった。。。
  • 最近まかまかさんの発表がちゃんと(?)PerlPerlしつつあるのははちぴーでも思っていて、そのたびに「オオッ」ってなるんですけれど、今回はまさかのコマアニメということで度肝を抜かされた

温故知新 takesakoさん

SECCON実行委員長のイメージが強いtakesakoさん。しかし以前のYAPCのLTでPerlクイズをやっていたような。

あとバイナリかるたとかアセンブラ俳句とか本当に変態で、「機械語だとほら575になっているんですよ、ニーモニックでもpushpushpoppushpushpushという感じでリズムがあって」とか言っていてほんとうにもう・・・と度肝を抜かれました。

そう、この話はパンチカードの時代の話から始まったんです。僕が物心つく頃にはコンピュータは買うもので、すでにインターネットが存在する世の中があって、それが常識だったわけだけれど、それをイチから作った人たちがいて、イチから作る過程に大事なものが詰まっていると。だから若手に伝えたいと言うのはナルホドなと思いつつやり方が斜め上を行っている感じでしたw

しかしSECCONはNirvana改とか最近のSAOコラボなんかも見せ方がすごくて、見せ方を工夫するというのは間口を広げる意味ですごく大事なことだなと、ゲームを作っていて僕も思います。音ゲーなんかも僕はやるんですが、他人がやっているのを「すげー」だとか「俺にもできそう」と思わせるエフェクトとか筐体にするっていうのが参入するために必要な要素だと思っていて、SECCONってやっていることはhackなんだけれど文字で起こすとよくわかんないから、ビジュアライズするというのはすげえなあと思ってました。

あとキーボードとマウス乗っ取ってマインスイーパーをクリアするスクリプトデバッグでAutorun仕込んだUSB指すのは良い……。

自分のトーク

speakerdeck.com

主に運用の話をしました。サーバエンジニアと言ってもコードを書くだけじゃなくてうまいことチームが回っていい感じに運用できるように手をつくしていくんだぞ!ということを伝えたくでやりました。

手応えは結構あって、懇親会などでも「聞きました、良かったです」という声がけをされる率が以前のトークに比べて多いなと感じているのでこういう系もやっていくぞ!!!と思いました。YAPCは仕事の話してビルコンとかは沼の話をするかな、今後は。

まとめ

  • そうよ、これがYAPCだよという感想
  • Fukuokaもやっていくぞ!! トーク応募するぞ!!!!
  • Okinawaも行きたい
  • 次の日に鴨川ビールという京都の会社での儀式に参加しましたが謎でした。謎だし、京都の会社の人は「いいじゃん〜明日帰ればいいじゃん〜」と引き止めにかかることがわかりました。危険です。今度は暖かい時期に行きたいですね。

しかし左手吊ってたけれど

そのうちトーク時の写真とか出そうだけれど、僕トークしているときは左手を三角巾のカッコイイやつで吊っていてその説明をトーク時に全くしていなかったので今説明すると、トークの一週間前にスノーボードで転倒して鎖骨がバラバラになっていてだいたい片手で生活していました。あとクラビクルバンドっていう方を引っ張って骨が刺さらないようにするやつもしてました。両手でコードとかは打てるんですけれどね。スライドもその状態で作りました。

バラバラなんで「これは手術した方がいいよ〜」と言われてたんですが「週末にイベントが〜」と言ったら「一週間後なら間に合うからまた来てよ」って言われていたのでした。トーク時とかは痛みとかはあんまりなかったです。

で、今病院にいて、全身麻酔の手術をした後なのでその話は退院してからまたブログに書こうと思います。今は吊ってないです。棒を入れたので。

では!

2016年個人的振り返り

皆さん良いお年をという感じです。以下個人向けにあとから振り返るためにとりとめのない駄文が続いています。

来年の抱負: アウトプットとインプット

「人間はインプットした量以上のアウトプットはできない」というポリシーでやっていて、日々勉強という日々ですが、今年はアウトプット量過多な風味がしている。ので来年はアウトプット量そのままでそれに見合ったインプットをしていこうかなと思った。

やったトーク

エンジニアサポートCROSS 2016

2016.cross-party.com

闇な話ということでその時やっていた仕事のi18n対応とかAPI納品業でIDLを使っていくという話をやっていった。

しかしi18nもIDLも巷では普通の話というのが最近やっとわかってきていて、価値のあるトークなのかみたいな悩みもあった。Javaのみなさんにとっては一周したあとの話かもしれない。

まあやっていくしかないよなーと思いつつ、みなさんどうやっているんですかみたいなのを期待しているのもある。

スライドは闇なのでアップしていなかった。

Shibuya.go #1

shibuyago.connpass.com

kuiperbeltというWebSocketのセッション管理をしてくれる君のプラグイン機構について喋った。

speakerdeck.com

ただ、今のところマージはしていなくて、しかもその後に入れたチューニングとかとコンフリクトしてすぐに入れられない状態になっている。

使っている人が居るのは知っていて、テストがそこそこあるんだけれどそれでも壊れるのが怖くて入れられていない。このあたりは勇気という自信なんだろうなあ。

あとプラグイン機構に関してはGo1.8で入ってくるんだけれど、それでもLinuxぐらいしかうごかないっぽいし、何よりセッション持ってる君はセッションぶった切らないために再起動したくないというのがあって、プラグイン側でクラッシュした時の影響が本体に波及しないようにするためにプロセス分離するというのはまあいいなと思いました。ただしプロセス間通信があるのでパフォーマンスは出ないなあ。

そういうわけでkuiperbeltはGoでアプリ本体を書いた場合でもイケるぞと政治をしていく所存です。

YAP(achimon)C::Asia Hachioji 2016 mid Shinagawa

八王子って言ってるのに品川でやった愉快なイベント。

yapcasia8oji-2016mid.hachiojipm.org

3Dプリンタの話をしました。

speakerdeck.com

今年の一番のトークを選ぶとしたらこれかなあと思いました。お客さんの反応とかも含めて。

ドローンと違って3Dプリンタは今でもやっているし今でも使えているので便利です。

あれから3Dプリンタでどうのこうのという話が振られるかと言われたら……ドローンのほうが未だに多いですね。やっぱ空を飛ぶインパクトのほうがでかい。

あのあとの記事も書いています。

mackee.hatenablog.com

builderscon tokyo 2016

YAPCではずっとハードの話ばっかしていたけれど、buildersconではどうすっかなーと思ったけれど結局仕事にある程度関連のあるGoの話をしました。

builderscon.io

このトークに関しては完全に時間不足というのが反省点で、15分だともう少し削れるなと思ったし、会場にGopherがそこそこいた(mattnさんもいたし)ので前提に関しては結構削れたのかなという印象。

さて僕はGoでほぼほぼ初めてコード生成をやるわけでコード生成に関する沼は知らないわけです。トークは観測気球であるとも僕は思っているので「いや違うやろ!」「それはやってはいかん!!!」みたいなのを求めております。皆様。

書いたコード

仕事

Perl + Goのプロジェクトから純粋なPerlのプロダクトに戻ってきて、2回ぐらいアーキテクチャに手を入れる改革に関わらせてもらった。

仕事で言える範囲ではGoのコードは書いてなくてずっとPerlと日本語を書いている感じですね。来年もその傾向は変わらなさそう。

とはいえ僕はPerlも好きだし、とある勉強会の懇親会で言われた「Perlの進化が鈍いというのなら自分で起こせばいいんですよ」と言われたことを思い出しつつ、隙をみてやっていこうかなと思っています。

OSS

kuiperbelt

github.com

前述のWebSocketのセッションを保持してくれる君。fujiwaraさんからPRもらったりしてメモリ使用量がだいぶ軽くなったりエラーを握りつぶしていたところがログにちゃんと吐くようになったり、監視用のAPIが生えたりと実用的な改良をしていただいたという感じです。

来年はプラグイン対応突っ込むのとgRPCとかでRPC出来るようにするとか上り対応とかそのへんかなあ。まずはマニュアルですが。

sqlla

github.com

型安全クエリビルダー + ORM(型安全とかうかつに言うと型方面の人からマサカリ飛んできそうでビクビクしている)。

去年から書いていたものを今年にORMっぽい機能をくっつけた。

qiita.com

来年の抱負としては、実際に使っていくというのとJOINとかの機能をくっつけるとかですかねー。あとマニュアル(2回目)

seyfert

github.com

Goのコード生成のためのテンプレートエンジン。

まぁPoCです。

qiita.com

渡されたパラメータに応じて生成するコードを変えるifみたいな制御構造が無いなと気づいているのでそれに関しては別のアプローチを行うという感じですかね。

あとgorenameが遅いので自前で一気にやるようにするかなあ。

App::Prove::Plugin::MySQLPool

github.com

ここに来てPerl

と言っても書いたコードはなくて、僕はshipitしただけで内容としてはTest::mysqldが複数mysqld起動に対応したのでそれを利用するコードをid:shogo82148が送ってくれたのでマージしただけです。ありがとうございます。

経緯などはこちら。

www.songmu.jp

その他ELVMのPerl5バックエンドとかgenddlとかあるけれどまあいいや。

来年のインプットとアウトプット

妄想レベルでやってみたいことを書いてみる。やるとは限らない……!

  • 一個言語覚えたい。まあRustかなあ。
  • kuiperbeltのプラグイン機構の安定化と実際にアプリケーションを作ってみる
  • マニュアルちゃんと書くお
    • そのために英語をちゃんと読み書きできるようにならないと
  • 仕事はまあやっていくという感じで。まあやっていく。。。
  • ゲーム業界の人間というのもあり、ある程度ゲームを消化していきたい。FF15やっているのでトリコやってGravity Daze 2やってニーアオートマタやってエースコンバットやって……という感じ?
  • アニメ見る。。。nasne復活させた。
  • 文フリに継続して出していく。shogo82148からリクエストされているお題もあるし。
  • 体重は……産業医から太ると強制トレーニングに突入らしいので現状維持を目標にやっていく
  • 勢いでHTC Viveを買ってしまったので活用していく。主に位置トラッキング周りのハードウェアを作ってみたい。

まあそんな感じでゆるくやっていきます。高望みはしない。

Momoinololu M3 + Silent Step Stick TMC2100 で静かにプリント

どうも。

Momoinololu M3 / SmoothieBoard

ヤッパチーのときには間に合わなかったMomoinololu M3、つまりSmoothieBoardですが最近本腰入れてガッツリ使っております。

一回挿す電源間違えてふっ飛ばしたかと思ったときには、CPU自体が終わったかなと思いましたが、購入させていただいたショップの方などに問い合わせたところエンドストップのピンの挿し方がそもそも間違っていました。

Arduino MEGA + RAMPS v1.4と違ってSmoothieはmbedベースで演算も高速なのでアームの動きもスムーズになり移動速度も上がるというわけです。 精度は線分の分割数をあげられるのでスムーズになっているとは思いますが、速度面からの向上ほど良くは感じられません。

こんな感じで音は面白い感じです。

Smoothieでいいなと思ったのは公式ドキュメントがやたら充実しているという点です。

全てのコンフィグファイル内の項目: configuration-options [Smoothieware]

全てのサポートしているGコード: supported-g-codes [Smoothieware]

デルタ型の設定方法: delta [Smoothieware]

で、今まで使っていたMarlinと違ってまともにオートレベリングがサポートされているので復活させたわけであります。

https://www.instagram.com/p/BK4lmgdgXOx/ これで良さそう

するとかなりお手軽に刷れるようになりました。今まではオートレベリングでやっていることを手でやっていたのでだいぶ職人芸であったことをお思い出す。

https://www.instagram.com/p/BLA84P0gi_I/ 最後トラブった、おしい

これは途中まで順調だったのが最後らへんで台座から剥がれたというつらみのある一発でしたが。

今後はアレンキー型のオートレベリングプローブから圧力センサによる直接計測に挑みたいと考えております。圧力センサ自体は購入済みなのであとはそれをやる回路などをこの辺を参考に。。。

github.com

Silent Step Stick TMC2100

RepRap系のステッピングモータードライバはよく使われいているのだと以下の2種類があります。

  • A4988

www.pololu.com

よく使われているし僕の買ったキットに一番初めについてきたのもこれでした。多分コピーだけれど。

マイクロステップは1/16まで対応していて、まあ普通です。

  • DRV8825

www.pololu.com

DRV88xxシリーズはそこそこ広く使われているステッピングモータードライバっぽいです。

DRV8825は1/32マイクロステップまで対応していて精度良くなりそうですが実は1/16マイクロステップでも十分みたいな説もあります。

A4988 vs DRV8825 Chinese Stepper Driver Boards - RepRap

で、本家SmoothieBoardにはA4982ってのが直で実装されています。Momoinololu M3は安い分ステッピングモータドライバはついてこないですが、交換が可能です。 なので、今回はTMC2100っていうのに交換してみました。

ステッピングモータドライバって励起音でめっちゃピロピロピロ〜って鳴るんですけれど(鳴ってるのはつながっているステッピングモータの方から)、そんな音をだいたい消し去るSilent Chopなる謎技術がTMC2100には搭載されていて、確かに使ってみるとめっちゃ静かで不安になるレベルです。

www.youtube.com

みなさんは

Motortreiber - Watterott electronic

こちらで買っているようですが、わたくしはebayで買ってみました。そしたらなんか違うメーカーっぽいのが届いて色々ハマりました。

http://www.ebay.com/itm/-/272313645376www.ebay.com

多分同じメーカーのやつが米尼でも売ってました。

https://www.amazon.com/dp/B01I4JCABAwww.amazon.com

届いたので早速付けてみると、G28で原点に戻ったときにビィィィィィ〜〜〜〜って脱調っぽい感じで鳴って固まるという恐怖体験を繰り返しておりました。

で、米尼の説明を見ると、

Recommend highest print speed:40mm/s

とあり、原点に戻るときの速度ってどこだっけなって見てたら、

alpha_fast_homing_rate_mm_s 50 Speed, in millimetres/second, at which to home for the alpha actuator ( X axis or alpha tower )

たぶんこれで、300とか設定されていたのでこれを100まで抑えました(だって、40って2400mm/minってことだから、めっちゃ遅いやん。。。ってなって、ちょっと贅沢してちゃんと動いたのでとりあえずこれで……)

あとオートレベリングにやたら失敗しているので値を見ていたらYタワーがめっちゃずれるのでなんでかなって思って観察してたら下のステッピングモータ直結のピニオンギアが空転しているのを見つけてウウッとなりました。こういうのはメンテナンスと観察が大事ですなあ。。。

その後、やっと安定したと思って刷り始めたら何回かホットエンドが往復するとステージに衝突するのでなんでやと思って、色々推測を繰り返してステッピングモータのVrefを0.7Vまで喝入れしたら安定。アツアツになるけれど、

The calculation method of driver current:i=Vref*1.9/2.5

とのことなので、0.537Aですね。ちなみに前まで使っていたA4988はVrefを0.4Vに設定していて、こちらの式は

I_TripMax= Vref/(8*Rs)

で、Rsは確かモーター側の巻線抵抗なんですけれど、仮に0.05Ωだとしたら1Aになってだいぶかけ離れている感じになっていますが、まあそういう感じですかね(?)。うまくごいているからいいかなとは思っていますが。。。アツアツだけど。

次はCNCなどもやっているので、そっちをうまくやっていこうと思っています。 あとFSRレベリング。

こういう危うい感じでやってます

「お前ら!!!!画面の中から出てこーーいい!!!!世の中は3次元だぞ!!!!!!!!!!!!!」というタイトルで #yapc8oji 1日目で話します

みなさまどうお過ごしでしょうか。ワタクシは身体がバキバキですので良いマッサージ屋を探しております。どうもマコピーです。

さて、来る7/2(土曜日) YAP(achimon)C::Asia Hachioji 2016 mid で「お前ら!!!!画面の中から出てこーーいい!!!!世の中は3次元だぞ!!!!!!!!!!!!!というタイトルでトークをします。

Bの部屋で13:00から50分です。裏は@だったりして、僕はMySQLに関しては一家言ある人間ですので大変興味のある発表なのですが、裏なので見に行くことができません。 あとARスポーツの発表をおこなうテクノスポーツHADOというのも気になりますが裏なので見に行くことができません。

ですのでその時間帯はどれかに行ってもらって僕に後で聞かせてもらうか、もしくは僕の発表を聞いていただいて、その後に感想を言っていただけるなどして何がどうなっても100%、僕が幸せになりますので、そのような感じでよろしくお願いします。

さて内容ですが3Dプリンタをやる話で、3Dプリンタを使う話ではありません。そもそも3Dプリンタなど世の中に溢れすぎてもはやあたりに前になってきたのではないのでしょうか? むしろ僕はレーザーカッターを使いたい!

しかし、3Dプリンタを作る話はそんなに転がっていません(僕の観測範囲内では)。むしろ僕が聞きたいので3Dプリンタ改造について一家言ある方は僕に教えてください。 そうでない方に向けては、最もオープンハードウェアが成功したプロジェクトというものを紹介するトークとして聞いていただければな、と思います。

レッツ沼!

f:id:mackee_w:20160701232313p:plain

neovim導入したりvimrcを作った

どうも、春ですね、vimの時期です。 vimmerじゃない方はもちろんvimmerの方のみなさまも年に一度のvimrc作り直しの時期が来ているかと思われます。

わたくしも近年はSublime Text3やAtomなどを自宅環境に入れていましたが、今一番多く触っている仕事のPCではvimで作業しているため、コンテキストスイッチが多く発生しているのに困っていましたので、このさいなので自宅環境もvimに戻そうと考えました。

で、社会人になってから直していないvimrcをイチから書き直すついでにneovim環境にしてみたいと思います。

環境

インストール

  • neovimのインストール

github.com

$ brew tap neovim/neovim
$ brew install --HEAD neovim

--HEADをつけないとビルドに失敗した。上記ドキュメントにもついている

  • neovim-dot-appのインストール

MacVimを使っているので同じ感じになるかな?となり入れる

GitHub - rogual/neovim-dot-app: Mac OS X GUI for Neovim

$ brew tap rogual/neovim-dot-app
$ brew install --HEAD neovim-dot-app
$ brew linkapps neovim-dot-app

こちらも--HEADをつけないとビルドに失敗した

f:id:mackee_w:20160402215302p:plain

  • dein.vimのインストール

github.com

パッケージマネージャであるdein.vimのインストール。 ドキュメントだとinstaller.shを落としてきてスクリプトを貼り付けろという感じであったが、スクリプトを読んだらcloneしてきているだけだったので、ghqでcloneしてそちらを参照するようにする。

$ ghq get Shougo/dein.vim

installer.shを実行するメッセージに下記のような奴があるんだけれど、実行していないので、インストールしたパス用に書き換えて設定ファイルに入れる。

我が家環境ではghqを実行して入るのは~/src/github.com/Shougo/dein.vimなのでそのようにする。

あとデフォルトでShougo-wareが書いてあるが、後で整理しながら入れるので削除。

Please add the following settings for dein to the top of your vimrc (Vim) or init.vim (NeoVim) file:


"dein Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif

" Required:
set runtimepath^=$HOME/src/github.com/Shougo/dein.vim

" Required:
call dein#begin(expand('.'))

" Let dein manage dein
" Required:
call dein#add('Shougo/dein.vim')

" Add or remove your plugins here:

" Required:
call dein#end()

" Required:
filetype plugin indent on

" If you want to install not installed plugins on startup.
if dein#check_install()
  call dein#install()
endif

"End dein Scripts-------------------------

場所は~/.config/nvim/init.vim

テーマはとりあえずSolarized

会社MacVimでもAtomでもSolarizedを使っているので入れる。

" Add or remove your plugins here:
call dein#add('altercation/vim-colors-solarized')

起動時から使うように設定

let g:solarized_termcolors=256
syntax enable
set background=dark
colorscheme solarized

ただ、neovim-dot-app上でbackground変更が効かず……。捨てるしか無いか?

以下はTerminal.appでnvim起動して撮った。

f:id:mackee_w:20160402223500p:plain

クリップボード共有

Macのclipboardとvimでのyankを共有するために以下の設定を追加

set clipboard+=unnamedplus

補完

補完はShougo-wareであるdeoplete.nvimを使う。

github.com

インストールしようとしたらドキュメントに以下の記述を発見。

deoplete requires Neovim with if_python3. If :echo has("python3") returns 1, then you're done; otherwise, see below.

:echo has("python3")
0

がっくし来たので https://neovim.io/doc/user/nvim_python.html を見ながら環境を整える。

$ brew install python3
$ which python3
/usr/local/bin/python3
$ pip3 install neovim
let g:python3_host_prog = '/usr/local/bin/python3'

これでneovimを再起動すると

:echo has("python3")
1

となる。 これでやっと以下の記述を加えて:UpdateRemotePluginsを実行することで、deoplete.nvimが使えるようになる。

call dein#add('Shougo/deoplete.nvim')
"~~~~
let g:deoplete#enable_at_startup = 1

とりあえず基礎はこのぐらいですかね? あとは言語周り(GoとかPerlとか)を入れていきます・・・