銀座Rails#14を開催しました

去る2019/10/14(木)、銀座Rails#14を開催しました。

ginza-rails.connpass.com

今回は毎度おなじみGinzaSixにて、リンクアンドモチベーションさまのスペースをお借りしました。 当日の様子につきましては、togetterのまとめを御覧ください。

togetter.com

なお今回のレポートは、 @MasatoEgami さんのご協力によりまとめられております。

スポンサーセッション リンクアンドモチベーションさま

リンクアンドモチベーションさまからは、いつも通り採用担当の磯崎さんがご登壇。

前回「Rails tutorial3章」をやると約束したものの、できなかったとのこと。 できなかった理由を分析し、マックを開く習慣がないこと、一人でやろうとしてしまっていることの2つを挙げていました。

そこで、リンクアンドモチベーション様で開発した「i-Company CLUB」というアプリを紹介、「小さな習慣を」「小さな集団で」実施し、課題解決するものとのことで、これを用いて「毎日10分Macを開く」「一年目のエンジニアと一緒にやる」という2つの宿題を新たに立て実行する、との事でした。

リンクアンドモチベーションさまの採用情報はこちらから。

www.wantedly.com

出張Railsウォッチ in 銀座Rails

今回もBPS株式会社から、TechRachoを運営されている@morimorihoge (森) さんがご登壇。

前回までの流れで、やはりRails6の新機能に興味を持たれる方が多いとの事で、今回はActionMailboxの話が中心でした。

まずは最新のRailsを簡単に試すための、Dockerを用いた環境構築のやり方説明から始まり、ActionMailboxの基本的なしくみについて図解。そして実際にインストールからコードの用意、demoと続き、最後に触った感想について述べられていました。

speakerdeck.com

高橋 尚敬さん 「ScoutAPMを活用したRailsパフォーマンス改善」

Scount社にお勤めの高橋さん。今回はRailsのパフォーマンス改善のお話をされました。 まずは、Railsで「2番目」に時間を使っているのはなにか?という4択クイズを出題。答えはActiveRecordに次いで「Custom Code」で、つまりユーザが書いたコードが2番目に時間を使っているとのこと。

ScountAPMではこれを、method毎のパフォーマンス計測などで実施することができ、さらにMemoryの消費などについても計測ができるなど、様々な方法について共有されていました。

たっきーさん「未経験者には全てが黒魔術に見える呪いがある」

営業職からキャリアチェンジしたたっきーさん。現在6ヶ月目とのことですが、「未経験者はどこまでわかっていないのか」について発表されました。

qiita.com

未経験者にとって、最初は目に見えるすべてがわからないことで、何がわからないことさえわからない状態からスタートであるとの体験を述べられ、そこから無知には段階があること、教えてもらう際に言われて良かったこと / 混乱したこと、さらには学習効率を上げるための提案など、体験からノウハウまで共有されました。

スポンサーセッション ScoutAPMさま

2番目のセッションに引き続き、ScoutAPMさまの高橋さんがご登壇。 2009年設立されたScout社は、 NewRelicのオーバーヘッド大きい事が気になり、自分たちで作ろう!ということでAPMに参入。 もちろんRubyに対応しており、日本だとSsmartHRなど、世界的にはGithub社などで利用されているとのこと。 NewRelicより30%はやく、30%やすいとの事で、是非使ってみて欲しいとのアピールでした。

scoutapm.com

ゲストスピーカー @mrkn Kenta Murataさん「Apache ArrowできりひらくRubyの未来」

現在Speeeにお勤めの村田さんは、RubyのCommitterであり、また先日Apache ArrowのCommitterにも就任されました。

まずはApache Arrowの基本知識の説明から。Apache Arrowはデータ処理において、メモリ上に大量データを置いて処理するシステムに対してデータ操作の基本機能を供給し、「速度効率化」「実装効率化」を目指しているとのこと。 その基本的なしくみを、データ効率化、データ処理の高速化、実装コストの効率化などの具体例を交えながら解説。

