<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:image="http://purl.org/rss/1.0/modules/image/"
  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
  xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel rdf:about="/rss/en">
    <title>48JIGEN *Reloaded*</title>
    <link>http://rimuru.lunanet.gr.jp/</link>
    <description>@remore's blog feed!</description>
    <items>
      <rdf:Seq>
        <rdf:li resource="http://rimuru.lunanet.gr.jp/notes/post/making-fastly-compute-even-more-helpful-with-unofficial-sdk/"/>
        <rdf:li resource="http://rimuru.lunanet.gr.jp/notes/post/attended-next-web-conf-2023/"/>
        <rdf:li resource="http://rimuru.lunanet.gr.jp/notes/post/attended-rubyconf-india-2018/"/>
        <rdf:li resource="http://rimuru.lunanet.gr.jp/notes/post/rubyconf-taiwan-2016/"/>
        <rdf:li resource="http://rimuru.lunanet.gr.jp/notes/post/attended-rubyconf-2016/"/>
        <rdf:li resource="http://rimuru.lunanet.gr.jp/notes/post/rubyconf-2016-day-0/"/>
        <rdf:li resource="http://rimuru.lunanet.gr.jp/notes/post/handling-doc2vec-or-scikit-learn-from-ruby/"/>
        <rdf:li resource="http://rimuru.lunanet.gr.jp/notes/post/best-chilled-pasta-recipe/"/>
        <rdf:li resource="http://rimuru.lunanet.gr.jp/notes/post/bought-a-slow-cooker/"/>
        <rdf:li resource="http://rimuru.lunanet.gr.jp/notes/post/attended-ivs-cto-night-2015winter-kyoto/"/>
        <rdf:li resource="http://rimuru.lunanet.gr.jp/notes/post/how-to-root-from-inside-container/"/>
      </rdf:Seq>
    </items>
    <dc:date>2026-04-10T18:56:35+09:00</dc:date>
  </channel>
  <item rdf:about="http://rimuru.lunanet.gr.jp/notes/post/making-fastly-compute-even-more-helpful-with-unofficial-sdk/">
    <title>Unofficial SDK で更に便利に Fastly Compute を使う（ために試行錯誤してる話）</title>
    <link>http://rimuru.lunanet.gr.jp/notes/post/making-fastly-compute-even-more-helpful-with-unofficial-sdk/</link>
    <description>&lt;p&gt;この記事は &lt;a href=&quot;https://qiita.com/remore/items/9d8a69c34a8655e37ac6&quot;&gt;Fastly Compute (旧 Compute@Edge) 一人アドベントカレンダー&lt;/a&gt; 25 日目の記事です。最終日の今回は自分の個人プロジェクトとして、 Fastly Compute の Unofficial SDK のうち Ruby SDK の実装を一部追加している話をします。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/kateinoigakukun/ruby-compute-runtime/pull/5&quot;&gt;この PR&lt;/a&gt; にあるような形で未実装となっている C 拡張のコードを少しずつ実装しています。去年 katei さんが実装して公開されたデモで Ruby が Fastly Compute (旧 Compute@Edge)上で動くという最も難しい部分を超えてもらっているので、不足している C 拡張部分を実装して便利にエッジ環境での開発ができたらというナイーブなモチベーションで進めています。&lt;/p&gt;

&lt;p&gt;進め方としては、Fastly Compute が Wasm ABI で提供する &lt;a href=&quot;https://github.com/fastly/Viceroy/blob/main/lib/compute-at-edge-abi/compute-at-edge.witx&quot;&gt;Hostcall&lt;/a&gt; の API の振る舞いについてドキュメントは特に用意されていないので、他の言語での SDK の実装を頼りにトライアンドエラーで実装を進めています。ただ実際に進めてみると、このトライアンドエラーの試行のために毎回 Ruby をソースビルドするのでデバッグに時間がかかりがち（20分前後/回）だったり、そもそもどの gem が WASI 環境で使えるか確認しながら手探りで作業を進める感じもあったりして中々ワイルドな体験をしています。&lt;/p&gt;

&lt;p&gt;さて今回マージして取り込んでもらった前述の PR によって、以下のようなコードが Fastly Compute 上で動くようになりました。これまではバックエンドのサーバと通信するためのメソッドが未実装になっていたので、今回は Request をプロキシする（いわゆる普通のリバプロ的な）動作ができるように実装してごく一部のパターンのみ動くようにした感じです。&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/remore/6eeb4d2bb83092f573cda66a207b6b99.js&quot;&gt;&lt;/script&gt;


&lt;p&gt;上記はこちらの&lt;a href=&quot;https://ruby-proxy-request.edgecompute.app&quot;&gt;デモサイト&lt;/a&gt;で動作を確認できます。見事に CSS があたっていないことからも分かっていただけるかと思いますが、この状態だと request の URI/path が毎回固定なので、どんなリクエストに対しても一律に &lt;code&gt;https://www.ruby-lang.org/en/&lt;/code&gt; の内容を返す挙動となっています。これを解消するために、次に request された path に応じてコンテンツを返すために別の C 拡張実装を進める、といった具合に少しずつ実装を進めています。&lt;/p&gt;

&lt;p&gt;上記サンプルコードは &lt;a href=&quot;https://github.com/kateinoigakukun/ruby-compute-runtime&quot;&gt;kateinoigakukun/ruby-compute-runtime&lt;/a&gt; の README の手順で環境構築して動かして試せますので、興味がある方は試してみてください。&lt;a href=&quot;https://github.com/fastly/Viceroy&quot;&gt;Viceroy&lt;/a&gt; という Wasmtime をランタイムとした Fastly Compute 環境のエミュレーションツールを使うことで Fastly のアカウント等を作成せずともローカル環境っでビルドして試すことが可能です。11 日目のアドベントカレンダーで&lt;a href=&quot;https://zenn.dev/remore/articles/2cd7234f1d2194#%24wizer%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89&quot;&gt;紹介した&lt;/a&gt; wizer が Ruby SDK でも使われているところなどは見どころの一つで、同じスクリプト言語として JS SDK と比較した時の最終的な wasm パッケージサイズや実行速度の違いなどを比較してみるなどするのも面白いかもしれません。&lt;/p&gt;
</description>
    <dc:date>2023-12-26T00:00:00+09:00</dc:date>
  </item>
  <item rdf:about="http://rimuru.lunanet.gr.jp/notes/post/attended-next-web-conf-2023/">
    <title>次世代 Web カンファレンス で Edge Computing の話をしてきた</title>
    <link>http://rimuru.lunanet.gr.jp/notes/post/attended-next-web-conf-2023/</link>
    <description>&lt;p&gt;いろいろな状況的な理由からこのブログを更新せずに早 6 年くらい経っていた。そんな折に&lt;a href=&quot;https://nextwebconf.connpass.com/event/300174/&quot;&gt;次世代 Web カンファレンス&lt;/a&gt;で少し Edge Computing の話をさせてもらう機会を頂いて、後日の感想を書きたい機運が生まれたので書いてみようと思う。この記事は &lt;a href=&quot;https://qiita.com/remore/items/9d8a69c34a8655e37ac6&quot;&gt;Fastly Compute (旧 Compute@Edge) 一人アドベントカレンダー&lt;/a&gt; 18 日目の記事です。&lt;/p&gt;

&lt;h3&gt;Who are you?&lt;/h3&gt;

&lt;p&gt;Fastly に半年くらい前に入社して Fastly Compute (旧 Compute@Edge) の導入のための技術検証や構築の支援などをやってる人。正式な役職名は Senior Serverless Strategist。ただこれだと何をやるロールか分かりづらいので簡便のためにスペシャリストエンジニアですと名乗ってることが多い。&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Got a new chapter started this week &lt;a href=&quot;https://t.co/499F6WMSuL&quot;&gt;pic.twitter.com/499F6WMSuL&lt;/a&gt;&lt;/p&gt;&amp;mdash; 𝕂𝕒𝕪 (Kéi Sawada) (@remore) &lt;a href=&quot;https://twitter.com/remore/status/1674310899245658112?ref_src=twsrc%5Etfw&quot;&gt;June 29, 2023&lt;/a&gt;&lt;/blockquote&gt;


&lt;p&gt; &lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;h3&gt;登壇までの経緯&lt;/h3&gt;

&lt;p&gt;ある日 DM で Edge Computing セッションオーナーの &lt;a href=&quot;http://twitter.com/kt3k&quot;&gt;@kt3k&lt;/a&gt; さんから登壇してみませんかと誘って頂いて、参加することになった。会の開催趣旨など聞いて賛同できる部分が多くて、当日のディスカッションを楽しみにしていた。当日までに、登壇者の間でのテーマ設定やアジェンダ作りなどはあえて行わない形で段取りがされていたので、自分のできる準備として話したいテーマやポイントをなんとなく頭に入れておくくらいのことだけ当日までに済ませてカンファレンスに参加した。&lt;/p&gt;

&lt;p&gt;あと、ある方面の方々に繋いで頂いてとある懇親会（からの閉店間際の中華含む）で &lt;a href=&quot;http://twitter.com/Jxck_&quot;&gt;@Jxck_&lt;/a&gt; さんと事前にお話しすることができたのもありがたかった。Edge Computing のセッション枠を用意した経緯とかも聞けたし、普段 h2o 使ってる話とか聞けたのもシンプルに興味深かった（時間が取れれば自分でもやってみたい）。あと完全に余談だけどもし今後いつか機会があったら &lt;a href=&quot;http://twitter.com/Jxck_&quot;&gt;@Jxck_&lt;/a&gt; さんからみた Edge Computing がどうなのか、みたいところも話せたら面白いんじゃないかなとも思ったりしている。&lt;/p&gt;

