Ruby x Elixir Conf Taiwan 2018でLTをしてきた

タイトルの通りです。cryptoタグが付いているけどそこまでcryptoではない。あと技術要素は申し訳程度。

至るまでの経緯

  • 2016/9: RubyKaigi 2016でErRubyの発表をしていた@jonhlinvc氏ほか台湾勢と仲良くなる。
  • 2017/9: RubyKaigi 2017のRubyKaraokeとかAfter Partyとかでオーガナイザーの@ryudoawaru氏から「次の台湾RubyConfはRuby x Elixir Confである」ということを聞く。RubyKaigiはだいたい自費で参加してるが、Elixirだったら上手く行けば会社の支援得られそうだし、せっかくだしCFP出そうと考える。
  • 2017/10頃: CFPの締め切りが年内に延びる。
  • 2017/11〜12については前の記事参照。CFPの締め切りに間に合わず。
  • 2018/2頃: チケットが発売されたので申し込む。LTに応募することにする。
  • このへんもだいたい同じなのでだいたい技術書典の記事参照。
  • 2018/3/20: LTのCFP前日に応募する。
  • 2018/3/22: LTのCFP締め切りがなんと前日まで延びている。ナンダコリャ
  • 2018/4/14: CFPが通ったことを確認。
  • 2018/4/25: スライドの準備が終わる。

話したネタ

speakerdeck.com

github.com

D言語でSHA3-256*1を実装してElixirから呼ぶ話です。

スライドの最後に書いてある通り、C++を経由することで

  • ただでさえ多いボイラープレートがさらに増える
  • 動的配列などのC++を使わずD言語を使う理由である部分が実装しにくい

という問題があるため、Rustlerのように中間言語を挟まずDで直接NIFを書けるような解答が実際のところは求められていると思います。幸いにしてこれでNIFの仕組みが理解できたので少しずつ進めていけたらよいと思います。…が、実際に暗号ライブラリを本格的に書いてNIFするなら私はRust使うかなあ…数値計算だったらDかもしれんけど…。

だいたいここで話した内容はCでNIFやるときも同じです。ERL_NIF_TERMから値を取り出す関数を使ってC言語で使える値を取り出し、その値を戻すときはERL_NIF_TERMに入れて返します。

DのGarbage Collectionとの関連

正確なところは調べていませんが、ERL_NIF_TERMに包んで返す際に値をコピーしているのでERL_NIF_TERMGCされて値が失われて死ぬみたいなことは起こらないのでないかと踏んでいます。

その他

あとは非技術記事です。

f:id:sylph01:20180426235550j:plain

17時まで仕事をしてから19:40の便で成田を出て現地時間22:30頃着いた。なので市内に着いた頃には深夜。

f:id:sylph01:20180427000050j:plain

ロケット団のアジトかな?

f:id:sylph01:20180427084459j:plain

これなんてERG?…という冗談はさておき、ホテル出たところの様子。西門駅の近くなのだが、路地の真ん中にあり、道路に面している部分がかなり小さいので、最初に見つけるのに非常に苦労した。ホテル入ったらあっさり日本語が通じてびっくりした。

f:id:sylph01:20180427090144j:plain

会場のChang Yung-Fa Foundationビル*2。手前は景福門。門を囲むように環状の道路になっている。

f:id:sylph01:20180427090617j:plain

f:id:sylph01:20180427091204j:plain

会場の中。

f:id:sylph01:20180427091418j:plain

ノベルティの名刺入れ。デザインが非常によいので日常使いしたい。2列になってないとかそういうのはminor issueだ、RubyとElixirをやってる人間であるとわかることが大事なのだ。

f:id:sylph01:20180427154049j:plain

ティーブレイクの様子。他のところだったらスポンサーブースで無限コーヒーが出ているが、ここでは無限烏龍茶。めちゃめちゃ美味かったので即お買上げでした。

f:id:sylph01:20180427181842j:plain

いっちばーん!

f:id:sylph01:20180427183438j:plain

f:id:sylph01:20180427185912j:plain

f:id:sylph01:20180427193740j:plain

…とは言ったものの、「しらつゆ」ではなく二十四節気に由来している。Taiwan Head Brewersが出しているシリーズもので、今のところ15種類あるらしい。

f:id:sylph01:20180428083822j:plain

じゃないんだよなあ

f:id:sylph01:20180428183427j:plain

f:id:sylph01:20180428184434j:plain

f:id:sylph01:20180428191603j:plain

f:id:sylph01:20180428193449j:plain

f:id:sylph01:20180428194754j:plain

2日目終了後に行った饒河観光夜市*3。写真5枚目の「大腸包小腸」は行く前に会社の人から「絶対食ってこい」と言われたものだったのだが確かにその感想もわかる。東洋人の口にはホットドッグはパンよりもお米のほうが合う。

f:id:sylph01:20180428183617j:plain

f:id:sylph01:20180428202508j:plain

饒河観光夜市がある松山(Songshan)と漢字が同じなためか、松山(まつやま)の道後温泉と同じようなからくり時計が置いてあります。

f:id:sylph01:20180428203439j:plain

ルビイストは川に引き寄せられる運命だった…。

f:id:sylph01:20180429095151j:plain

あの永和さんとは関係ありません。

f:id:sylph01:20180429095303j:plain

f:id:sylph01:20180429095532j:plain

f:id:sylph01:20180429103336j:plain

f:id:sylph01:20180429132052j:plain

ジャパニーズオタークーストア。台湾ラノベが売ってたので言語読めないけど買ってみた。そしたら日本語版がネットにあった

f:id:sylph01:20180429121042j:plain

f:id:sylph01:20180429121207j:plain

繁体字中国語版ドミナリアを4パックほど買った。ドイツ語版とフランス語版を1boxずつ予約していたので、日本語と英語はどうせ剥くだろうと仮定すると5言語でパック剥くことになる。

*1:実際コードをちょっといじれば他のヴァリアントもできる。D言語らしさを出すならテンプレート関数として実装するのがよさそうなのであとで直しうる

*2:右奥。地図上では長栄海事博物館として出てるが同じ建物

*3:1文字ずつ漢字出すのめっちゃ苦戦したけど「じょうが」で変換できるんだ…悔しい…