更にRubyと組合わせて使う場合の未来像として、RDBMSからArrowフォーマットでクエリ結果を受け取ったり、DataFrameを利用して高度なデータ分析ができるようになるなどのメリットを例示。

そして、Arrowの開発などをするプロジェクトである「RedDataTools」、またもうすぐリリースされる1.0に向けたイベント「Apache Arrow Tokyo」が開催されるなど、活発に活動が続いているとのことです。

speee.connpass.com

speee.connpass.com

次回、銀座Rails#15について

次回銀座Rails#15は2019/11/15(金)。 今回と同じくGinzaSixのリンクアンドモチベーション様のスペースをお借りしての開催です。

ゲストスピーカにRailsコミッターである@kamipo さん、モデレータにRailsコントリビュータの @yahonda さんをお招きし、ActiveRecordなどについてのフリートークをして頂きます。 どんなお話が出るのかは、聞いてのお楽しみ...

ginza-rails.connpass.com

銀座Rails#13を開催しました

去る2019/09/12(木)、銀座Rails#13を開催しました。

ginza-rails.connpass.com

今回はまたGinzaSixにて、リンクアンドモチベーションさまのスペースをお借りしました。 当日の様子につきましては、togetterのまとめを御覧ください。

togetter.com

スポンサーセッション リンクアンドモチベーションさま

毎度おなじみ、リンクアンドモチベーションさまからは、採用担当の磯崎さんがご登壇されました。

前回までにRailsTutorialの2章まで進め、今回までに3章以降を実施する!と宣言されていましたが、今回は「詰まりました!」と悩みの報告。書いてあることをそのまま打ち込み実行...をしていたものの、それでは理解が不足し、そもそもGemfileとは... bundle installとは... で詰まってしまったとの事です。より理解を深めながら進めることを決意されていました。

そんな磯崎さんが採用担当をしている、リンクアンドモチベーションさまの採用情報はこちらから。

www.wantedly.com

出張Railsウォッチ in 銀座Rails

今回もBPS株式会社から、TechRachoを運営されている@morimorihoge(森)さんがご登壇。

まずは恒例のアンケート結果の公表から。「Rails6の新機能が気になる方が多い」「Rubyは2.4以降を使っている人が多い」「backend用にRailsを使っている人が多い」という結果を共有した上で、今回はRails6の新機能の一つであるActionTextの解説をチョイスとのこと。 ActionTextとは何かという話から、WYSIWYGとはというお話、他のWYSIWYGとの比較、機能の特徴などを解説頂きました。

また最近のSlideやGemの共有など、今回も盛りだくさんの内容でした。

techracho.bpsinc.jp

@masa_iwasakiさん「fixture再考」

いつも2次会番長をして頂いている @masa_iwasaki さん。この度またフリーランスとしての活動を再開されたとのこと。 今回はRailsに昔からある機能である「fixture」に関する発表でした。

まず会場の参加者の方々にfixtureの知名度について尋ねてみたところ、知っている方は8割超、使ったことが有るかたは半分、書いた方は10人ちょっととの挙手が。 そしてfixtureの使い方のおさらい、FactoryBotとの比較、そしてfixtureのメリットを数点挙げ、「Factoryからfixtureに置き換えたら早くなるのでは」と仮定。 検証を実際にdev.toに対して行い、その課程について解説しつつ、結果的にdev.toで13秒くらい早くなる程度、との事でした。

詳しい結果はこちらから。

speakerdeck.com

@neko314_ さん「RailsとJSのデータ橋渡しについて考えてみた」

@neko314_ さんは、皆が気になるRailsJavaScriptの関係について発表されました。 RailsからJavaScriptにデータを渡す方法として、API渡しとDOM渡しがあるが、パフォーマンス的にどちらが優れているのか。DOMの方が優れているのでは...と疑問に思ったとのこと。実際に検証方法として、AuditsパネルやGoogle developer toolなどツールを紹介の上、実装例を説明。