&lt;h3&gt;当日話してみてどうだったか&lt;/h3&gt;

&lt;p&gt;テーマ設定からして次世代感があって、昔話や思い出話の類が入る余地がなかったのでトピックス面というか、その辺は安心して話すことができた。後半少しだけ話が出た portability の話はもう少ししたかったけど話きれなかった。Docker+Wasm で WebAssembly のサポートが強化されたり、Component Model で作ったモジュールの再利用性を高められる可能性とか、これからやってくるであろう変化をどう捉えていくかというところは話しきれなかったところの一つ。&lt;/p&gt;

&lt;p&gt;外せない各社の Node.js 互換性への取り組みの話も触れられたのはよかった。 &lt;a href=&quot;http://twitter.com/kt3k&quot;&gt;@kt3k&lt;/a&gt; さんが事前にいろいろ準備してくれて話をいろいろと振ってくれたお陰で、（途中不定期にとあるフレームワークの宣伝が入りつつ）満遍なく各ベンダーの話が出揃って聞けたのは個人的にも貴重な機会だった。全体的な話の進み方として、何か界隈の問題点からスタートするというよりも世間話的というか、各サービスの状況がどうで仕様がどうなっている、というあたりを前半で話していったと記憶しているんだけど、進め方がとてもよかったと思っていて、各サービスで結構色んな差とか違いがあって登壇者の間でも情報の非対称性が割とある状態でのスタートだったので、近況共有的な部分が手厚めにできたのはすごくよかったと思う。（その分、個別の問題や技術課題に触れられる時間は結果的に少なめでもあったかもしれない）&lt;/p&gt;

&lt;p&gt;エッジでの開発の DX が良い話が出たのも大筋で同感できる部分だった。僕からは他にリソース制限の話とか、ストレージ周りの特に Write の要件が厳しい時の対処方法とか、話してみたいポイントはいくつかあったけど時間切れで終わった。&lt;/p&gt;

&lt;h4&gt;自分の話の補足&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;JS SDK の SpiderMonkey の話はアドベントカレンダー &lt;a href=&quot;https://zenn.dev/remore/articles/2cd7234f1d2194&quot;&gt;11 日目の記事&lt;/a&gt;に関係する内容を少し書いてます&lt;/li&gt;
&lt;li&gt;polyfill.io のメンテナの Jake Champion の話が出たので、彼が出演してる今年の &lt;a href=&quot;https://syntax.fm/show/643/supper-club-wasm-fastly-edge-and-polyfill-io-with-jake-champion&quot;&gt;podcast (Syntax.fm) のリンク&lt;/a&gt;も貼っておきます。WebAssembly のランタイム周りや WASI / Winter CG, Hono あたりの話とか、終盤 41:39〜 あたりで wizer の話も出てきて個人的には面白く聞いてました。&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;&quot;エッジ&quot;コンピューティング&lt;/h3&gt;

&lt;p&gt;その他思ったこと。エッジコンピューティング、言葉がそもそも難しい、というのは前から思っててどうすれば、という気持ち。次世代 Web カンファレンスの定義だと、登壇者の顔ぶれ的に多分 CDN（あるいはエッジネットワーク） の上で動くコンピューティング基盤のことを指していたと思う。一方で世の中的には同じ言葉が別の意味で使われていて、例えば IoT の分野だと IoT 端末上での計算処理のことをエッジコンピューティングと呼んでいたりする。それにもっと広く見るとブラウザの ServiceWorker こそが真のエッジ（端っこ）でのコンピューティングと見立てる世界線もあると思うし、ここら辺の言葉が散らかりがちなところは機会があれば話してみたい。&lt;/p&gt;

&lt;p&gt;と、買いてたら @kt3k さんからも似た話が。何かいい言葉出てきてほしいですね。&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;ja&quot; dir=&quot;ltr&quot;&gt;Cloudflare Workers 等を指して「エッジコンピューティング」というのは、言葉の狭い意味で使いすぎているように思えてきたので、「クラウドエッジコンピューティング」みたいな用語を使った方が良い気がしてきた&lt;/p&gt;&amp;mdash; Yoshiya Hinosawa (@kt3k) &lt;a href=&quot;https://twitter.com/kt3k/status/1737366981471613371?ref_src=twsrc%5Etfw&quot;&gt;December 20, 2023&lt;/a&gt;&lt;/blockquote&gt;


&lt;p&gt; &lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;

&lt;h3&gt;その他&lt;/h3&gt;

&lt;p&gt;その他にも色々と思ったことはあって、設定言語の延長線で WASI が使われてるその先の話とか、あるいはオリジンレスなエッジサーバレス実行基盤の議論とか色々あるけど、ブログに書くにはアイデア以前の段階なのと、何回か書いてみたけどどうしても立場上の話も混じってしまうので、今回はこの辺で筆をおこうと思います。&lt;/p&gt;

&lt;h3&gt;最後に&lt;/h3&gt;

&lt;p&gt;こういう雑記は大体うまくまとまらないので、最近ブログをおろそかにしていたのもあって当初ブログ書く気はゼロだったんだけど、一人アドベントカレンダーをちょうど開催していたことと、何よりも &lt;a href=&quot;http://twitter.com/Jxck_&quot;&gt;@Jxck_&lt;/a&gt; さんと、カンファレンス運営してくださった皆さんに素晴らしい会をホストしてくださった感謝の気持ちが大きくて、まとまらないのを承知で一旦書いて放流してみようと思います。埃のかぶったこのブログに 6 年近くぶりに記事を書かねばと思ったくらいには参加できてよかったと思えるカンファレンスでした。カンファレンス運営のコストも上がってる中で無事開催しているの素晴らしすぎるし運営皆さんに感謝しかない。&lt;/p&gt;

&lt;p&gt;edge_computing の話を Bar で聞いてくださった皆さんもありがとうございました。久しぶりにお会いできた方々もいて嬉しかったです。会場にいらっしゃっていてお話できなかった方々も、また何かの機会でお話できたら嬉しいです。&lt;/p&gt;
</description>
    <dc:date>2023-12-21T00:00:00+09:00</dc:date>
  </item>
  <item rdf:about="http://rimuru.lunanet.gr.jp/notes/post/attended-rubyconf-india-2018/">
    <title>有給消化中にRubyConf Indiaに参加してきました</title>
    <link>http://rimuru.lunanet.gr.jp/notes/post/attended-rubyconf-india-2018/</link>
    <description>&lt;p&gt;勤務先のリクルートホールディングス社を2月末で退職することになりました。このおかげで発生した次の仕事を始めるまでの有給消化期間の使い途として、家族旅行の予定をいくつか組んだり溜まっていた書類の整理や確定申告などの雑務を行うことにしましたが、予定表を見るとまだ工夫すれば1週間くらいの空きを作ることができそうな状況でした。&lt;/p&gt;

&lt;p&gt;それで何をしようかと年末から考えていたところに、RubyConf IndiaのCFPが通過したという知らせが&lt;a href=&quot;https://twitter.com/remore/status/954267035831189505&quot;&gt;1月中旬くらいに届いた&lt;/a&gt;ので、この機会にカンファレンスを訪れつつインドを1週間くらい旅してくる計画がすぐに頭に浮かびました。妻にこれを相談してみると、インド行きにあわせて妻が子供を連れて妻の実家に帰省することで対応が可能という大変心強い回答と支援を得ることができたので、CFP通過の知らせが届いてから2週間くらいで飛行機・宿・訪問先の手配など全て済ませて全8日間の計画でインドを旅してくることになりました。&lt;/p&gt;

&lt;p&gt;このブログでは、この旅の中でTech関係の部分の記録のみ抜き出した内容を書き出します。ちなみに完全に自己満ですが、旅の中でもっとも訪れて良かったと感じたのはジャイプルの&lt;a href=&quot;https://twitter.com/remore/status/963066813692002306&quot;&gt;Nahargarh Fortの夕暮れ&lt;/a&gt;とバラナシの&lt;a href=&quot;https://twitter.com/remore/status/963596405238513664&quot;&gt;早朝のガンジス川の散歩&lt;/a&gt;でした。&lt;/p&gt;

&lt;h2&gt;RubyConf India&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/files/attended-rubyconf-india-2018/rubyconfindia_hall.jpg&quot; alt=&quot;ホールの様子&quot; style=&quot;display: block; margin-left: auto; margin-right: auto&quot;/&gt;&lt;/p&gt;

&lt;p&gt;バンガロールで開催された今年のRubyConf Indiaは今年で第9回を迎える国際Ruby Conferenceで、今回はホテルの1ホールを2日間貸し切る形で開催されました。どうでもいいですが会場BGMは&lt;a href=&quot;https://www.youtube.com/watch?v=uOPt2Jaz2ec&quot;&gt;Kaya ProjectのWalking Through&lt;/a&gt;がずっと流れていて居心地良い感じの会場運営がされていました。会場で色んな方から話を聞いた限りでは、参加者の大多数がインド人またはインド在住の方な様子のカンファレンスで、2日間の日程の間、結局日本人には一人も会うことはありませんでした。&lt;/p&gt;

&lt;p&gt;当日のトークの内容は多分ざっくりは公式サイトの&lt;a href=&quot;http://rubyconfindia.org/program/&quot;&gt;プログラム一覧&lt;/a&gt;見てもらうのが一番正確かつ情報量多いかなと思うんですが、個人的には2日朝の&lt;a href=&quot;https://twitter.com/_svs_&quot;&gt;@_svs_&lt;/a&gt;のKeynoteがとても良かったです（ToDo: 動画が公開されたらリンクを張る）。カンファレンスに参加できたのが久しぶりだったせいも多分にありそうですが、LTもバリエーション豊富で面白かったです。mrubyと&lt;a href=&quot;http://enzi.cc&quot;&gt;enzi&lt;/a&gt;、BioRuby、SciRuby（&lt;a href=&quot;https://github.com/Shekharrajak&quot;&gt;@Shekharrajak&lt;/a&gt;によるdaru-viewの紹介）のあたりが特に興味を惹かれました。&lt;/p&gt;

