銀座Rails#13を開催しました
去る2019/09/12(木)、銀座Rails#13を開催しました。
今回はまたGinzaSixにて、リンクアンドモチベーションさまのスペースをお借りしました。 当日の様子につきましては、togetterのまとめを御覧ください。
スポンサーセッション リンクアンドモチベーションさま
毎度おなじみ、リンクアンドモチベーションさまからは、採用担当の磯崎さんがご登壇されました。
前回までにRailsTutorialの2章まで進め、今回までに3章以降を実施する!と宣言されていましたが、今回は「詰まりました!」と悩みの報告。書いてあることをそのまま打ち込み実行...をしていたものの、それでは理解が不足し、そもそもGemfileとは... bundle installとは... で詰まってしまったとの事です。より理解を深めながら進めることを決意されていました。
そんな磯崎さんが採用担当をしている、リンクアンドモチベーションさまの採用情報はこちらから。
出張Railsウォッチ in 銀座Rails
今回もBPS株式会社から、TechRachoを運営されている@morimorihoge(森)さんがご登壇。
まずは恒例のアンケート結果の公表から。「Rails6の新機能が気になる方が多い」「Rubyは2.4以降を使っている人が多い」「backend用にRailsを使っている人が多い」という結果を共有した上で、今回はRails6の新機能の一つであるActionTextの解説をチョイスとのこと。 ActionTextとは何かという話から、WYSIWYGとはというお話、他のWYSIWYGとの比較、機能の特徴などを解説頂きました。
また最近のSlideやGemの共有など、今回も盛りだくさんの内容でした。
@masa_iwasakiさん「fixture再考」
いつも2次会番長をして頂いている @masa_iwasaki さん。この度またフリーランスとしての活動を再開されたとのこと。 今回はRailsに昔からある機能である「fixture」に関する発表でした。
まず会場の参加者の方々にfixtureの知名度について尋ねてみたところ、知っている方は8割超、使ったことが有るかたは半分、書いた方は10人ちょっととの挙手が。 そしてfixtureの使い方のおさらい、FactoryBotとの比較、そしてfixtureのメリットを数点挙げ、「Factoryからfixtureに置き換えたら早くなるのでは」と仮定。 検証を実際にdev.toに対して行い、その課程について解説しつつ、結果的にdev.toで13秒くらい早くなる程度、との事でした。
詳しい結果はこちらから。
@neko314_ さん「RailsとJSのデータ橋渡しについて考えてみた」
@neko314_ さんは、皆が気になるRailsとJavaScriptの関係について発表されました。 RailsからJavaScriptにデータを渡す方法として、API渡しとDOM渡しがあるが、パフォーマンス的にどちらが優れているのか。DOMの方が優れているのでは...と疑問に思ったとのこと。実際に検証方法として、AuditsパネルやGoogle developer toolなどツールを紹介の上、実装例を説明。
その上で様々な場面でのスピード比較結果を「APIで実装すると。HTMLの表示は速い」「DOMの場合、全体が表示し終わるのは速い」とし、「結論としては、よくわからない」と正直に宣言。しかし、より知りたくなった、興味がより一層増えたとお話され、その姿勢に参加者の皆さんが共感していました。
スポンサーセッション メドピアさま
メドピアさまからは、@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のリンクアンドモチベーション様のスペースをお借りしての開催です。
ゲストスピーカーには、CRuby、Apache Arrowのコミッタである @mrkn(Murata Kenta)さんをお迎えし、「Apache ArrowできりひらくRubyの未来」をお話頂きます。
発表者の募集について
銀座Rails#14では、登壇される方を募集しております。 15分は敷居が高いという声に応え、5、10、15分の中から選択できるようになりました。 敷居の低い登壇チャンスのご提供が一つの目標となっておりますので、皆様お気軽にお申し込み下さい。
銀座Rails#12を開催しました
去る2019/08/29(木)、銀座Rails#12を開催しました。
今回はDeNA様よりお誘いがあり、渋谷ヒカリエにて開催しました。 当日の様子は、Togetterのまとめをご覧下さい。
スポンサーセッション DeNAさま
DeNA様より登壇されたのは、DevRelを業務とされている玉田さん。 銀座線発着駅ということで、会場が銀座Railsにふさわしい理由を説明し、会場の皆さんに納得していただけたようです。
DeNA社は「Delight and Impact the World」というコンセプトを大事にしているとのことで、完成度の高い動画でそれを説明されていました。 また、RubyやRailsを積極的に使われているということで、「RubyThursdayを毎週実施」「世界規模の高トラフィック」「複数DB」「グローバル大ヒットタイトルをすべてRailsでさばいている」など具体的に述べられ、今後Rails Communityに積極的に貢献していきたいとお話されていました。
スポンサーセッション リンクアンドモチベーションさま
今回も採用担当の磯崎さんがご登壇。エンジニアを理解するため、継続的にRailsを触る活動をされており、今回も進捗を報告されました。
先月の約束として、「Githubを使う」「RailsTutorialをやる」と宣言されていましたが、実績としてRailsTutorialを2章まで進めたとの事でした。
引き続き、3章以降の写経と、Githubを使うことにチャレンジするとの事です。
そんな採用担当の磯崎さんの会社の募集要項はこちら
「出張Railsウォッチ in 銀座Rails」
今回もBPS株式会社から、TechRachoを運営されている森さん、八田さんが登場。 まず事前アンケートの結果を参加者の皆さんに共有。5.2系にversionを上げて使っている方が多かったのが印象的でした。
またRail6に興味を持つ方が多かった結果から、dockerでRails6を簡単に試す方法をまず共有。 そして数ある新機能の中より複数DB機能に焦点を当て、ユースケースの考察やshardingに対応していないなどの制限事項、現存するgemとの機能比較、使い方の説明などを共有して下さいました。
また、Railsウォッチでは常時ご意見募集との事です。
坂川雅俊さん(株式会社ソニックガーデン)「Rails使いのNuxt.js入門」
伊藤さんと同じく株式会社ソニックガーデンにお勤めの坂川さん。 趣味はサウナだそうで、木曜はサウナの日にしているとの事なのですが、このイベントの開催日も木曜日。サウナに行けたのでしょうか...
発表頂いた内容は、「Rails使いのNuxt.js入門」。
Nuxt.jsを使った開発方法について、まずはざっくりと開発の流れについて解説。 次に具体例として、チェックボックスのクリックでリストが切り替わる機能を例とし、プロジェクトのnpxによる作成から、実際に開発を実施する各場面のコードなどについて説明されていました。
ゲストスピーカー @jnchito(伊藤淳一) さん 「プログラマがコードを書きながら考えること 」
今回のゲストスピーカーには、「プロを目指す人のためのRuby入門」などの著書で著名な伊藤淳一さんをお招きしました。
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る
まず伊藤さんは、すごいプログラマはどんなふうにプログラムを書いているのか、たとえばMatzさんとかものすごいスピードで開発しているのではないか、など気になりませんか、と問いかけ、今回は自分がどのように書いているのか、恥ずかしいが動画で共有しますと宣言。 ホテルの予約を定期的に見に行くクローラーを題材に、2倍速の動画にて、実際に開発する流れを共有されました。
動画中では、後から見直して自らツッコミを入れる箇所もちらほら。後から考えるとこうだったな、というリアルな状況が再現されていました。また参加者の方々も食い入るように動画を見続け、「こんな使い方があったのか」「確かに名前付け悩む、自分だけではないのだな」「テストから書くのが良い」など、様々な感想が上がっていました。
次回、銀座Rails#13について
次回銀座Rails#13は2019/09/12(木)に開催。
ゲストスピーカーには一周年を記念し、第一回にもお越しいただいた、RubyとRailsのコミッターである @a_matsuda 松田明さんをお招きしました。「Railsのパフォーマンスをチューニングしてみる話」をして頂きます。 またトップバッターにはおなじみ @morimorihogeさんの「Railsウォッチ出張版」、公募枠は@masa_iwasakiさん「fixture再考」、@neko314さん「JS Lv.1だけどRailsアプリ上でのVue.jsのよい書き方を調べてみた」。充実した内容となっております。
発表者の募集について
銀座Railsでは、登壇される方を毎月募集しております。
15分は敷居が高いという声に応え、5、10、15分の中から選択できるようにしました。 現在、10月〜12月の発表枠について募集しております。 敷居の低い登壇チャンスのご提供が一つの目標となっておりますので、皆様お気軽にお申し込み下さい。
銀座Rails#11を開催しました
去る2019/07/24(水)、リンクアンドモチベーション様の会議室をお借りし、銀座Rails#11を開催しました。
当日の様子は、Togetterのまとめを御覧ください。
スポンサーセッション Forkwell様
「帰ってきたForkwell」ありがたい事に再度のご支援をお申し出頂いたため、懇親会のピザのご支援をお願いしました。 Forkwell様の活動の紹介や、SONY様との連携のお話などを、動画にて流させて頂きました。
@ken1flanさん「取り柄のないボクがGinza.rb、社内勉強会、技術書典の出店とか、なんでやってるんだっけ?(仮)」
@ken1flanさんはGinza.rbの主催をされており、私もちょくちょくお邪魔しております。
「突出した凄さはない」と自称される@ken1flanさんですが、一エンジニアとしてGinza.rbの主催、技術書典への出店、社内での非エンジニア向けの勉強会など、様々な活動をされています。 そんな活発な活動を続けている中でのモチベーションや出来事、うまくいった例などを挙げ、みんなもなにかやってみようよ、とあたたかい声で呼びかけていらっしゃいました。
www.slideshare.net
その後懇親会ではぎんざRuby会議02の開催を迫られ、冷や汗をかいておられました。(私も煽りましたが...)
@okuramasafumiさん 「Web開発におけるテスト戦略」
Grow.rbの主催など、活発な活動をされている@okuramasafumiさん。2度目のご登壇です。 今回は 「Web開発におけるテスト戦略」と題し、テスト全般についてのお話でした。
まず用語の定義を行い、次になぜテストを書くのか、開発者の幸福のためであるという点にフォーカスされていました。 そして「プログラマの三大美徳」を参照し、それぞれの美徳に合わせたテスト戦略について具体例をお話されていました。
スポンサーセッション リンクアンドモチベーション様
いつも会場やドリンクのサポートをして下さる、リンクアンドモチベーション様より、前回に引き続き磯崎さんがご登壇。 人事採用担当ですが、エンジニアを理解すべく日々奮闘。 前回は「本を一冊読んでくる」という約束をされましたが、「全く覚えられなかった」ものの、「ゼロからわかる Ruby 超入門 はじめてのIT技術講座」を一冊読み切った!と報告されていました。
- 作者: 五十嵐邦明,松岡浩平
- 出版社/メーカー: 技術評論社
- 発売日: 2018/11/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
次回の目標は、「Githubを使ってみる、Railsチュートリアルをやってみる」だそうです。次回の報告に期待しましょう。
またリンクアンドモチベーションでは、引き続きエンジニアを募集しているとの事です。
@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のうしろ側についてお話頂きました。
Railsを使われている方でしたら誰でも使うであろうMigration機能。そのMigration fileにはTable自体の定義、 Columnの定義など様々な定義が含まれていますが、それらがActiveRecordの中でどうClassとして表現され、また主にMySQLの場合においてどのようにsql文になっていくかについて、その流れと詳細を語って頂きました。
@morimorihogeさん(BPS株式会社) 「出張Railsウォッチ in 銀座Rails」
新企画として、「Railsウォッチ」を書かれている @morimorihogeさんをお招きし、「出張Railsウォッチ in 銀座Rails」を開始しました。 第一回となる今回は、懇親会の冒頭に設置し、参加者の皆さんの属性をお伺いしながら、Rails6.0の話題などについてお話しました。
今後も定期的にお越し頂き、1ヶ月のRailsの動きを軽く振り返る機会をご提供頂く予定です。
次回銀座Rails#12について
次回銀座Rails#12は2019/08/29(木)に開催。 ゲストスピーカーには「プロを目指す人のためのRuby入門」などの著者である @jnchito(伊藤淳一)さんをお招きし、「プログラマがコードを書きながら考えること 」について、実際のプログラミングの流れの再現とともにお話頂きます。
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る
また会場がいつもと異なり、渋谷DeNA様での開催となります。お間違えの無いよう気をつけてお越しください。
lsyncdでlocalとremoteのソースコードの同期をする
きっかけ
今使っているMacBookProのメモリは16G。dockerやらvagrantやらchromeやらslackやらを立ち上げていると、メモリがあっという間に枯渇してしまう。つらい...
自宅に固定PC置いてメモリとか爆積みにして、そこにログインして開発しようかな...
— ginkouno (@ginkouno) April 29, 2019
32Gメモリ搭載のMacBookProを買うことも考えたものの、「dockerなどはLinuxの方がサクサク動く」という話をちらほら聞いたので、Linux機を買おうか自作しようかと悩んでいたところ...
https://t.co/27dwmQP3tx
— ginkouno (@ginkouno) April 29, 2019
あー確かに楽しそうな予感が
ということでオススメ頂いたIntel NUCその他部品を購入し、Linux PCを半自作。メモリを32G載せました。
INTEL インテル i7-8559U M.2 SSDに対応 2.5" (9.5mm厚) HDD/SSDも搭載可能 ハイパフォーマンス小型ベアボーンキット BOXNUC8I7BEH【日本正規流通品】
- 出版社/メーカー: インテル
- 発売日: 2018/11/08
- メディア: Personal Computers
- この商品を含むブログを見る
シリコンパワー ノートPC用メモリDDR4-2400(PC4-19200) 16GB×2枚 260Pin 1.2V CL17 永久保証 SP032GBSFU240B22
- 出版社/メーカー: シリコンパワー
- 発売日: 2018/09/29
- メディア: Personal Computers
- この商品を含むブログを見る
これに1TのSSDを買っても、合わせて10万円以下!素晴らしい。
で、一旦以下のような方針を立てた。
- MacBook(= local)のエディタとか諸々の開発環境はそのまま使う
- SlackとかiTunesとかその他便利ツールとかを一切放棄するのはまだつらい
- docker、vagrantなどはNUC(= remote)に任せる
そこでlsyncd
ようやく本題。remoteとlocalとでソースコードを同期するため、lsyncdを使用した。
インターネット上を探すと、lsyncdに関する情報はいろいろあったが、ちょうど自分が使いたい設定でのサンプルが無かったので、ここにメモっておく。
前提
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側にはginkouno
userでログインしたいので-l
optionで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環境を頂く
ささださんが用意してくれているものを、ありがたく使わせて頂く🙏
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し、出来たrubyをgdbで動かしてやればよい。 ↓がとても参考になるので読みながらやる。 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本を一冊読破してくると宣言されていました。
またリンクアンドモチベーション社では引き続き、エンジニア絶賛採用中とのことです。
@ryosuke_satoさん 「My API CLIENT」
二度目の登壇ご登壇となる@ryosuke_satoさん。株式会社フィードフォースにて、Railsなどを用いたバックエンジニアをされていらっしゃいます。
まず前回発表したRubocopChallenger gemの話の続きとして、gemの効果で.rubocop_todo.ymlとの長い戦いに区切りがついたことを報告。
https://github.com/ryz310/rubocop_challenger
また今回は、やはり自作のgemであるMy API CLIENTの紹介です。
My API CLIENTはこれは世間に数多あるWebAPIに対し、Clientを簡単に作れるようにするためのフレームワークとして開発を始めたとのこと。
機能的には、generatorによってスッと作成でき、エラーハンドリングなどもサポート、BUGSNAGとも連携しやすいように作っているなど、便利機能が充実。
発表時点ではまだversionが0.5.1でベータ版(本記事執筆時には0.6.2)とのことですが、日本語ドキュメントもあるので、ぜひ触って欲しいとのことです。
発表資料はこちら。
@morimorihogeさん 「RDBMSのVIEWを使ってデータアクセスをいい感じにする」
株式会社BPSにお勤めの @morimorihogeさん。運営されているTechRacho 週刊Railsウォッチには、私もいつもお世話になっています。
今回はRDBMSのVIEWに関するお話。
まずはVIEW機能についての軽い解説の後、ActiveRecordからでも普通にVIEWにを使える点をご紹介。 そして「いい感じに」使う事例として、有効なユーザだけを取得したい、ユーザ毎に公開可能なカラムを設定したい、複雑なテーブル構造の中から、様々なテーブルの項目を横断して参照したい、など実用的な事例を列挙。 最後にRailsで使う場合の注意点を挙げられていました。
コードの例など、詳しい解説は TechRachoのこちらのページに記載されております。
ゲストスピーカー @moro 諸橋恭介さん「オレオレフレームワークを作らない方法 / How NOT to build own framework on Rails」
@moro(諸橋恭介)さんはベテランのRailsエンジニアで、 Rails勉強会の実施やRailsレシピ本、Cucumber本などを書かれたりしております。私も一時期開発現場でご一緒したことがあり、たいへん勉強になりました。
今回は「オレオレフレームワークを作らない方法」と題してのお話。
まずはフレームワークとライブラリの違いについて解説、その上でフレームワーク化された場合のデメリットとして、フレームワークになるとその上での活動に制約ができること、コード自体が複雑になること、そのフレームワーク自体の学習コストがかかることなどについてご説明。
そしてフレームワークを作らずに制御構造を使い手に委ねる方法の具体策として、ふつうにメソッドに抽出する、ストラテジーパターンを使う、ブロック渡しを使う、などを挙げられていました。 実際のコードなど、詳細は以下の資料に記載されております。
目先の新しいことではなく、基本的なRuby / Railsの使い方を突き詰め、工夫によってよりよいRailsでの開発を目指すお話でした。
スポンサーセッションメドピアさま
今回ピザスポンサーとしてご支援くださったメドピアさまより、川井田さんがご登壇されました。 自分がいかに失敗 -> 成功 を高速に繰り返し成長したか、そしてそれを受け入れるメドピア社の良さについて、体当たりの発表をされておりました。 メドピア社には銀座Rails#5にも登壇された @netwillnet(前島真一)さんも技術顧問として在籍されており、Railsで困った時のアドバイスなどを受けることができます。
エンジニア募集中とのことで、ご興味のある方はこちら。
次回銀座Rails#11について
次回銀座Rails#11は2019/07/24(水)、新コーナー「出張Railsウォッチ in 銀座Rails」が始まります。今回ご登壇頂いた週刊Railsウォッチの @morimorihoge さん(BPS株式会社)をお招きし、「これを聞けばここ一ヶ月のRailsの動きがなんとなく掴める!」を目指します。
またゲストスピーカーには Oracle ACEでありActiveRecord Oracle enhanced adapterのメンテナである@yahondaさんをお招きし、ActiveRecord::Migrationの実装についてお話頂きます。普段使っているRailsの中身についてのお話を聞ける良い機会ですので、ぜひお気軽にご参加下さい。参加者募集中です。
銀座Rails#6を開催しました
去る2019/02/22(金)、リンクアンドモチベーション様の会議室をお借りし、銀座Rails#6を開催しました。
https://ginza-rails.connpass.com/event/112094/
当日の様子は、Togetterのまとめを御覧ください。
https://togetter.com/li/1322418
スポンサーセッション Forkwell様
いつもお世話になっているForkwell様より、前回に引き続き大学生インターンの中野さんが登壇されました。 今回はポートフォリオサービスの中から、日報機能についてご説明。 その日の活動、たとえばPull Requestやその日に実施したコード変更の量などをまとめ、コメントで説明を加える事ができるとの事です。 またおなじみAmazonのギフト券をGetできるキャンペーンも紹介されていました。
ポートフォリオサービスはこちら https://portfolio.forkwell.com
shinkuFencerさん「テストコード未経験者がRailsでそれなりにRSpecがかけるようになるまでの話」
https://speakerdeck.com/shinkufencer/inexperience-rails-developer-use-rspec
前回ご登壇頂いた平野さんの「銀座Railsは発表のハードルが低い」というtweet見て応募されたshinkuFencerさん。 今回はテストコードをそれなりに書けるまでの道のりを共有して頂きました。
新卒の頃よりいろいろな言語での実装を経験されたshinkuFencerさんですが、それまでの現場ではテストを書く習慣、文化がなく、またテストを書こうかなと考えてもスケジュール的に工数が取れなかったとのこと。
ところがある案件にて、開発一人体制になり、そちらでプロジェクトの懸念点を解消するためにテストを導入。 足回りの整備から知識の補充などを着々と進め、今ではテストを書かないと怖いという感覚になっているとの事です。
cawaさん「Rails6からRailsをわかっていく」
京都で個人事業主をされているcawaさん。Kyoto.rbのオーガナイザもされています。 今回は「Railsについてわからないことがたくさんあるので、聞いてみようと思ってやってきた」とのこと。 2016年頃からRailsを触り始めたcawaさんですが、ちょうどRails6が出るタイミングなので、これを機にわかっていこうと決めたそうで、そのためにどのような情報を読み、どう感じたか、そしてわかったりわからなかったりしたかを共有して頂きました。
当日の発表資料に情報源のリンクが多く掲載されております。 https://speakerdeck.com/cawa/rails6kararailswowakatuteiku
スポンサーセッション リンクアンドモチーベーション様
今回も開場提供ならびにゲストスピーカ招致にご協力頂いたリンクアンドモチベーション様。 銀座Rails第一回目より、エンジニアリングの会社になろうとしていると継続的にお話されておりますが、 その一環として、RubyKaigiのRubyスポンサーや、RailsGirlsの年間スポンサーにもなったとのことでした。
またエンジニアの働きやすい環境作りを目指し、技術書購入し放題(ノールック承認!)、PCスペック選びたい放題など、 魅力的な制度を提供されているとのことです。 https://www.wantedly.com/companies/lmi
onk(大仲 能史)さん「1からの再出発」
今回のゲストスピーカーは、現在はてなにてご活躍中の @onk(大仲 能史)さんでした。 いままでRailsの現場で、開発効率を向上させ、それを「ふつう」レベルとして維持し、更に改善していくという活動を続けてきたonkさんですが、 その「ふつう」を如何に新しい環境にて実現/展開していくか、段取りやマインド面から実際に行ったことなど、さまざまな角度からお話されました。 また転職先はPerlを採用していることで著名な会社であったため、参加者からはPerlとの付き合い方などについても質問が寄せられていました。
(当日の発表資料は公開され次第リンクを掲載します)
次回、銀座Rails#7について
次回の銀座Rails#6は、2019/03/26(火)に開催します。 ゲストスピーカーは、RailsGuideの翻訳やRailsTutorialセミナーで著名な、Yasulabを経営されている安川要平さんです。
現在、本編/懇親会ともに参加者募集中ですので、お気軽にお申し込み下さい。