その上で様々な場面でのスピード比較結果を「APIで実装すると。HTMLの表示は速い」「DOMの場合、全体が表示し終わるのは速い」とし、「結論としては、よくわからない」と正直に宣言。しかし、より知りたくなった、興味がより一層増えたとお話され、その姿勢に参加者の皆さんが共感していました。

speakerdeck.com

スポンサーセッション メドピアさま

メドピアさまからは、@arihh(平川 弘通)さんがご登壇。 昨年9月からメドピアさまへ入社されたとの事で、「声かけていただけたら、そのまま会社に引きずり込みますんでよろしくお願いします」と宣言。

度々開かれている開発合宿やプルリク振り返り会、整地部活動、そして9/26に開かれるイベントの紹介など、充実した開発環境について説明されていました。

9/26のイベントはこちら techplay.jp

@arihh さん登場のblogはこちら medpeer.co.jp

ゲストスピーカー @a_matsuda (松田 明) さん 「Railsのパフォーマンスをチューニングしてみる話」

一周年を記念し、第一回にもお越し頂いた松田 明さんにご登壇頂きました。 内容はRailsそのもののパフォーマンスの話。 まずRailsって遅くて有名ですよね...307/371位(teckempower.com調べ)という話から始まり、実際はどうなのか、schaffoldでアプリを作り、計測し、早くする、という手順を共有。

計測するにあたっては、どこを計測すればすべてを測れるのか、そのためにはどこに何を書くのか...など詳細を述べ、様々なパターンでの計測を実施。

そして、着目点としてObjectのアロケーション数を挙げ、それを様々な方法で減らす事を試みます。 増えたり減ったり、また速くなったり遅くなったりを繰り返し示しながら、こうやって細かくRailsのパフォーマンスは改善されていく、ということがわかる発表でした。

次回、銀座Rails#14について

次回銀座Rails#14は2019/10/24(木)、今回と同じくGinzaSixのリンクアンドモチベーション様のスペースをお借りしての開催です。

ginza-rails.connpass.com

ゲストスピーカーには、CRuby、Apache Arrowのコミッタである @mrkn(Murata Kenta)さんをお迎えし、「Apache ArrowできりひらくRubyの未来」をお話頂きます。

発表者の募集について

銀座Rails#14では、登壇される方を募集しております。 15分は敷居が高いという声に応え、5、10、15分の中から選択できるようになりました。 敷居の低い登壇チャンスのご提供が一つの目標となっておりますので、皆様お気軽にお申し込み下さい。

t.co

銀座Rails#12を開催しました

去る2019/08/29(木)、銀座Rails#12を開催しました。

ginza-rails.connpass.com

今回はDeNA様よりお誘いがあり、渋谷ヒカリエにて開催しました。 当日の様子は、Togetterのまとめをご覧下さい。

togetter.com

スポンサーセッション DeNAさま

DeNA様より登壇されたのは、DevRelを業務とされている玉田さん。 銀座線発着駅ということで、会場が銀座Railsにふさわしい理由を説明し、会場の皆さんに納得していただけたようです。

DeNA社は「Delight and Impact the World」というコンセプトを大事にしているとのことで、完成度の高い動画でそれを説明されていました。 また、RubyRailsを積極的に使われているということで、「RubyThursdayを毎週実施」「世界規模の高トラフィック」「複数DB」「グローバル大ヒットタイトルをすべてRailsでさばいている」など具体的に述べられ、今後Rails Communityに積極的に貢献していきたいとお話されていました。

スポンサーセッション リンクアンドモチベーションさま

今回も採用担当の磯崎さんがご登壇。エンジニアを理解するため、継続的にRailsを触る活動をされており、今回も進捗を報告されました。
先月の約束として、「Githubを使う」「RailsTutorialをやる」と宣言されていましたが、実績としてRailsTutorialを2章まで進めたとの事でした。 引き続き、3章以降の写経と、Githubを使うことにチャレンジするとの事です。

そんな採用担当の磯崎さんの会社の募集要項はこちら

www.wantedly.com

「出張Railsウォッチ in 銀座Rails

speakerdeck.com