&lt;p&gt;TwitterのTLを眺めていると#rubyfriendsタグがあまり流れてこないことに気づき、参加者同士で話をしているとそもそもタグの存在自体を知らないという方も一定数いらっしゃったみたいなので、当日Talkの前座で#rubyfriendsタグについて紹介をしつつ、アイスブレイク代わりに会場のみなさんとSelfieを撮れたのは良い思い出です。（自撮り自体を普段あまりしないため、会場全体を収めることには失敗しました）&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;ja&quot;&gt;&lt;p lang=&quot;und&quot; dir=&quot;ltr&quot;&gt;&lt;a href=&quot;https://twitter.com/hashtag/rubyfriends?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#rubyfriends&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/RubyConfIndia?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#RubyConfIndia&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/RCI18?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#RCI18&lt;/a&gt; &lt;a href=&quot;https://t.co/pJ0dkMabAq&quot;&gt;pic.twitter.com/pJ0dkMabAq&lt;/a&gt;&lt;/p&gt;&amp;mdash; Kei Sawada (@remore) &lt;a href=&quot;https://twitter.com/remore/status/962218818239016960?ref_src=twsrc%5Etfw&quot;&gt;2018年2月10日&lt;/a&gt;&lt;/blockquote&gt;


&lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;


&lt;h2&gt;今回話してきたこと&lt;/h2&gt;

&lt;p&gt;&quot;Prototyping Kubernetes CRI(Container Runtime Interface) With Ruby and gRPC&quot;と題してKubernetes周りの最近の近況や内部構造の一部に少しだけ触れつつ、Rubyを使ってコンテナ周りの世界で何ができるのか探索してみる、といったような趣旨のお話をしてきました。Talkの&lt;a href=&quot;http://rubyconfindia.org/program/#kei&quot;&gt;Description&lt;/a&gt;、&lt;a href=&quot;https://speakerdeck.com/remore/prototyping-kubernetes-cri-with-ruby-and-grpc&quot;&gt;スライド資料&lt;/a&gt;、&lt;a href=&quot;https://github.com/remore/kubernetes_cri_prototype&quot;&gt;デモ用に作成したリポジトリ&lt;/a&gt;についてはそれぞれ然るべき場所に上がっています。&lt;/p&gt;

&lt;p&gt;去年の秋くらいから少しずつKubernetes周りを触り始めていて、これを総括するマイルストーンとしてちょうど良いと考えて勢いで1年以上ぶりに提出したCFPがAcceptされたのが今回のTalkでした。&lt;a href=&quot;https://github.com/kubernetes&quot;&gt;github.com/kubernetes&lt;/a&gt;や&lt;a href=&quot;https://github.com/kubernetes-incubator&quot;&gt;github.com/kubernetes-incubator&lt;/a&gt;を見ると分かる通りKubernetesの主要なツール群はGoで書かれているケースが圧倒的に多いという状況において、急にRubyのカンファレンスでKubernetesの話をし始めてコイツ頭大丈夫か・・と思われてもおかしくない内容でもあったので、このTalkの後にインドのRubyistからは例えばどういう反応が得られるか？というあたりは地味に興味のあった点でした。結果としてはTalkの最中の質疑応答やTalkの後のカジュアルな会話で大変多くの方に話しかけて頂き、少なくとも直接お話できた方に関しては興味深く話を聞けたという方が多かったようなので一安心しました。&lt;/p&gt;

&lt;h2&gt;Hackerspace Mumbai&lt;/h2&gt;

&lt;p&gt;Hackerspace Mumbaiの人から2月のmeetupでRubyに関係するmeetupを開きたいんだけどと&lt;a href=&quot;https://twitter.com/hackmum/status/961355568186298371&quot;&gt;相談を受けた&lt;/a&gt;話が面白かったのでその部分についても記録を残しておこう思います。声をかけてもらったのはインドに到着した初日だったのですが、このHackerspace Mumbaiの中の人と会話をしたところ、今回僕が元々ムンバイを訪れる予定だった日程にあわせて次のMeetupを開催するよう調整するのでぜひTalkしていってよ、とお誘いを頂いたので、中々ない機会だったのでお邪魔してみることにしました。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/files/attended-rubyconf-india-2018/microsoft_mumbai.jpg&quot; alt=&quot;ホールの様子&quot; style=&quot;display: block; margin-left: auto; margin-right: auto&quot;/&gt;&lt;/p&gt;

&lt;p&gt;会場はMicrosoft Mumbaiのオフィスでしたが、最近できたばかりだと思うんですが中はとてもキレイでした。僕が乗る予定だった飛行機が2時間以上遅延した関係で当日会場への到着がかなり遅れてしまい、大半の人が帰ってしまった後ではありましたが、ありがたいことに少数ですが有志の方がまだ残っていてくださり、残った方々の前でRubyConfIndiaでのTalkと同じお話をさせてもらいました。残った方々が少数だった分RubyConfIndia以上に参加者の方々のバックグラウンドや実際に抱えている課題などの少し込み入った話まで含めて会話することができたのが良かったです。&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;ja&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Feb&amp;#39;18 &lt;a href=&quot;https://twitter.com/hashtag/mumtechup?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#mumtechup&lt;/a&gt; : &lt;a href=&quot;https://twitter.com/remore?ref_src=twsrc%5Etfw&quot;&gt;@remore&lt;/a&gt; giving an insightful talk on &lt;a href=&quot;https://twitter.com/hashtag/ruby?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#ruby&lt;/a&gt; as well about &lt;a href=&quot;https://twitter.com/kubernetesio?ref_src=twsrc%5Etfw&quot;&gt;@kubernetesio&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://twitter.com/hashtag/CRI?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#CRI&lt;/a&gt;-O using &lt;a href=&quot;https://twitter.com/grpcio?ref_src=twsrc%5Etfw&quot;&gt;@grpcio&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/hashtag/ruby?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#ruby&lt;/a&gt; &lt;a href=&quot;https://t.co/40X76kXqK1&quot;&gt;pic.twitter.com/40X76kXqK1&lt;/a&gt;&lt;/p&gt;&amp;mdash; Hackerspace Mumbai (@hackmum) &lt;a href=&quot;https://twitter.com/hackmum/status/965171853915500544?ref_src=twsrc%5Etfw&quot;&gt;2018年2月18日&lt;/a&gt;&lt;/blockquote&gt;


&lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;


&lt;h2&gt;Openなコミュニティでのつながり&lt;/h2&gt;

&lt;p&gt;最終的に現職にはちょうど7年間勤めた計算になるのですが、振り返ると7年前はRubyを1行も書いたことがない状態だったし、そんな自分が7年後にカンファレンスに参加して現地コミュニティでTalkなどしているということを考えると、面白い謎な道に迷い込んだなあと思います。家でこの7年間にもらったカンファレンスTシャツやノベルティなど整理していたら凄い思い出と情報の洪水みたいな感じになってしまい収拾がつかなくなったのでその辺は割愛しますが、この面白い謎な道が出来上がったのは、所属や立場など問わず澤田と関係してくださっている全ての人のおかげであり、そこで関係させてもらった全ての人にこの場を借りてお礼を伝えたいと思います。&lt;/p&gt;

&lt;p&gt;例えば今回の面白い謎な展開の一つであるHackerspace Mumbaiに立ち寄ったことも、オープンソースやOpenなコミュニティという要素があったから発生したものでした。Hackerspace Mumbaiのオーガナイザーの一人であるAugustineからは、「日本からももっとオープンソース界隈の人にムンバイに来てほしいと思ってるので、お知り合いの方でインドに来る人がいればぜひHackerspace Mumbaiに立ち寄っていってください。オープンソースを志す方のお立ち寄りをいつでも歓迎します」（意訳）とメッセージをもらっています。個人や組織にとってのOpenであることの意義や重要性は日に日に高まっているように感じていますが、これからもOpenであろうとすることに対する矜持を持ち続けていきたいと感じさせる出来事でした。&lt;/p&gt;

&lt;p&gt;話がまとまらないのでこの辺で筆を置くつもりですが、最後に蛇足を1つだけ。RubyConfIndiaオーガナイザーの@gautamregeの話によると今年は合計で82件のCFP応募があったとのこと。この中から10件のTalkが採択されたので、通過率は約8分の1の計算になります。どのカンファレンスもそうであるようにRubyConfIndiaもまた、その場でしか体験できないコミュニティの体験に溢れていました。渡印の際にeVisaを取得する必要がありその点が若干手間はありますが、2017年4月からは&lt;a href=&quot;https://www.indembassy-tokyo.gov.in/jp/visa_on_arrival_jp.html&quot;&gt;一定の条件を満たした日本国籍の方は到着時にその場でビザ発行もされる模様&lt;/a&gt;で移動に関する障壁は下がっている状態です。長期にお休みが取れそうな方は、インドの特にムンバイとバンガロールあたりも訪問先に加えてみても面白いかもしれないと思いましたので、最後に記しておきます。（RubyConfIndiaよりも採択率が低くなってしまうかもしれませんが、国内に居ながらにしてレベルの高いTalkと出会うことができるRubyKaigiの&lt;a href=&quot;https://cfp.rubykaigi.org/events/2018&quot;&gt;CFP提出は今月末まで&lt;/a&gt;のようです。こちらももちろんオススメなことは言うまでもありません）&lt;/p&gt;
</description>
    <dc:date>2018-02-19T00:00:00+09:00</dc:date>
  </item>
  <item rdf:about="http://rimuru.lunanet.gr.jp/notes/post/rubyconf-taiwan-2016/">
    <title>RubyConf Taiwanが良い感じだった</title>
    <link>http://rimuru.lunanet.gr.jp/notes/post/rubyconf-taiwan-2016/</link>
    <description>&lt;p&gt;&lt;img src=&quot;/files/rubyconf-taiwan-2016/taipei.jpg&quot; alt=&quot;台北市内の様子&quot; style=&quot;display: block; margin-left: auto; margin-right: auto&quot;/&gt;&lt;/p&gt;

