関西Ruby会議08 参加振り返り
こんにちは。PortalKeyの植森です。
先日6/28(土)に行われた関西Ruby会議08に行ってきました。
今回はブログ書くまでが勉強会ということで、その振り返りレポートになります。
なぜいってきたのか
もともと僕はRubyの人で、Ruby関西をはじめ関西圏のRubyコミュニティには大変お世話になりました。
Ruby関西での登壇や、大阪Ruby会議で登壇したこともあります。
PortalKeyでは現在GolangとTypeScriptを使っていてRubyを言語として採用していませんが、久々にコミュニティの人たちに会いたいと思ったことが理由の一つです。
また、コロナ禍を契機に勉強会に参加する足が遠のいてから、オフラインの勉強会に久しく参加していないのも大きな理由です。
参加前日
今回の開催は京都の四条河原町で、学生時代によく遊んでいた町ということもあり懐かしい気持ちで付近を散歩していました。
なんなら四条河原町まで徒歩で行った(大体50分ぐらい)ので、帰ってきたら足が痛かったです。
京都の豆知識ですが市内の地名は通りの名前が交差している点なので、通りがわかれば地図がなくても大体の場所がわかるようになります。
四条河原町なら四条通りと河原町通りが交差する点ですね。まっすぐ行って右に曲がるだけなので迷うこともありません。
通りの名前は名探偵コナンの映画「迷宮の十番街」で有名になった通り名の数え歌で簡単に覚えられるので、もしまた京都に行く機会があればいろんな通りを歩いてみてください。
京都駅からスタート
京都駅のすぐ北にある東本願寺。ちょうど夕焼けで奇麗でした
30分ぐらい歩いて四条通りを右に曲がります。ちなみにここまでほぼ直進しかしてないので迷う余地がありません。
河原町手前の寺町通にあった、a-choというゲームセンターの跡地。格ゲーの聖地でもありました。
河原町をすぎてすぐ鴨川があります。川に向かってせり出しているのは京都の夏の風物詩、納涼床です。
今回の開催場所である先斗町(ぽんとちょう)の歌舞練場です。
祇園が近いということもあり、普段は舞妓さんや芸妓さんが出演しているらしく日本を感じられる良い雰囲気の場所でした。
このままではただの観光記になってしまうので各トークの感想もそろそろ書きます。
トークの感想
途中、知人と話していて聞けなかった回もあるのですべての分はありません。
Witchcraft for Memory
pockeさんのトーク。
RBSのメモリ消費の改善について長時間生存しているオブジェクトにフォーカスしたメモリプロファイリングの手法と、Reforkを使ったワーカープロセスのメモリ消費量削減についての話でした。
サーバプロセスや生存時間の長いアプリケーションののベンチマークやプロファイリングをとったことがある人なら「時間全体じゃなくてピーク時の負荷が知りたい」というのは一度は思うことだと思います。
あまりプロファイリング手法などに詳しくないのですが、長時間生存しているオブジェクトをGCを生き延びた回数をマークすることで洗い出すというのはとても興味深い手法で、何かに応用できそうだなと思いました。
孫プロセスについては聞いてる途中からpumaの中のコードあたりで似たようなコード読んだ気がするなと思ったらやっぱりpumaだった。
ActiveRecordの中のコードでは逆にCopy on Writeされると困るオブジェクトに対して共有されないようなコードがあったなーとか思いながら聞いてました。
UNIXドメインソケットやファイルを使ってのデータ共有との比較などもあり、技術的に納得感の高いトーク内容でした。
「1ヶ月でWebサービスを作る会」で出会った rails new, そして今に至る rails new
桐生あんずさんのトーク。
久々に個人開発したいけど、作る勢いがまだつかない人
個人で作ってるツール(Zenless Zone Zeroというゲームのダメージ計算機)のアプデをずっと放置してるので耳が大変痛かったです。
だってダメージ基準値が攻撃基準からHP基準になるだけじゃなくて防御無視とかいろいろ変わりすぎて
やはり個人製作のツールは自分で使うもの、自分が欲しいものを作るのが一番というのはとても同意です。
モチベーションが続くかどうかがとても重要ですしね。ユーザ不在問題もつらい。
お金の問題はテンションが高いときは気になりませんが、モチベーションが下がり始めたときに的確にダメージを与えてくる存在ですね。
sue445さんも書いてましたが、vercelみたいな基本無料プラットフォームを使うか、GCPのAppEngineやCloud Runみたいな無料枠のある従量課金サービスを最初から採用すると料金面でもあまり気にならないと思っています。
mrubyと micro-ROSが繋ぐロボットの世界
kishimaさんのトーク。
mrubyを触ったきっかけが7~8年ぐらい前のRuby関西だったのですが、あれからmrubyもかなりディープな利用がされるようになっていてちょっとびっくり。
Node間のRPCをIDLで定義してやり取りしたりPubSubメッセージングモデルで通信したりといった分散型アーキテクチャ設計を、センサーやコントローラといったデバイス間での通信に適用するのは面白いなと思って聞いていました。
分散型アーキテクチャも技術や手法が一般化した結果、導入ハードルが下がって利用シーンが増えているのかもしれませんね。
PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bashさんのトーク。
最初から筋トレの画像を見せられてタイムラインが「俺たちは何を見せられてるんだ……」状態になっていたのがめっちゃ面白かった。
ここ数年Rubyの新しめの話題から離れていたのもあってPicoRubyのことを名前聞いたことあるぐらいでしか知らなかったんですが、mrubyからさらに軽量化された言語実装なんですね。
利用シーンが広がるのは嬉しい人も多そうな一方、実際に利用するとなるとやはりいろんな苦労があるんだなという印象。
技術的な内容はあまりちゃんとわからなかったんですが、僕が組み込みとかマイコンとかに疎いせいなのか、筋肉の話のせいなのかは最後まで分かりませんでした。
分散オブジェクトで遊ぼう!〜dRubyで作るマルチプレイヤー迷路ゲーム〜
yumuさんのトーク。
dRubyを使ってマルチプレイヤーゲームを作ってみた話でした。
dRubyは10年ぐらい前に興味を持っていた時期があるんですがユースケースが思いつかず実際は触らずだったのと、自分がゲーム開発をしていたので興味深かったです。
オブジェクトの公開みたいな概念やリモートオブジェクトをローカルであるかのように操作できるようなアーキテクチャは今聞くとちょっとPhotonに近いイメージを連想しますね。
リモートオブジェクトへのメソッド呼び出しがRPCである、という概念は近いものを感じます。
一方で、Photonでもあるような大量のオブジェクトの同期を高速に行うと遅延したり、(実質)シングルホストや単一サーバでの複雑な同期には限界があるといった問題をどうクリアするかみたいなのは実際に使ってみると問題に直面しそうな気はしますね。
最近のPhotonは後者の問題をそれぞれが所有権を持つ共有モードを利用できるようにしたりと新しい取り組みをしてますが、そういったことは実装は可能なのかな……?
そもそもRubyということもあり大人数でリアルタイムな同期が必要な用途というよりは今回のような5人程度のサーバをスポットとしてコンテナで立ち上げるような運用が向いてそうな雰囲気はありますね。
あと時間がなくて直接dRubyサーバと通信するのではなくWebSocketを中間サーバとして利用するような実装にしたみたいな話がありましたが、そっちのアーキテクチャ設計でも問題ないような気はしました。
でもdRubyサーバをDedicated GameServerとしてとらえると直接通信した方がいいのかな? どうなんだろう。
何か試すタイミングで一度dRubyを触ってみたくなりました。
Rubyを使った10年の個人開発でやってきたこと
shimbacoさんのトーク。
聞いていて思ったのは「なぜ作ったか?」の部分がシンプルかつ明確で、かつ自分の欲しいものを作っているのが成功の秘訣なんだろうなと思いました。
しかし、それでも長く続いていて他のユーザにも受けているというのは本当にすごい。
Railsアプリのオレオレ設計については耳が痛すぎて飛んでいくと思いました。
今の自分はどちらかというともっとシンプルなルールと設計を好むので意見が違うところはありますが、自分の中での考えや設計がまとまっていればいるほど実装で責務の設計で迷わなくてすみますし、こういうのも長続きする秘訣なのかも。
実際、対象の技術をあまり理解してない状態で始めた趣味プロジェクトは理解が深まって今の設計が微妙に感じた段階で触るのが億劫になることが多いですし。
スポンサートーク
すみません、メモしてなくてどの会社さんがどの話されてたのかあんまり覚えてません。
とりあえずプロダクションのコンテナ環境でSQLiteを使っていくことの問題点の話は一度したかったんですが話せなかった。
GCPだとKubernetesのgcePersistentDiskがManyToManyの書き込みに対応してないみたいな問題があったり、そもそもセッションで言われてたように同期の問題とかあると思うんで「じゃあどうやって使うんだ?」みたいな問題はどうするっていう話なんだろうという疑問は前からありました。
GKEの場合はhostVolumeをmountして同じnodeに配置されるようにデプロイすれば大丈夫なのかな? でもあれもディスク共有の仕組みを何か使ってたような気もするが……
Rubyで世界を作ってみる話
amatsudaさんのトーク。
スライドは探してみたんですけど見つからなかった。
まあ、この話スライドだけ見ても全然わからないと思うんですが。
面白すぎて最初から最後まで笑ってました。
「138億年前まで遡ろうとしたけどGitは1970年までしか遡れない」とか「核融合DSL」とか「エチルアルコールは命の水」みたいなパワーワードが連発でした
意味が分からないと思いますが、聞いていてもあまり意味がわからないです。
まとめ
今回のテーマは 「Rubyと作ろう」 とのことで、Rubyで作ってきたもの・作っているものに関するいろんなトークがありました。
トークの共通点として、みんなとても楽しそうに何かを作っていた/作ったものを語っていたと思います。
技術的なことを語りつつも作ったり作るために調べたりといったプロセスを楽しんでいたことが伝わってきて、終始明るい気持ちでトークを聞いていました。
さらに、入場曲をスピーカーが選定できるようにしたり、会場に合わせて名前を筆文字で書いた名前立てが用意されていたりと、とにかく参加した人に楽しんでもらおうという心意気が随所に盛り込まれており、雰囲気も素晴らしかったです。
また、勉強会の中では7~8年ぶりに会う人や前々職で一緒に仕事したメンバー、そしてruby-jpでよく話しているけど一度も顔を合わせたことがない人などいろんな人に会ってたくさん話すことが出来たのもよかったです。
今回オンラインで会う人や久々に会う人が多いということで名札入れに入れようとアイコン画像をプリントして持って行ったんですが、おかげでいろんな人に気づいてもらえたので大正解でした。おまえがMVPだ。
ちなみにスマホからセブンイレブンのネットプリントで画像をフォトで印刷したものをはさみで切っただけで、この方法なら旅先でも簡単に準備できるのでおすすめです。
(ただサイズ調整が出来ず引き延ばされてしまったので、会場の名札入れがサイズ合わなかったらどうしようと思っていた)
来年は関西Ruby会議だけじゃなくて、RubyKaigiやその他勉強会にもまた参加していきたいなという気持ちを高めることが出来た一日でした。
大変すばらしい勉強会でした、運営の皆さん素晴らしい時間をありがとうございました&お疲れさまでした。
またお会いしましょう。
Discussion