今回もBPS株式会社から、TechRachoを運営されている森さん、八田さんが登場。 まず事前アンケートの結果を参加者の皆さんに共有。5.2系にversionを上げて使っている方が多かったのが印象的でした。

またRail6に興味を持つ方が多かった結果から、dockerでRails6を簡単に試す方法をまず共有。 そして数ある新機能の中より複数DB機能に焦点を当て、ユースケースの考察やshardingに対応していないなどの制限事項、現存するgemとの機能比較、使い方の説明などを共有して下さいました。

また、Railsウォッチでは常時ご意見募集との事です。

坂川雅俊さん(株式会社ソニックガーデン)「Rails使いのNuxt.js入門」

speakerdeck.com

伊藤さんと同じく株式会社ソニックガーデンにお勤めの坂川さん。 趣味はサウナだそうで、木曜はサウナの日にしているとの事なのですが、このイベントの開催日も木曜日。サウナに行けたのでしょうか...

発表頂いた内容は、「Rails使いのNuxt.js入門」。

Nuxt.jsを使った開発方法について、まずはざっくりと開発の流れについて解説。 次に具体例として、チェックボックスのクリックでリストが切り替わる機能を例とし、プロジェクトのnpxによる作成から、実際に開発を実施する各場面のコードなどについて説明されていました。

ゲストスピーカー @jnchito(伊藤淳一) さん 「プログラマがコードを書きながら考えること 」

今回のゲストスピーカーには、「プロを目指す人のためのRuby入門」などの著書で著名な伊藤淳一さんをお招きしました。

まず伊藤さんは、すごいプログラマはどんなふうにプログラムを書いているのか、たとえばMatzさんとかものすごいスピードで開発しているのではないか、など気になりませんか、と問いかけ、今回は自分がどのように書いているのか、恥ずかしいが動画で共有しますと宣言。 ホテルの予約を定期的に見に行くクローラーを題材に、2倍速の動画にて、実際に開発する流れを共有されました。

動画中では、後から見直して自らツッコミを入れる箇所もちらほら。後から考えるとこうだったな、というリアルな状況が再現されていました。また参加者の方々も食い入るように動画を見続け、「こんな使い方があったのか」「確かに名前付け悩む、自分だけではないのだな」「テストから書くのが良い」など、様々な感想が上がっていました。

speakerdeck.com

次回、銀座Rails#13について

次回銀座Rails#13は2019/09/12(木)に開催。

ginza-rails.connpass.com

ゲストスピーカーには一周年を記念し、第一回にもお越しいただいた、RubyRailsのコミッターである @a_matsuda 松田明さんをお招きしました。「Railsのパフォーマンスをチューニングしてみる話」をして頂きます。 またトップバッターにはおなじみ @morimorihogeさんの「Railsウォッチ出張版」、公募枠は@masa_iwasakiさん「fixture再考」、@neko314さん「JS Lv.1だけどRailsアプリ上でのVue.jsのよい書き方を調べてみた」。充実した内容となっております。

発表者の募集について

銀座Railsでは、登壇される方を毎月募集しております。

15分は敷居が高いという声に応え、5、10、15分の中から選択できるようにしました。 現在、10月〜12月の発表枠について募集しております。 敷居の低い登壇チャンスのご提供が一つの目標となっておりますので、皆様お気軽にお申し込み下さい。

t.co

銀座Rails#11を開催しました

去る2019/07/24(水)、リンクアンドモチベーション様の会議室をお借りし、銀座Rails#11を開催しました。

ginza-rails.connpass.com

当日の様子は、Togetterのまとめを御覧ください。

togetter.com

スポンサーセッション Forkwell様

「帰ってきたForkwell」ありがたい事に再度のご支援をお申し出頂いたため、懇親会のピザのご支援をお願いしました。 Forkwell様の活動の紹介や、SONY様との連携のお話などを、動画にて流させて頂きました。

forkwell.com

@ken1flanさん「取り柄のないボクがGinza.rb、社内勉強会、技術書典の出店とか、なんでやってるんだっけ?(仮)」