&lt;p&gt;この記事は&lt;a href=&quot;http://www.adventar.org/calendars/1617&quot;&gt;Recruit Engineers Advent Calendar 2016&lt;/a&gt;の4日目の記事です。&lt;/p&gt;

&lt;p&gt;12月2日〜3日の2日間で台湾で開催されたRubyConf Taiwan 2016にSpeakerとして参加してきました。初参加だったのだけど想像してた以上に良いカンファレンスで、周囲のRubyistが何人も毎年台湾に上陸している意味が少し分かったような気がします。良かった事を僕の観点でざっくりまとめていきます。&lt;/p&gt;

&lt;h2&gt;こじんまりしてる割には濃い人がごろごろいる&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/files/rubyconf-taiwan-2016/session_room.jpg&quot; alt=&quot;小ホールの様子&quot; style=&quot;display: block; margin-left: auto; margin-right: auto&quot;/&gt;&lt;/p&gt;

&lt;p&gt;RubyConf Taiwanに今回初めて参加したので傾向は分からないのですが、2016について言うとRubyKaigiやRubyConfでTalkをしてるようなSpekaerが多くてTalkは普通に面白かったです。内容もTechnicalなTalkが多い印象で、これならKaigi慣れしてる日本のRubyistが参加しても（RubyConfの雰囲気とかとは違ってそんなにびっくりせずに）きっと楽しめそう。なお、今年の参加者数は初日のRyudoさんのアナウンスによると19カ国から278人が参加してるとのことで、International Conferenceなのに割とこじんまりとしてるのも特徴的でしょうか。人数が多すぎないカンファレンス、懇親会の時間とかがそこまで忙しくなく過ごせて、たのしくRubyの話ができる良さがあるのでこれはこれで良いなと感じます。&lt;/p&gt;

&lt;h2&gt;英語力を鍛えるのに最適かも&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/files/rubyconf-taiwan-2016/lightning_talk.jpg&quot; alt=&quot;アンカンファレンスでのLightning Talkの様子&quot; style=&quot;display: block; margin-left: auto; margin-right: auto&quot;/&gt;&lt;/p&gt;

&lt;p&gt;これも例年どうなのか傾向は分かりませんが、今年のRubyConf TaiwanではSpeakerが中国語で話すセッションでは中→英の同時通訳が提供される仕様になっており、英語が使えればコンテンツを十分楽しめる設計になってました。やらないと生きていけない環境に身を置かないと学習が進まない僕のような人にとっては、こういう環境は良いなーと思います。ちなみに写真は初日のアンカンファレンスでのLTの様子なんだけど、LTでは同時通訳が提供されなかったので、見ての通り中国語と英語が混ざったパワーコンテンツを楽しむことができます。中国語まで学習するの。。と半分白目になるけど、英語部分だけ頑張って理解しようとすれば生きていけます。&lt;/p&gt;

&lt;p&gt;あと、これはSpeakerという立場での話で個人の感想なんですが、RubyKaigiとかRubyConfでTalkをするよりも圧倒的にRubyConf TaiwanでTalkをする方が緊張しなかったです。2年前に&lt;a href=&quot;http://rubykaigi.org/2014/presentation/S-KeiSawada&quot;&gt;RubyKaigi 2014でTalkをした&lt;/a&gt;時は日本人＋英語ネイティブという聴衆からの霊圧が高くて英語がうまく伝わってるか超不安に駆られて嫌な汗を沢山かいてきたり（それでも英語で話した方が内容を的確に伝えられたと思うので英語での発表したこと自体は後悔してないけど）、先月RubyConfでLTしてきた時も英語が母国語の人を相手にしてきたのでそれなりに焦りながら話してきたのですが、RubyConf Taiwanはなぜだか緊張感をそんなに感じずにTalkすることができました。多分いくつかの要因があって、お互い母国語じゃない言語で話しているという意識だとか、会場が学校の施設だったので雰囲気が親しみやすくて良かったとかあったと思いますが、とにかく英語でのTalkをするにあたって障壁が少ない感じがしました。&lt;/p&gt;

&lt;p&gt;なお、台湾という国全体についての英語力の感想としては、街中でも英語が通じないシーンもそこそこあるという印象なので、カンファレンスの外で英語力を鍛えられるという感じではないことには注意が必要です（タクシーは6回くらい乗車したけど7割くらいの確率で英語ダメだった）。&lt;/p&gt;

&lt;h2&gt;コスパがとても良い&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/files/rubyconf-taiwan-2016/beef_noodle.jpg&quot; alt=&quot;台北の牛肉麺（Ryudoさんオススメの店）&quot; style=&quot;display: block; margin-left: auto; margin-right: auto&quot;/&gt;&lt;/p&gt;

&lt;p&gt;移動交通費が安かったです。下手するとRubyKaigiのために新幹線で京都へ行くより安くて、僕の場合はTigerAirを使って片道1万円で行けたし、往復1.3万円という人もいました。今回&lt;a href=&quot;http://nijibox.jp/news/technology/3313/&quot;&gt;会社の出張として&lt;/a&gt;行かせてもらったものの、これなら個人でも出せる範囲だし敷居が下がっててとても良いですね。飛行機だけじゃなくて現地タクシーや電車も日本より安く、Uberも使えたし移動は全く困らなかったです。&lt;/p&gt;

&lt;p&gt;それから、食べ物がおいしくて生活の満足度が高いのはさすがアジアですね感。台北の街中ですらレストランの値段は十分安価だし（写真の牛肉麺は日本円で400円くらいしたけど、探せば安いところはいくらでもある）、街を歩いてると日本語もよく見かけるから探したり選ぶのも楽しい。中国語だったとしても漢字から意味を類推することもできて便利に暮らせるあたりもコスパを底上げしてくれる。&lt;/p&gt;

&lt;p&gt;なお、治安については僕の2日間弱の滞在期間中は問題なかったです。これは住んでみないと分からないけど、台北の街中で少し遅めの時間だけど現地学生が歩いてたりとかしており、治安そんなに悪くなさそうには見えたけどどうなんですかね。&lt;/p&gt;

&lt;h2&gt;ちなみに&lt;/h2&gt;

&lt;p&gt;Talkはこういう話をしました。Rubyからword2vecとか使いたいと思った時に考えたことや試したことを話してきた感じです。話してる最中に一個英語が出てこなくてTalkを途中一時停止して会場の人に日本語で助けを求める事案があったのだけど、モリスさんにerror（誤差）という単語を教えて頂いて（大感謝）かろうじてTalkをすることができた感じでした。&lt;/p&gt;

&lt;script async class=&quot;speakerdeck-embed&quot; data-id=&quot;958478bfbc754872a89fc7cbaf3dc03c&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;


&lt;h2&gt;おわりに&lt;/h2&gt;

&lt;p&gt;台湾のRubyistの中にはRubyKaigiやRubyWorldConferenceによく来てる人達も多くいて、Keep in touchしやすいコミュニティが形成されてるのもとても良いと思います。日本のRuby関係のイベントに一通り出て、次何出ようかなと考えているRubyistがもしいたら、僕からは来年のRubyConf Taiwanをオススメしたいと思いました。&lt;/p&gt;
</description>
    <dc:date>2016-12-04T00:00:00+09:00</dc:date>
  </item>
  <item rdf:about="http://rimuru.lunanet.gr.jp/notes/post/attended-rubyconf-2016/">
    <title>RubyConf 2016に参加しました</title>
    <link>http://rimuru.lunanet.gr.jp/notes/post/attended-rubyconf-2016/</link>
    <description>&lt;p&gt;11月10日〜12日の3日間でオハイオ州シンシナティで開催されていたRubyConf 2016に参加してきた日記の続きです。0日目の様子は&lt;a href=&quot;/notes/post/rubyconf-2016-day-0&quot;&gt;こちら&lt;/a&gt;。&lt;/p&gt;

&lt;h2&gt;RubyConfコミュニティ&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/files/attended-rubyconf-2016/community.jpg&quot; alt=&quot;スポンサーブースと休憩スペースの様子&quot; style=&quot;display: block; margin-left: auto; margin-right: auto&quot;/&gt;&lt;/p&gt;

&lt;p&gt;今回の参加者は700名弱とのこと。US国内からの参加者が大半という感じだった。僕が会って話をしたSpeaker含めた20人くらいの人を思い出すと、San FranciscoやSeattle, DCから来てた人が割合的には多かった。シカゴから来た人など地元の人もちらほら。MatzのKeynoteで&quot;RINSWAN&quot;(Ruby Is Nice So We Are Nice)という言葉が出てきていたのだけど、RubyConfコミュニティも場の雰囲気は居心地が良かった。お互いを尊重する空気を感じられた。直前にあった選挙の影響が気になってたけど、大きな摩擦とかは（僕から見える非常に狭い範囲では）特に見えなかったのは良かった。&lt;/p&gt;

&lt;h2&gt;ランチ&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/files/attended-rubyconf-2016/lunch.jpg&quot; alt=&quot;ランチ&quot; style=&quot;display: block; margin-left: auto; margin-right: auto&quot;/&gt;&lt;/p&gt;

&lt;p&gt;ランチのホールにテーブルが沢山用意されており、参加者が適当に着席して食べるスタイルだったので、3日間でいろんな参加者の人と会話することができた。SeattleのGoogleに勤務してるエンジニアやSan FranciscoのGrouponのエンジニアだとか、DCでコンサルタントやってる人などいろんな人が来ていた。今日一番良かったトークはとか、普段なにしてるとか日本はどんな感じなのとか話すなどしていた。RubyKaigiの話題になって@kakutaniとKaigiについて紹介したり、Rubyの中身に興味があるという人にRHGを薦めてみるなどもした。&lt;/p&gt;

&lt;h2&gt;Talks&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/files/attended-rubyconf-2016/hall.jpg&quot; alt=&quot;メインホール&quot; style=&quot;display: block; margin-left: auto; margin-right: auto&quot;/&gt;&lt;/p&gt;

&lt;p&gt;Talkの内容については、意外にもTechnicalにレベルの高いTalkの数は限定的だった。Rubyを使い始めたばかりの人も一定以上の数いて、そういう人向けのセッションがあったり、&quot;NYCのビル建設プロジェクトの失敗例に学ぶ、良い振り返りのコツ&quot;（意訳）とか、&quot;見積・抽象化・認知とその精度&quot;（超意訳）みたいなテーマの話もあったりもしていて、（おそらくは）考えられて意図的に広い基準でTalkが選ばれているようだった。というか、なんなら比較的若手な人がKeynoteをバンバンやってて、それも結構驚いた。コミュニティに一定以上の新規参加者が登場していて、新陳代謝が発生しやすくなってる印象を受けた。&lt;/p&gt;

&lt;p&gt;とはいえレベルが高いトークもあって、他のカンファレンスではKeynoteやるような人が普通のTalkセッションしてたりもするのは面白かった。詳しくは会社のブログの方にまとめようと思うけど、@tendorloveのGCの話や@indirectのOSS開発に参加する方法についての話、@schneemsのsprocketsを速くした話などが面白かった。&lt;/p&gt;

&lt;h2&gt;Lightning Talk&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/files/attended-rubyconf-2016/lightning-talk.jpg&quot; alt=&quot;LTの募集ボード&quot; style=&quot;display: block; margin-left: auto; margin-right: auto&quot;/&gt;&lt;/p&gt;

&lt;p&gt;結局backup/waitlisted speakerとして参加したものの登壇する必要がなさそうな気配がしてきていたので、2日目の午前中にLightning Talkに応募できると聞いて応募してLTをしてきた。LTも前半の4枠はScholarsという枠が用意されていて、超若手の人が話していて盛り上がっていた。LTもTalkと同じでいろんな人が話をしていて、Railsチュートリアルの作者の人もLTしてたりしてバリエーションが豊富で楽しんだ。僕のターンでは楽しく話をしてきたものの、英語が思ってた以上に出てこなくて焦りながら話していた。トーク終わった後で何人かの人がGreat Talkとか話しかけてくれたり、Seattle.rbのRyan Davisが何のパーサ使ってるのとか話してくれたりしたので、ある程度は伝わってたような状態を確認ができて最終的には安堵した。&lt;/p&gt;

&lt;script async class=&quot;speakerdeck-embed&quot; data-id=&quot;fab17f0d4c1a47f8ab49fd45ee94ee14&quot; data-ratio=&quot;1.33159947984395&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;


&lt;h3&gt;RubyConf 2017の開催地はニューオーリンズ&lt;/h3&gt;

&lt;p&gt;3日目の終わりに来年のRubyConfの開催地がニューオーリンズと発表されていた。今回の感想をお寄せ下さいというアンケートがあったのだけど、そこでは2018の開催地どこが良いと思うかという項目もあり、参加者の声を聞きながら全国各地でやっていくスタイル面白いなーとも思った。&lt;/p&gt;

&lt;p&gt;RubyConf、英語が苦ではなくかつTechnicalなトークだけを聞きたいわけでもないRubyistであれば誰でも楽しめるカンファレンスだったので、興味のある人は会社の補助や&lt;a href=&quot;http://www.ruby.or.jp/ja/news/20160810.html&quot;&gt;RubyAssociationの助成&lt;/a&gt;などの機会も利用しながら参加してみるとよいと思う。&lt;/p&gt;
</description>
    <dc:date>2016-11-14T00:00:00+09:00</dc:date>
  </item>
  <item rdf:about="http://rimuru.lunanet.gr.jp/notes/post/rubyconf-2016-day-0/">
    <title>RubyConf 2016に参加しています</title>
    <link>http://rimuru.lunanet.gr.jp/notes/post/rubyconf-2016-day-0/</link>
    <description>&lt;p&gt;11月10日〜12日の3日間でオハイオ州シンシナティで開催されていたRubyConf 2016に参加しているので、その日記のようなものです。今回は会社に渡航費をスポンサーしてもらって来ているため、トークの内容とかの技術的なこととかは後日会社のブログに投稿して、こちらには生活の記録を書きます。&lt;/p&gt;

&lt;h3&gt;11月9日：大統領選開票、Speaker Dinner&lt;/h3&gt;

&lt;p&gt;羽田→シカゴ→シンシナティという経路で向かった。合計13時間くらいの飛行時間中、機内では主にスライド作りをして過ごしていた。夏に出したCFPが採択はされなかったのだけどbackup/waitlisted speakerとして登録されていたので、万が一Speakerとして依頼が来た場合に備えるためにある程度作っておいた。暇つぶしにシン・ゴジラも見たけど大変良かった。SE含めてBGMも良かったしあれは劇場で観るとさぞ楽しかろう。&lt;/p&gt;

&lt;p&gt;シカゴに着いてネットを見てトランプが勝ったことを知った。移動スケジュールがほぼ一緒だった@mrknと大統領選やApple SIMの世間話などをしてターミナル移動していた。SFOもそうだったんだけど、ORDでも電車でターミナル間の移動ができて便利。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/files/rubyconf-2016-day-0/photogenic.jpg&quot; alt=&quot;ORDでConcourse Cへ向かう途中の通路&quot; style=&quot;display: block; margin-left: auto; margin-right: auto&quot;/&gt;&lt;/p&gt;

&lt;p&gt;というかORD、期待してなかったけど大きめの国際空港で歩いてて楽しい。特にTerminal1でConcourse B-&gt;Cに向かう時の通路が写真のような感じでフォトジェニックでテンションが上がった。乗り継ぎの空き時間で食べたマックのMorning Mealが、日本で食べる朝マックと内容そこまで変わらないのに値段だけ5.8USDもかかって3倍くらいした。安定の食のコスパの悪さ、これがUSクオリティ。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/files/rubyconf-2016-day-0/cincinnati.jpg&quot; alt=&quot;シンシナティの長閑な様子&quot; style=&quot;display: block; margin-left: auto; margin-right: auto&quot;/&gt;&lt;/p&gt;

&lt;p&gt;シンシナティ(CVG)に着いてUberでホテルまで移動した。恐ろしくのどかな土地で良い。Uberの運ちゃんと選挙について話して、トランプのことを彼は変わり者でdifferentだ、議会が彼をうまく止めてくれることを願うみたいなことを言ってた。ホテル着いてランチ食べようと思ったけど探す気力が足りてなくて、近くのWalgreensでハリボーとナッツを買って昼飯とした。Walgreensの店員さんの様子がSFのそれとは大分違うような。商品探してて困ってたら声かけてくれるし、プラスチック袋は2重にして包んでくれるし、僕の知ってるSFの薬局とは様子が違っていて戸惑う。。シンシナティが良い街なんだろうか。&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;ja&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Dear &lt;a href=&quot;https://twitter.com/hashtag/rubyconf?src=hash&quot;&gt;#rubyconf&lt;/a&gt; attendees and speakers: _whatever_ happens tomorrow, it’s likely that some will be upset about the outcome. Practice empathy.&lt;/p&gt;&amp;mdash; Ernie Miller (@erniemiller) &lt;a href=&quot;https://twitter.com/erniemiller/status/795695330230759430&quot;&gt;2016年11月7日&lt;/a&gt;&lt;/blockquote&gt;


&lt;script async src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;


&lt;p&gt;&lt;code&gt;#rubyconf&lt;/code&gt;タグで、大統領選関係のツイートがちらほら目についた。No one knows what's going to happenという感じなんだが、practice empathyするぞという意気込みだけは得た。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/files/rubyconf-2016-day-0/speaker-dinner.jpg&quot; alt=&quot;Speaker Dinnerの様子&quot; style=&quot;display: block; margin-left: auto; margin-right: auto&quot;/&gt;&lt;/p&gt;

&lt;p&gt;Speaker Dinner、前半は立席でMatzや笹田さん国分さんデカ外人さんとかと談笑した。後半は着席して4人くらいのSpeakerと話をしたけどNiceな人たちだった。Techの話になった時だけある程度概要分かるけど、それ以外の会話は語彙が追いつかず全く会話には入れないのは予想通りの展開。&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/GnQ7bDGhOLI&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;


&lt;p&gt;最後の方で音楽談話になって、ロックマン2やコントラの音楽を演奏するバンドがアメリカにあるって聞いたのが個人的には胸アツだった。Bit Brigadeというバンド名だそうで、庶民的なアイデアをネタで終わらせないで一定以上に上手いプレイヤーがちゃんと演奏しててエラいなという尊敬の気持ち。著作権処理されてるかとか要らない心配もしてしまうけど、演奏は原作の再現度が高くて作業のBGMにできそう。&lt;/p&gt;