@ken1flanさんはGinza.rbの主催をされており、私もちょくちょくお邪魔しております。

「突出した凄さはない」と自称される@ken1flanさんですが、一エンジニアとしてGinza.rbの主催、技術書典への出店、社内での非エンジニア向けの勉強会など、様々な活動をされています。 そんな活発な活動を続けている中でのモチベーションや出来事、うまくいった例などを挙げ、みんなもなにかやってみようよ、とあたたかい声で呼びかけていらっしゃいました。

www.slideshare.net

その後懇親会ではぎんざRuby会議02の開催を迫られ、冷や汗をかいておられました。(私も煽りましたが...)

@okuramasafumiさん 「Web開発におけるテスト戦略」

Grow.rbの主催など、活発な活動をされている@okuramasafumiさん。2度目のご登壇です。 今回は 「Web開発におけるテスト戦略」と題し、テスト全般についてのお話でした。

speakerdeck.com

まず用語の定義を行い、次になぜテストを書くのか、開発者の幸福のためであるという点にフォーカスされていました。 そして「プログラマの三大美徳」を参照し、それぞれの美徳に合わせたテスト戦略について具体例をお話されていました。

スポンサーセッション リンクアンドモチベーション

いつも会場やドリンクのサポートをして下さる、リンクアンドモチベーション様より、前回に引き続き磯崎さんがご登壇。 人事採用担当ですが、エンジニアを理解すべく日々奮闘。 前回は「本を一冊読んでくる」という約束をされましたが、「全く覚えられなかった」ものの、「ゼロからわかる Ruby 超入門 はじめてのIT技術講座」を一冊読み切った!と報告されていました。

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

次回の目標は、「Githubを使ってみる、Railsチュートリアルをやってみる」だそうです。次回の報告に期待しましょう。

またリンクアンドモチベーションでは、引き続きエンジニアを募集しているとの事です。

www.wantedly.com

@yahonda 本多康夫さん 「ActiveRecord::Migrationのうしろ側 / How ActiveRecord::Migration converts create_table DSL into SQL statements 」

今回のゲストスピーカーには、 Active Record Oracle enhanced adapterのメンテナーであり、Ruby on Railsのcontributor でもある @yahonda(本多康夫)さんをお招きし、ActiveRecord::Migrationのうしろ側についてお話頂きました。

speakerdeck.com

Railsを使われている方でしたら誰でも使うであろうMigration機能。そのMigration fileにはTable自体の定義、 Columnの定義など様々な定義が含まれていますが、それらがActiveRecordの中でどうClassとして表現され、また主にMySQLの場合においてどのようにsql文になっていくかについて、その流れと詳細を語って頂きました。

@morimorihogeさん(BPS株式会社) 「出張Railsウォッチ in 銀座Rails

新企画として、「Railsウォッチ」を書かれている @morimorihogeさんをお招きし、「出張Railsウォッチ in 銀座Rails」を開始しました。 第一回となる今回は、懇親会の冒頭に設置し、参加者の皆さんの属性をお伺いしながら、Rails6.0の話題などについてお話しました。

techracho.bpsinc.jp

今後も定期的にお越し頂き、1ヶ月のRailsの動きを軽く振り返る機会をご提供頂く予定です。

次回銀座Rails#12について

次回銀座Rails#12は2019/08/29(木)に開催。 ゲストスピーカーには「プロを目指す人のためのRuby入門」などの著者である @jnchito(伊藤淳一)さんをお招きし、「プログラマがコードを書きながら考えること 」について、実際のプログラミングの流れの再現とともにお話頂きます。

また会場がいつもと異なり、渋谷DeNA様での開催となります。お間違えの無いよう気をつけてお越しください。

ginza-rails.connpass.com

lsyncdでlocalとremoteのソースコードの同期をする

きっかけ

今使っているMacBookProのメモリは16G。dockerやらvagrantやらchromeやらslackやらを立ち上げていると、メモリがあっという間に枯渇してしまう。つらい...