&lt;p&gt;一通り話終わってホテルに戻って、明日のスケジュールをプロフィールやGitHubアカウントを眺めたりして予習をいくらかして長い一日終わり。&lt;/p&gt;
</description>
    <dc:date>2016-11-09T00:00:00+09:00</dc:date>
  </item>
  <item rdf:about="http://rimuru.lunanet.gr.jp/notes/post/handling-doc2vec-or-scikit-learn-from-ruby/">
    <title>Rubyからdoc2vecやscikit-learnを扱う</title>
    <link>http://rimuru.lunanet.gr.jp/notes/post/handling-doc2vec-or-scikit-learn-from-ruby/</link>
    <description>&lt;p&gt;RubyからPythonやJuliaのパッケージを呼び出せるvirtual_moduleっていうgemを最近作っています。下記の例では、いくつかのコマンドのmanpageをドキュメントとして読み込むところまでをRubyで書いて、doc2vecの処理にかける部分はPythonを呼び出してgensimに任せるということをやっています。&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/remore/06457f8b0faa1f8583601767f744ea93.js&quot;&gt;&lt;/script&gt;


&lt;p&gt;個人的には文字列処理や汎用的なプログラミングをRubyで済ませられるととてもラクで助かるので、このvirtual_moduleに限らずこのような仕組みが普及するといいなと思っています。&lt;/p&gt;

&lt;p&gt;virtual_moduleはPythonだけではなくJuliaも呼び出すことができます。Juliaを呼ぶときの例はこんな感じです。下記ではK-meansクラスタリングを呼び出しています（下記コードは&lt;a href=&quot;http://clusteringjl.readthedocs.io/en/latest/kmeans.html&quot;&gt;Clustering.jlの公式ドキュメント&lt;/a&gt;から移植したもの).&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/remore/084b9170d1ddad9490c7d3c9664b2f3f.js&quot;&gt;&lt;/script&gt;


&lt;p&gt;Rubyで大規模なループ処理を書くと&lt;a href=&quot;https://github.com/remore/virtual_module&quot;&gt;ループ数の増加に伴って実行時間が飛躍的に伸びてつらい経験をした&lt;/a&gt;ので、RubyからJuliaを動かせるように作っていたのがVirtualModuleの開発の最大の目的なので、このJuliaで動かす部分はもう少し便利にできないか考えています。（現在はmsgpackでデフォルトで変換可能な型しか相互変換できないため、Juliaの特徴の一つである多次元配列や第一級オブジェクトであるFunctionを扱いづらい状態）&lt;/p&gt;

&lt;p&gt;ちなみに、scikit-learnも試しに動かしてみました。交差検定も一応動きます。&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/remore/54c41811cb2d73f83b101b118448f605.js&quot;&gt;&lt;/script&gt;


&lt;p&gt;sklearnが動くところまでは嬉しいのですが、メソッド呼び出しの時に &lt;code&gt;:_&lt;/code&gt;  シンボルを渡さないといけないところが見苦しいところです。Rubyではカッコなしでメソッド呼び出しをできますが、呼び出されたメソッド側でカッコが省略されて呼び出されたかどうかを判断する方法がない（少なくとも僕は知らない）ので、引数を取らないメソッド呼び出しの時にそれがメソッド呼び出しなのか関数であれば関数オブジェクト自体を呼び出してるのかという違いを明示的に記述する羽目になっているというのが、シンボルを渡している理由です。&lt;/p&gt;

&lt;p&gt;もう少し詳細なVirtualModuleの説明を&lt;a href=&quot;http://qiita.com/remore/items/f8d248df21f6e973127e&quot;&gt;Qiitaの方にも書いてみた&lt;/a&gt;ので興味がある人はそちらもどうぞ。&lt;/p&gt;
</description>
    <dc:date>2016-10-05T00:00:00+09:00</dc:date>
  </item>
  <item rdf:about="http://rimuru.lunanet.gr.jp/notes/post/best-chilled-pasta-recipe/">
    <title>桃とマンゴーの冷製パスタを作った</title>
    <link>http://rimuru.lunanet.gr.jp/notes/post/best-chilled-pasta-recipe/</link>
    <description>&lt;p&gt;&lt;img src=&quot;/files/best-chilled-pasta-recipe/chilled_pasta.jpg&quot; alt=&quot;桃とマンゴーの冷製パスタととうもろこしの冷製スープ&quot; /&gt;&lt;/p&gt;

&lt;p&gt;週末に桃とマンゴーの冷製パスタを作った。&lt;a href=&quot;http://www.nisshin.com/entertainment/recipe/sp/P-1090.html&quot;&gt;レシピの内容&lt;/a&gt;をベースに、にんにくと塩の量を2倍使って、トマトを追加で入れたところかなりおいしく仕上がった。2年前にクックパッドで見つけたレシピ使った時は思ってた味にならなく悔しい思いをしたのだけど、今回はリベンジを果たせた気がする。前回作った時はフルーツを加えて塩やにんにくを抑えめにしていたのだけど、それだとあっさりした甘いパスタサラダやデザートっぽい料理になってしまって、食事のメインで出すとちょっと拍子抜けしてしまうような感じの味になってしまっていたのが失敗だったと振り返っていて、今回は塩とにんにくを強化して食事感を強く打ち出せるか試したら成功したという感じ。にんにくとフルーツの相性が良いのが不思議な発見だった。&lt;/p&gt;

&lt;p&gt;ついでにとうもろこしの冷製スープも&lt;a href=&quot;http://cookpad.com/recipe/2244445&quot;&gt;このレシピ&lt;/a&gt;で作ったけどこれも美味しかった。とうもろこしの分量をレシピよりも少し多めに用意したけど、水分が足りない感じもせず味はちゃんとまとまった。どちらもまた作りたいのでメモ。&lt;/p&gt;
</description>
    <dc:date>2016-08-03T00:00:00+09:00</dc:date>
  </item>
  <item rdf:about="http://rimuru.lunanet.gr.jp/notes/post/bought-a-slow-cooker/">
    <title>スロークッカーを買って2週間が経った</title>
    <link>http://rimuru.lunanet.gr.jp/notes/post/bought-a-slow-cooker/</link>
    <description>&lt;div style=&quot;text-align:center;&quot;&gt;&lt;img src=&quot;/files/bought-a-slow-cooker/slow-cooker.jpg&quot; alt=&quot;slow cooker&quot; /&gt;&lt;/div&gt;


&lt;p&gt;スロークッカーを買いました。この2週間で4品（ぶり大根、キャベツと鶏肉のトマト煮込み、カレーライス、牛すじとにんにくの味噌シチュー）を作ったけど大体簡単でかつおいしく作れた。&lt;/p&gt;

&lt;div style=&quot;text-align:center;&quot;&gt;&lt;img src=&quot;/files/bought-a-slow-cooker/prep.jpg&quot; alt=&quot;prep&quot; /&gt;&lt;/div&gt;


&lt;p&gt;こんな感じで材料を切って調味料加えれば仕込みが終わる簡単さが素晴らしい。写真はこの週末に作った味噌シチューの様子。料理は好きだが作る時間が取れない社会人にピッタリですねこれ。今年のベストバイになりそう。&lt;/p&gt;

&lt;div style=&quot;text-align:center;&quot;&gt;&lt;img src=&quot;/files/bought-a-slow-cooker/beef-tendon-stew.jpg&quot; alt=&quot;stew&quot; /&gt;&lt;/div&gt;


&lt;p&gt;出来上がりの写真。煮込み5時間で、ネギがほぼ溶けてスジがいい感じの柔らかさに。煮込み料理、時間がかかるのでこれまで挑戦してこなかったんだけどスロークッカーの登場によってレパートリーが拡大の兆しを見せてる。&lt;/p&gt;

&lt;p&gt;スロークッカーのいいところのまとめ：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;調理は基本的に「材料を切って」「調味料・煮汁を注ぐ」だけなので、調理時間が短くて済む。平均20〜30分&lt;/li&gt;
&lt;li&gt;手順が簡単な分、出来上がりの味もばらつきが少なくおいしく作れる&lt;/li&gt;
&lt;li&gt;まな板と包丁だけで調理が完結するから、洗い物が減って後片付けの時間短縮にもつながる&lt;/li&gt;
&lt;li&gt;コンロを占有しないので、マルチタスク処理（コンロを使った他の料理とか）も余裕&lt;/li&gt;
&lt;li&gt;一回で5~6人前くらいの分量は余裕で作れるので、ちょっとの手間で長くおいしい料理を楽しめる&lt;/li&gt;
&lt;li&gt;スロークッカーは定番のモデルで&lt;a href=&quot;http://www.amazon.co.jp/o/ASIN/B009JXQWR4/remore-22/ref=nosim&quot;&gt;amazonで4500円くらい&lt;/a&gt;くらいの価格で手に入るので、導入の敷居が低い&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;似たようなことは圧力鍋でもできるという話もあるけど、圧力鍋は加圧にコンロを必要とするのに対してスロークッカーが必要なのは電気のみであり、コンロの数が少ない環境でも使えるから扱いやすい。それにコンロが多い環境であってもコンロが埋まってると鍋のスワッピングが発生して大変だったりするが、電気調理器ならそういう大変さがなくて便利。&lt;/p&gt;

&lt;p&gt;炊飯ジャーで同じようなことをやってる人を見たこともあるけど、スロークッカー用に書かれてる&lt;a href=&quot;https://www.google.co.jp/search?q=slow%20cooker%20recipes&amp;amp;oq=slow%20cooker&quot;&gt;世界中の様々なレシピ&lt;/a&gt;も使えないし、そもそも炊飯用に設計された製品のUIで一般調理をするというUXがつらい感じなので向かない人も多いはず。あと煮込み料理に炊飯器を使ってしまうと肝心の炊きたてのご飯が食べられない問題があるので、僕の場合はこの選択肢は初めからなかった。&lt;/p&gt;