32Gメモリ搭載のMacBookProを買うことも考えたものの、「dockerなどはLinuxの方がサクサク動く」という話をちらほら聞いたので、Linux機を買おうか自作しようかと悩んでいたところ...

ということでオススメ頂いたIntel NUCその他部品を購入し、Linux PCを半自作。メモリを32G載せました。

これに1TのSSDを買っても、合わせて10万円以下!素晴らしい。

で、一旦以下のような方針を立てた。

  • MacBook(= local)のエディタとか諸々の開発環境はそのまま使う
    • SlackとかiTunesとかその他便利ツールとかを一切放棄するのはまだつらい
  • docker、vagrantなどはNUC(= remote)に任せる

f:id:ginkouno:20190721193318j:plain

そこでlsyncd

ようやく本題。remoteとlocalとでソースコードを同期するため、lsyncdを使用した。

インターネット上を探すと、lsyncdに関する情報はいろいろあったが、ちょうど自分が使いたい設定でのサンプルが無かったので、ここにメモっておく。

前提

  • sshの鍵認証でremoteと接続する
  • 転送にはrsyncを用いる
  • remoteのOSはDebian 10 Buster

remote

rsyncを入れておく。

sudo apt-get install rsync

なおsshを用いた鍵認証を使っているが、そのあたりの設定はググるとたくさんあるので省略。

local

関連するものをHomeBrewでガバっとinstall。

brew install rsync lsyncd lua

luaはlsyncdの設定ファイルがluaで記述できるとのことで、とりあえず入れておいた。

なおこちらもsshでの鍵認証のやり方の詳細は省略する。

~/.lsyncd というフォルダを作り、そこにlsync.conf.lua というファイルを設置。

settings {
  logfile = "/tmp/lsyncd.log",
  statusFile = "/tmp/lsyncd.status",
  insist = true,
  nodaemon = true,
  statusInterval = 10,
  maxProcesses = 1,
}

sync {
  default.rsyncssh,
  delete = true,
  delay = 0,
  source = "/Users/ginkouno/project/awesome",
  host = "192.168.0.111",
  targetdir = "project",
  rsync = {
    binary = "/usr/local/bin/rsync",
    archive = true,
    compress = true,
    rsh = "/usr/bin/ssh -i /Users/ginkouno/.ssh/id_rsa -l ginkouno"
  }
}
  • Default Configはrsync接続、ssh key認証のためにdefault.ryncssh を指定しましたが、他の指定をする場合はsync の中での記載方法がだいぶ変わるので、それっぽいoptionを突っ込んで悩んだりせずにmanualを見るのが良いです(反省)

Lsyncd - Config Layer 4: Default Config

  • binary の指定ですが、これを指定しないと、元からinstallされている古〜い/usr/bin/rsyncを掴んで下記のようなエラーが起きてしまうことがあるため、先の手順にてHomeBrewでinstallした/usr/loca/bin/rsync を指定しておきます
    • ↓こんなエラーが出ることがある
rsync: -stl: unknown option
rsync error: syntax or usage error (code 1) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-52.200.1/rsync/main.c(1337) [client=2.6.9]
  • rsh ではssh接続時のコマンドラインの一部を記載しておきます。今回は鍵認証のために-iで鍵ファイルを、またremote側にはginkounouserでログインしたいので-loptionでuser nameを指定しています

実行

sudo lsyncd .lsyncd/lsync.conf.lua

これで、MacBook側のeditorでソースコードを編集しつつ、NUC上のdockerでテスト!などを行うための土台ができた。(なおdockerを動かす際には、remoteにsshでloginして動かすことを想定)

皆さんも潤沢なメモリを積んだLinuxマシンで、dockerをドッカ〜ンと動かしましょう。

dockerでrubyの開発環境を用意してgdbでcodeを追う

rubyソースコードを読もうとしたが、自分が使っているNote PCはMacで、個人的にはLinux環境でやりたい。 またcodeを読むに当たり、gdbでゴニョゴニョしながら動きを追いたい。