&lt;p&gt;スロークッカーの難点は調理に時間がかかるところで、大体数時間から8時間くらいの煮込み時間が必要。その間に別のタスクをこなせば良いので僕は気にならないが、それがつらいという人はコンロで直火で短時間で終わる調理やレンジを使った料理が向いてそう。それから、夏場は煮込み料理の足が早そうなので冷蔵戦略を追加で考えないといけない。&lt;/p&gt;

&lt;p&gt;スロークッカーの世間的な評価は&lt;a href=&quot;http://b.hatena.ne.jp/entry/www.lifehacker.jp/2015/01/150115slow_cooker.html&quot;&gt;このページとか&lt;/a&gt;が参考になる。&lt;a href=&quot;http://lifehacker.com/tag/slow-cooker&quot;&gt;Lifehacker&lt;/a&gt;とか見るに海外では一つの定番家電になってるぽいし日本でももっと流行ったらいいのに（レシピがもっと増えたら嬉しい）。試すレシピが足りなくなってきたら、普通の煮込み料理のレシピを持ってきて煮込み時間をn倍して読み替えながら使えばレシピ少ない問題も克服できそうだし、僕の煮込み料理人生が始まった感じがする（n倍の部分は&lt;a href=&quot;http://lifehacker.com/make-almost-any-recipe-work-in-a-slow-cooker-with-this-1593228858&quot;&gt;こんな比較表&lt;/a&gt;もあるようなので参考にできそう）&lt;/p&gt;
</description>
    <dc:date>2016-04-10T00:00:00+09:00</dc:date>
  </item>
  <item rdf:about="http://rimuru.lunanet.gr.jp/notes/post/attended-ivs-cto-night-2015winter-kyoto/">
    <title>IVS CTO Night &amp; Day 2015 Winter powered by AWSに参加してきました</title>
    <link>http://rimuru.lunanet.gr.jp/notes/post/attended-ivs-cto-night-2015winter-kyoto/</link>
    <description>&lt;p&gt;&lt;img src=&quot;/files/attended-ivs-cto-night-2015winter-kyoto/venue.jpg&quot; alt=&quot;会場の様子&quot; /&gt;&lt;/p&gt;

&lt;p&gt;2週間ほど前になりますが、先日京都で開催されたIVS CTO Night &amp;amp; Day 2015 Winter powered by AWSに株式会社ニジボックスの開発室室長として参加してきました。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://aws.typepad.com/sajp/2015/12/ivs-cto-night-day-2015-winter-powered-by-aws.html&quot;&gt;参加報告は既に参加された何人もの方がまとめられている&lt;/a&gt;ので、そちらを参照していただくと雰囲気や内容がよりつかみやすいかと思います。12月に京都を訪れたのは今回が初めてでやや肌寒い気候ではありましたが、集まったCTO各位との濃い議論や熱気によって寒さを全く感じない出張となりました。&lt;/p&gt;

&lt;p&gt;全体のスケジュールを通しては、特にTresureData太田さんのKeynoteが圧巻の内容で、海外で起業する上で必要だったFundraising, Marketig, Networking, Hiring, Sales, Managementなど手元で取ったメモの量が圧倒的に多かったです。&lt;/p&gt;

&lt;p&gt;その他の会期中のプログラムも参考になるコンテンツが多かったです。一口にCTOといっても役割の種類や在り方というのが実は無数に存在している世界だったりするので（例えば僕は肩書としてはCTOではなくてVP of Engineeringだったりしますし）、モノカルチャーというよりも多様性の世界です。アンカンファレンスや懇親会で多くの方とお話させて頂きましたが、事業や組織の背景や目指すところなど一見似てるようで全然違っている、色々な方と腰を落ち着けて話をできるため、どんな方とのお話も非常に興味深く勉強になります。&lt;/p&gt;

&lt;p&gt;参加してみて持ち帰りたいと思ったアイデアがいくつかあったのですが、近いうちに優先的にやってみたいこととして、エンジニアの行動指針を明文化を進めようと考えています。新しく思いついたというよりはタイミング的に今着手するのがよいと感じたということなのですが、背景としては開発組織の規模が小規模という単位に収まりきらなくなってきた今のタイミングで、現時点でのありたい姿を言葉に落として、その姿について組織内外問わずにコミュニケーションが取りやすい状態を作っておくことには一定の価値があるように思えたということがあります。&lt;/p&gt;

&lt;p&gt;また今回の参加では、自分も&quot;Code, Arguments and Startups&quot;というタイトルでTech Pitch(LT)させてもらいました。とにかくCTO各位の霊圧が凄かったので、事前準備のプレッシャーは今年で一番大きかったかもしれません。半分以上の内容を口頭でPitchしてしまっていてプレゼン資料にはそこまで情報が残っておらず、これだけ読んでもよく意味が分からない感じになってしまってはいますが、話したことも雰囲気くらいは伝わるかもしれないので貼っておきます。&lt;/p&gt;

&lt;script async class=&quot;speakerdeck-embed&quot; data-id=&quot;4827c688a62a49f0aef7f13fd53379b1&quot; data-ratio=&quot;1.33333333333333&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;

</description>
    <dc:date>2015-12-25T00:00:00+09:00</dc:date>
  </item>
  <item rdf:about="http://rimuru.lunanet.gr.jp/notes/post/how-to-root-from-inside-container/">
    <title>Dockerコンテナ内からホストマシンのルートを取る具体的な方法（あるいは/var/run/docker.sockを晒すことへの注意喚起）</title>
    <link>http://rimuru.lunanet.gr.jp/notes/post/how-to-root-from-inside-container/</link>
    <description>&lt;p&gt;dockerの &lt;code&gt;-v&lt;/code&gt; オプションを使ってホストマシンのディレクトリをマウントするときは、マウントする範囲に注意が必要（特に/var/run/docker.sockをマウントしてはならない）という話を書きます。&lt;/p&gt;

&lt;p&gt;元ネタは@lvhが書いてる&lt;a href=&quot;https://www.lvh.io/posts/dont-expose-the-docker-socket-not-even-to-a-container.html&quot;&gt;Don't expose the Docker socket (not even to a container)&lt;/a&gt;という記事で、1ヶ月前くらいに&lt;a href=&quot;https://news.ycombinator.com/item?id=10269200&quot;&gt;Hacker Newsで話題になってて&lt;/a&gt;知りました。&lt;/p&gt;

&lt;p&gt;この元記事で紹介されているいくつかの危険なマウントのパターンに関する情報が、最近dockerを使い始めた自分に有用な情報だったので、自戒も込めて要点を書いておきます。&lt;/p&gt;

&lt;h3&gt;TL;DR&lt;/h3&gt;

&lt;p&gt;/var/run/docker.sockへの書き込み権限があるとルートを持ってるのと同様のことができるため、決して外部へ晒してはいけない（コンテナに対してであってもマウントさせるべきではない）&lt;/p&gt;

&lt;h3&gt;コマンド例&lt;/h3&gt;

&lt;p&gt;まず予備知識として、ルートディレクトリをマウント(-v /:/foobar)してコンテナを起動すると、ホストのルートが取れる例から。&lt;/p&gt;

&lt;div class=&quot;box&quot; style=&quot;background-color:#333333;overflow:scroll;&quot;&gt;&lt;pre style=&quot;color:white; font-size:10pt; line-height:1.3em; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace&quot;&gt;
root@test-docker:~# cat /etc/hostname
test-docker
root@test-docker:~# docker run -t -i &lt;span style=&quot;color:red&quot;&gt;-v /:/foobar&lt;/span&gt; debian:jessie /bin/bash  &lt;span style=&quot;color:#bbbbbb&quot;&gt;#ルートDirをマウントしコンテナ起動&lt;/span&gt;
WARNING: Your kernel does not support memory swappiness capabilities, memory swappiness discarded.
root@01a8a893fa9d:/# cat /etc/hostname  &lt;span style=&quot;color:#bbbbbb&quot;&gt;#コンテナ上のホスト名が返る&lt;/span&gt;
01a8a893fa9d
root@01a8a893fa9d:/# ps ax  &lt;span style=&quot;color:#bbbbbb&quot;&gt;#コンテナ内のプロセス一覧が返る&lt;/span&gt;
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:00 /bin/bash
   21 ?        R+     0:00 ps ax