そこで、dockerでrubyの開発環境を用意し、gdbを使ってコードを追うことにしたが、そのための環境の作り方について自分用にまとめておく。

docker環境を頂く

ささださんが用意してくれているものを、ありがたく使わせて頂く🙏

github.com

Note: docker 環境(Ubuntu 18.04 base)を作ってみました。 docker pull koichisasada/rhc で試してみてください。su rubydev でアカウントを rubydev でご利用ください。

docker-compose.ymlにoptionを固める

動作に必要なoptionをdocker-compose.ymlに書いておき、docker-compose upで立ち上がるようにしておきたい。 自分はこんな感じにしている。

version: '3'
services:
  rhc:
    image: "koichisasada/rhc"
    volumes:
      - ./workspace:/home/rubydev/workdir
    tty: true
    cap_add:
      - SYS_PTRACE
    security_opt:
      - seccomp:unconfined

volumesについて

コードやbuildしたものは永続化しておきたいので、volumes で手元(host)側の作業ディレクトリをcontainerにmountしておく。./workspace にはrubyソースコードがgitからcloneされたりすることを想定。container内でbuildしたり実行したりするが、fileの編集はhost側のeditorで行う。

cap_add、security_optについて

これらはコンテナ内でgdbを使うためのもの。無いと、gdbを起動した際にOperation not permitted などと怒られる。 gdbはptrace(2)システムコールを利用しているため、ケーパビリティにSYS_PTRACEを追加して許可を与える。 またsecurity_optではseccomp = secure computing modeをunconfinedにしているが、これによりseccompによる制限が無効化され、ptraceが使えるようになる。

起動

ふつうにdocker-compose up し、docker exec -it rhc_rhc_1 bash などと実行してcontainerに入り、su - rubydev でrubydevユーザになっていろいろやる。

あとは読んだりいじったりするだけ

ディレクトリ構造、ビルド方法などは、とても丁寧にRubyHackChallengeのコンテンツに書いてある。

rubyhackchallenge/2_mri_structure.md at master · ko1/rubyhackchallenge · GitHub

gdbデバッグしつつコードを追うには、上記コンテンツでconfigureを実施するときに、最適化無効のためのoptflags="-O0" オプションをつける。

$ ../ruby/configure optflags="-O0" --prefix=$PWD/../install --enable-shared 

あとはRubyHackChallengeの内容に従ってbuildし、出来たrubygdbで動かしてやればよい。 ↓がとても参考になるので読みながらやる。 techlife.cookpad.com

銀座Rails#10を開催しました

去る2019/06/21(金)、リンクアンドモチベーション様の会議室をお借りし、銀座Rails#10を開催しました。

https://ginza-rails.connpass.com/event/133628/

当日の様子は、Togetterのまとめを御覧ください。

https://togetter.com/li/1373226

オープニング

今回は、銀座Railsのもう一人のスタッフである江上さん(@masatoegami)が司会を務めました。 現在銀座Railsは2人のスタッフと、会場スポンサーの方々のご助力で運営しております。 私は今回はレポート係でした。

スポンサーセッション リンクアンドモチベーション

前回に引き続き、リンクアンドモチベーション社から、採用担当の磯崎さんご登壇です。

Rubyで開発をしてくる!と前回宣言したものの、「何も出来ませんでした!」と平謝り。 ただお話によると、自腹でMacBookを購入し、黄色いカバーまで付けたのに、やってみたら難しすぎた...との事でした。「開発者の皆様への多大なる尊敬の念が生まれた」との事です。

次回までの約束として、Rails本を一冊読破してくると宣言されていました。

またリンクアンドモチベーション社では引き続き、エンジニア絶賛採用中とのことです。

www.wantedly.com

@ryosuke_satoさん 「My API CLIENT」

二度目の登壇ご登壇となる@ryosuke_satoさん。株式会社フィードフォースにて、Railsなどを用いたバックエンジニアをされていらっしゃいます。

まず前回発表したRubocopChallenger gemの話の続きとして、gemの効果で.rubocop_todo.ymlとの長い戦いに区切りがついたことを報告。
https://github.com/ryz310/rubocop_challenger

github.com

また今回は、やはり自作のgemであるMy API CLIENTの紹介です。

github.com

My API CLIENTはこれは世間に数多あるWebAPIに対し、Clientを簡単に作れるようにするためのフレームワークとして開発を始めたとのこと。 機能的には、generatorによってスッと作成でき、エラーハンドリングなどもサポート、BUGSNAGとも連携しやすいように作っているなど、便利機能が充実。
発表時点ではまだversionが0.5.1でベータ版(本記事執筆時には0.6.2)とのことですが、日本語ドキュメントもあるので、ぜひ触って欲しいとのことです。

発表資料はこちら。

speakerdeck.com

@morimorihogeさん 「RDBMSのVIEWを使ってデータアクセスをいい感じにする」

株式会社BPSにお勤めの @morimorihogeさん。運営されているTechRacho 週刊Railsウォッチには、私もいつもお世話になっています。

techracho.bpsinc.jp

今回はRDBMSのVIEWに関するお話。

まずはVIEW機能についての軽い解説の後、ActiveRecordからでも普通にVIEWにを使える点をご紹介。 そして「いい感じに」使う事例として、有効なユーザだけを取得したい、ユーザ毎に公開可能なカラムを設定したい、複雑なテーブル構造の中から、様々なテーブルの項目を横断して参照したい、など実用的な事例を列挙。 最後にRailsで使う場合の注意点を挙げられていました。

コードの例など、詳しい解説は TechRachoのこちらのページに記載されております。

techracho.bpsinc.jp

ゲストスピーカー @moro 諸橋恭介さん「オレオレフレームワークを作らない方法 / How NOT to build own framework on Rails

@moro(諸橋恭介)さんはベテランのRailsエンジニアで、 Rails勉強会の実施やRailsレシピ本、Cucumber本などを書かれたりしております。私も一時期開発現場でご一緒したことがあり、たいへん勉強になりました。

今回は「オレオレフレームワークを作らない方法」と題してのお話。

まずはフレームワークとライブラリの違いについて解説、その上でフレームワーク化された場合のデメリットとして、フレームワークになるとその上での活動に制約ができること、コード自体が複雑になること、そのフレームワーク自体の学習コストがかかることなどについてご説明。

そしてフレームワークを作らずに制御構造を使い手に委ねる方法の具体策として、ふつうにメソッドに抽出する、ストラテジーパターンを使う、ブロック渡しを使う、などを挙げられていました。 実際のコードなど、詳細は以下の資料に記載されております。

目先の新しいことではなく、基本的なRuby / Railsの使い方を突き詰め、工夫によってよりよいRailsでの開発を目指すお話でした。

speakerdeck.com

スポンサーセッションメドピアさま

今回ピザスポンサーとしてご支援くださったメドピアさまより、川井田さんがご登壇されました。 自分がいかに失敗 -> 成功 を高速に繰り返し成長したか、そしてそれを受け入れるメドピア社の良さについて、体当たりの発表をされておりました。 メドピア社には銀座Rails#5にも登壇された @netwillnet(前島真一)さんも技術顧問として在籍されており、Railsで困った時のアドバイスなどを受けることができます。

エンジニア募集中とのことで、ご興味のある方はこちら。

www.wantedly.com

次回銀座Rails#11について

次回銀座Rails#11は2019/07/24(水)、新コーナー「出張Railsウォッチ in 銀座Rails」が始まります。今回ご登壇頂いた週刊Railsウォッチの @morimorihoge さん(BPS株式会社)をお招きし、「これを聞けばここ一ヶ月のRailsの動きがなんとなく掴める!」を目指します。

またゲストスピーカーには Oracle ACEでありActiveRecord Oracle enhanced adapterのメンテナである@yahondaさんをお招きし、ActiveRecord::Migrationの実装についてお話頂きます。普段使っているRailsの中身についてのお話を聞ける良い機会ですので、ぜひお気軽にご参加下さい。参加者募集中です。

ginza-rails.connpass.com