root@01a8a893fa9d:/# &lt;span style=&quot;color:red&quot;&gt;chroot /foobar&lt;/span&gt;  &lt;span style=&quot;color:#bbbbbb&quot;&gt;#chrootが成功&lt;/span&gt;
# /bin/bash
root@01a8a893fa9d:/# cat /etc/hostname  &lt;span style=&quot;color:#bbbbbb&quot;&gt;#/etc/hostnameを見るとホストマシン名が返るし&lt;/span&gt;
test-docker
root@01a8a893fa9d:/# ps ax  &lt;span style=&quot;color:#bbbbbb&quot;&gt;#psを叩けばホストマシンのプロセス一覧がコンテナ内から見える&lt;/span&gt;
PID TTY      STAT   TIME COMMAND
  1 ?        Ss     0:01 /sbin/init
  2 ?        S      0:00 [kthreadd]
  3 ?        S      0:01 [ksoftirqd/0]
  5 ?        S&lt;     0:00 [kworker/0:0H]
  6 ?        S      0:00 [kworker/u2:0]
  7 ?        S      0:00 [rcu_sched]
  8 ?        S      0:00 [rcu_bh]
  9 ?        S      0:00 [migration/0]
 10 ?        S      0:00 [wat
 ・・・・
 （略）
 ・・・
10000 ?        S      0:00 [kworker/0:1]
10023 pts/3    Ss     0:00 /bin/bash
16787 pts/3    Sl+    0:00 docker run -t -i -v /:/foobar debian:jessie /bin/bash
16820 pts/4    Ss     0:00 /bin/bash
16830 pts/4    S      0:00 /bin/sh -i
16831 pts/4    S      0:00 /bin/bash
16835 pts/4    R+     0:00 ps ax
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;ユーザが意図的にルートディレクトリをマウントする事例は、特別な事情がない限りは実際は少ないと思われるので、これ単体で問題になることは恐らく少ないでしょう。
ですが、悪意を持ったユーザにとってはコンテナ上からホストマシンのルートを取るための便利な手段となり得ます。&lt;/p&gt;

&lt;p&gt;次の例では、ホストマシンがコンテナに対して/var/run/docker.sockのみを晒しています。そうすることで、コンテナ上で更にコンテナを起動することが可能になります。
これと、先ほど紹介した手法を組み合わせることで、コンテナ上からホストマシンのrootを取ることが可能になります。&lt;/p&gt;

&lt;div class=&quot;box&quot; style=&quot;background-color:#333333;overflow:scroll;&quot;&gt;&lt;pre style=&quot;color:white; font-size:10pt; line-height:1.3em; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace&quot;&gt;
root@test-docker:~# docker run -t -i &lt;span style=&quot;color:red&quot;&gt;-v /var/run/docker.sock:/var/run/docker.sock&lt;/span&gt; debian:jessie /bin/bash
WARNING: Your kernel does not support memory swappiness capabilities, memory swappiness discarded.
root@b5745203f94d:/# ps ax
  PID TTY    STAT    TIME COMMAND
    1 ?      Ss      0:00 /bin/bash
    6 ?      R+      0:00 ps ax
root@b5745203f94d:/# cat /proc/self/cgroup
8:perf_event:/
7:blkio:/system.slice/docker-161d969001f95dbdf8e00a8b564cc15d75deee5716484a9790373f9d894b636a.scope
6:net_cls,net_prio:/system.slice/docker-161d969001f95dbdf8e00a8b564cc15d75deee5716484a9790373f9d894b636a.scope
5:freezer:/system.slice/docker-161d969001f95dbdf8e00a8b564cc15d75deee5716484a9790373f9d894b636a.scope
4:devices:/system.slice/docker-161d969001f95dbdf8e00a8b564cc15d75deee5716484a9790373f9d894b636a.scope
3:cpu,cpuacct:/system.slice/docker-161d969001f95dbdf8e00a8b564cc15d75deee5716484a9790373f9d894b636a.scope
2:cpuset:/system.slice/docker-161d969001f95dbdf8e00a8b564cc15d75deee5716484a9790373f9d894b636a.scope
1:name=systemd:/system.slice/docker-161d969001f95dbdf8e00a8b564cc15d75deee5716484a9790373f9d894b636a.scope
root@b5745203f94d:/# which docker  &lt;span style=&quot;color:#bbbbbb&quot;&gt;#dockerがインストールされてないので次の行でインストール&lt;/span&gt;
root@b5745203f94d:/# apt-get update &amp;&amp; apt-get install wget -y &amp;&amp; wget -qO- https://get.docker.com | sh
Get:1 http://security.debian.org jessie/updates InRelease [63.1 kB]
Get:2 http://security.debian.org jessie/updates/main amd64 Packages [181 kB]
Ign http://httpredir.debian.org jessie InRelease
Get:3 http://httpredir.debian.org jessie-updates InRelease [128 kB]
・・・・
（略）
・・・

If you would like to use Docker as a non-root user, you should now consider
adding your user to the &quot;docker&quot; group with something like:

  sudo usermod -aG docker your-user

Remember that you will have to log out and back in for this to take effect!
root@b5745203f94d:/# docker run -t -i &lt;span style=&quot;color:red&quot;&gt;-v /:/host&lt;/span&gt; debian:jessie /bin/bash
WARNING: Your kernel does not support memory swappiness capabilities, memory swappiness discarded.
root@01a8a893fa9d:/# &lt;span style=&quot;color:red&quot;&gt;chroot /foobar&lt;/span&gt;  &lt;span style=&quot;color:#bbbbbb&quot;&gt;#chrootが成功&lt;/span&gt;
# /bin/bash
root@01a8a893fa9d:/# cat /etc/hostname  &lt;span style=&quot;color:#bbbbbb&quot;&gt;#/etc/hostnameを見るとホストマシン名が返っている&lt;/span&gt;
test-docker
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;以下で元記事を翻訳したのですが、最後の方に出てくるYouTubeの動画で更に突っ込んだ（sshのデーモンを殺すなどの）手法も紹介されているので、更に興味のある人はそちらも参照されるとよいと思います。&lt;/p&gt;

&lt;h3&gt;Don't expose the Docker socket (not even to a container)&lt;/h3&gt;

&lt;p&gt;以下、元記事の翻訳です。@lvhから許可を得て掲載しています。&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Dockerはデーモンプロセス（dockerd）と通信するクライアントとして動くわけですが、その際のソケットには典型的にUNIXドメインソケット（&lt;code&gt;/var/run/docker.sock&lt;/code&gt;）が利用されます。dockerdは特権的な動作が可能であり実効的にはルート権を持っているとみなせるため、dockerdが使うUNIXドメインソケットに対して書き込み権限を有するどのプロセスもまた、実効的にルート権があると言えます。&lt;/p&gt;

&lt;p&gt;これは隠れた事案では全くありません。Docker社は入門の手引も含めて、多くの場所で明確にドキュメントに記しており、それは例えLinux上であってもDocker Machineを開発環境に選ぶ動機付けの一つとなっています。もし一般ユーザがこのdocker.sockに書き込み権限を持っていると、自由にルートを取りどんなコードも実行できてしまう脆弱性が生まれることになります。&lt;/p&gt;

&lt;p&gt;Dockerのソケットにまつわる警鐘としては、ホストマシン上でのオペレーションについての（時として暗示的な）指摘がよく見受けられます。ホストマシン上で一般ユーザがdocker.sockに書き込み権限を持つことはホストマシンのルートを与えることにつながる、といったものです。しかし、コンテナ上でdocker.sockへの書き込み権限を持ったとしたら何が起こるのかについてはいくらかの誤解があるようです。&lt;/p&gt;

&lt;p&gt;最もよくある誤解が、ルートは全く取れないだとか、コンテナ内においてのみルートが与えられる（ホストマシンには影響を及ぼさない）、といったようなものですが、これは間違っています。書き込み元が誰かに関わらず、docker.sockへの書き込み権限はホストマシン上のルート権限を意味します。Docker内でDockerを走らせる&lt;a href=&quot;https://github.com/jpetazzo/dind&quot;&gt;Jerome Pettazoniの&lt;code&gt;dind&lt;/code&gt;&lt;/a&gt;とは異なり、我々はホストマシンのdocker.sockへのアクセスについて考えていきます。&lt;/p&gt;

&lt;p&gt;その手順は以下の様なものです。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ホストマシンの/var/run/docker.sockをマウントした状態で起動したDockerコンテナ（訳注：便宜上コンテナAと呼びます）上でDockerクライアントをインストールします&lt;/li&gt;
&lt;li&gt;コンテナA上で、&lt;code&gt;-v /:/host&lt;/code&gt;オプションによりルートディレクトリをマウントした状態で更にdockerコンテナを起動します（訳注：コンテナBと呼びます）。ここで、このルートディレクトリはコンテナAのルートではなくてホストマシンのルートを指すことに注意してください&lt;/li&gt;
&lt;li&gt;コンテナB上で&lt;code&gt;/host&lt;/code&gt;へのchrootを行うと、実効的にホストマシンのルートを取ったことと同様の状態になります。（実際にはいくつかの点でホストマシン上のシェルとの動作が異なることになります。例えば、&lt;code&gt;/proc/self/cgroups&lt;/code&gt;はDocker cgroupsを指すなど。しかしながら、攻撃者はこれらの差異に対応するために必要な全ての権限を持っています）&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;この手法はコンテナ外からルートを取るプロセスと全く変わりません。docker.sockへの書き込み権限を持つことはホストマシンのルート権限を持つことと同じことであり、これでゲームオーバーです。誰が書き込みをしてるとか、どこからの書き込みだとかは一切関係がありません。&lt;/p&gt;

&lt;p&gt;残念なことに、非常に多くの開発チームがこのことに気づいていません。最近そういう事例に出くわしたので、彼らの環境における脆弱性についてスクリーンキャストであいまいにデモをすることにしました。&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/CB9Aa6QeRaI&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;


&lt;p&gt;これは新しい事実ではなく、Dockerの動作の性格として長い間知られてきたことです。元々DockerのREST APIはエンドポイントとしてTCPポートをリスンしてきたのですが、瑣末ではありますが残念なことにこの方式ではクロスサイトスクリプティングが可能になってしまうということで、'/var/run/docker.sock'にあるUNIXドメインソケットをリスンするように変更した時点（訳注:v0.5.2の時点のようです ※）から続いている性質となっています。&lt;/p&gt;

&lt;p&gt;※&lt;a href=&quot;https://docs.docker.com/articles/security/&quot;&gt;公式ドキュメント&lt;/a&gt; 曰く、&quot;For this reason, the REST API endpoint (used by the Docker CLI to communicate with the Docker daemon) changed in Docker 0.5.2, and now uses a UNIX socket instead of a TCP socket bound on 127.0.0.1 &quot;&lt;/p&gt;
</description>
    <dc:date>2015-11-04T00:00:00+09:00</dc:date>
  </item>
</rdf:RDF>