Ruby on Rails の楽しみ方
by
morihirok
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
STORES 株式会社 「なぜ今 Rails を学ぶべきなのか」Ruby on Rails から学ぶ Web ア プリケーション開発実践 / 技育CAMPアカデミア Ruby on Rails の楽しみ方
Slide 2
Slide 2 text
自己紹介 森弘 一茂 X: @_morihirok GitHub: morihirok STORES 株式会社 ←東京Ruby会議12の様子
Slide 3
Slide 3 text
20年続くWebアプリケーションフレームワーク Ruby on Rails ● GitHub、Shopify といった大規模なWebアプリケーションが Ruby on Rails で開発されている ● 日本でもクックパッド、freeeをはじめ、様々な企業が Ruby on Rails を採用 している ● STORES は新規プロダクトの開発にも Ruby on Rails を採用している 20年間選ばれ続けるWebフレームワークは 他に例を見ない
Slide 4
Slide 4 text
なぜRailsはここまで選ばれてきたのか?これからどうなるのか? ● 「便利だから」だけでは説明できない ● Railsが誕生した歴史的背景と、その思想に目を向ける必要がある ● それをふまえてRailsから学べることと、Web開発の未来を考える 過去を振り返り、未来について考えることで 学生のみなさんに「Rails の楽しみ方」について 伝えられたらと思います!
Slide 5
Slide 5 text
謝辞 ● このスライドをレビューしていただいた一般社団法人 日本Rubyの会 代表理事 高橋征義さんに心から感謝いたします ● 高橋さんからのコメントをスライド中にいくつか拝借させていただいています
Slide 6
Slide 6 text
目次 1. Rails誕生の背景 2. Railsはなぜ開発者に受け入れられたか 3. Railsはopinionatedなフレームワークである 4. Railsの学び方とRailsから何を学べるか 5. Railsの未来
Slide 7
Slide 7 text
時は2000年初頭 Rails 誕生の夜明け前
Slide 8
Slide 8 text
2000年代初頭のWeb開発は大変だったらしい ● 小さな機能のために大量のコード・設定が必要だった ● 素早く書くと今度はコードをきれいに保つ方法がなかった 本当にたいへんでした 人間や方法論の問題ではなくハードウェア的なリソースの制限が あらゆるところで足を引っ張っていたのでは、 という感想があります 高橋さん
Slide 9
Slide 9 text
そんな課題感から当時読まれていた技術書 ● 「Patterns of Enterprise Application Architecture」Martin Fowler (2002) ○ Java等のオブジェクト指向言語におけるエンタープライズアプリケーションの設計パターン集 ○ DHH(Railsの作者)も影響を受けている ● 「Domain-Driven Design」Eric Evans (2003) ○ いわゆるDDDの原祖 ○ ドメイン(業務知識)をいかにソフトウェア設計に組み込むか、プロセス改善と実際のソフト ウェア設計について書かれている アプリケーションをキレイに作るための アプローチ
Slide 10
Slide 10 text
DHHの登場 ● デンマーク出身のエンジニア、David Heinemeier Hansson ● 37 signals社でプロジェクト管理ツール「Basecamp」の開発を担当
Slide 11
Slide 11 text
DHHのモチベーション https://kdmsnr.com/translations/interview-with-dhh/ 私には2つのプログラミングのバックグラウンドがあるんです。ずっとPHPを使ってき まして、そういうときはなんでもかんでも早く作るんですけど、とにかく結果が重要 なんですね。大学ではJavaの勉強をしてまして、J2EEの仕事もたまにやってたんです が、そういうときはパターンやプラクティスを使って、精度の高さだとか保守のしや すさなんていうのを気にするわけです。 私はこの2つのソフトウェア開発手法に挟まれてたんですね。PHPに代表されるような 「早いけど汚い」手法と、Javaに代表されるような「遅いけどキレイ」な手法にで す。それで、両者を組み合わせたら、究極の目標である「早くてキレイ」になるん じゃないかと思ったわけですよ。
Slide 12
Slide 12 text
Rails が生み出された ● DHHがプロジェクト管理ツール「Basecamp」の開発にRubyを採用 ● 開発過程で作業が楽になるように再利用可能なフレームワークを作った Rubyは、それはもう、ものすごくフィットしたんです。私の脳に完璧にフィットしま した。それからは楽しく、より良く作業が行えるようになりました。 https://kdmsnr.com/translations/interview-with-dhh/
Slide 13
Slide 13 text
2005年 Ruby on Rails v1.0 リリース
Slide 14
Slide 14 text
Ruby on Rails リリース ● 作られたツール群を整え「Ruby on Rails」としてリリースした ● ゼロからブログアプリを15分で構築するというデモ動画を YouTube に公開 し、当時としては画期的な速さであったため話題を呼んだ
Slide 15
Slide 15 text
多くの企業がRailsを採用した ● シリコンバレーを中心にWeb系スタートアップへの投資が加速する中で、アイ デアを形にするスピードに優れているRailsは多くのサービスで採用された ● GitHub、Shopifyをはじめ様々なサービスがRailsで作られ、大きく成長した ● 日本でもWeb系企業の市場価値が上昇していく中で、クックパッド、freee、 Money Forward といったサービスがRailsで作られ、上場企業に育った
Slide 16
Slide 16 text
Railsはなぜ開発者に受け入れられたか
Slide 17
Slide 17 text
DHHはWebアプリケーション開発を大胆に抽象化した ● リソースが定まれば、生命線であるユースケースのCRUDは自動生成できる ● 例えば Blog というリソースが存在しそれを操作するとして、必要なものはコ マンド一発で自動生成される ○ blogs というテーブルをデータベースに作る ○ データベースを操作するBlogというモデルクラスを作る ○ クライアントからのリクエストを受け取り処理するBlogsControllerを作る ○ blog の一覧、詳細、作成、更新、削除ができるルーティングを作る ■ 一覧:GET /blogs ■ 詳細:GET /blogs/:id ■ 作成:POST /blogs ■ 更新:PUT /blogs/:id ■ 削除:DELETE /blogs/:id ○ 自然と「REST」というWeb APIの設計思想に従うこともできる
Slide 18
Slide 18 text
アプリケーションにとって必要なリソースを定義できればほぼ完成する ● 各種ファイルの関連付けは設定ファイルで行うのではなく規約で決まるため、 設定ファイルを書いて回る必要がない ○ Blog モデルはなんの設定をしなくても命名から判断してblogsテーブルを参照する ○ Blog モデルには各レコード・カラムに対してSELECT、UPDATE、INSERTなどのデータベース 操作を行うメソッドが自動で作られる ■ 例えば blogs テーブルに author というカラムがあれば、Blog モデルには author とい うメソッドが自動で作られ、それを介してDBを参照できる ○ BlogsController は何の設定をしなくても、メソッド名に紐づいてファイルを探索し、自動的 にテンプレートエンジンを読み込んでレスポンスを作ってくれる 大事で楽しいビジネスロジックやUIの開発に 集中できる!
Slide 19
Slide 19 text
Rails は現実のアプリケーション開発を経て生まれている ● DBマイグレーションのための機能 ● 本番環境・開発環境で動作を分けるための仕組み ● DBを操作するための様々なインターフェース ● 各種もろもろWebアプリケーションを開発するうえで便利なライブラリ 楽しく大事なことに集中できて 現実的な工夫が詰め込まれているからこそ Railsは開発者に受け入れられてきた
Slide 20
Slide 20 text
Rails は opinionated な フレームワークである
Slide 21
Slide 21 text
RailsはDHHが強い思想で方向性を決めているフレームワーク https://www.youtube.com/watch?v=HDKUEXBF3B4
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
Rails がこれまでのアプリケーション開発と異なる点 ● 疎結合に設計するというソフトウェア開発の原則を、開発速度のためにあえて 破った ○ Model クラスにDBとの接続、ドメインロジックの管理、クライアントからのリクエストバリ デーションなど様々な責務が密結合に設計されている ● 設定を明示的に書いて処理のマッピングを行うのではなく、規約を作ることで 暗黙的に処理のマッピングが行われる仕組みにした 全ての人が自然に受け入れられる フレームワークではない
Slide 24
Slide 24 text
異なる点が多かったため反発も多かった 24 それは私がRailsのマーケティングへモードを切り替えたときに、少し生意気な物言いだっ たからでもあります。 しかし、Rubyのような誰も知らないプログラミング言語から新しい何かが生まれようとし ているとき、それはささやきではなく、叫びでなければならないことは分かっていました。 だから私は叫んだのです。 https://www.publickey1.jp/blog/24/ruby_on_railsdhhruby_on_rails_the _documentary.html
Slide 25
Slide 25 text
DHHがDHHしている例 ● https://signalvnoise.com/svn3/the-majestic-monolith-can-become-t he-citadel/ ○ 2016年に業界の流れが「これからはマイクロサービスだ!」というときに「よくできたモノリ スこそが至高」と叫び炎上 ● https://world.hey.com/dhh/why-we-re-leaving-the-cloud-654b47e0 ○ 2023年ほとんどの企業がクラウドに移行した中「私たちはクラウドをやめてオンプレに移行し ます」と宣言し炎上 ● https://world.hey.com/dhh/turbo-8-is-dropping-typescript-70165c0 1 ○ 2023年TypeScriptがもはやデファクトかという流れの中DHHの好みじゃないという理由で TurboというRailsのフロントエンドライブラリからTypeScriptを消し炎上 25
Slide 26
Slide 26 text
Rails を学ぶうえで opinionated なものであることは 意識しておくと良い
Slide 27
Slide 27 text
Railsの学び方と Railsから何を学べるか
Slide 28
Slide 28 text
Railsには良い教材がたくさんあります ● Rails チュートリアル ○ https://railstutorial.jp/ ○ X(旧Twitter)風のマイクロブログサービスを作りながら学べる ○ Web テキストだと¥1,078(税込) ○ 無料の過去版でも十分エッセンスを学べる ● Rails ガイド ○ https://railsguides.jp/ ○ 無料でRailsの機能を網羅的に学べる 28
Slide 29
Slide 29 text
Railsガイドは普遍的にWebアプリケーション開発に役立つ ● Railsガイドにはいろんなユースケースやセキュリティなど、さまざまなト ピックがある ● これらは「現実でおきた課題をRailsはどう解決したか」というショーケース であり、そのアプローチ方法はRailsに限らずWebアプリケーションを開発す る人であれば参考になるものが多い ○ 大量レコードをどのように安全に処理するか ○ デフォルトでどのようなセキュリティ対策がなされているか ○ 本番データベースに対するマイグレーションはどのように行うか ○ どのように多言語対応を行うか 29
Slide 30
Slide 30 text
DHHの考え方は仕事でも大事だったりする ● (良くも悪くも)DHHは世間に迎合しない ● 仕事していると「まあなんかこれはこうなってるものなんです」みたいに雰囲 気でそうなっているがみんな従っている、みたいなものが意外と多い ● こういうものを深ぼっていくと不要な業務を削減できたりと意外とインパクト ある課題解決につながる ● Railsから学べるDHH的姿勢から雰囲気でそうなっているものに切り込んでい くパワーを得られる(かもしれない) 30
Slide 31
Slide 31 text
DHHの考え方は仕事でも大事だったりする 31 仕事をするうえでのDHHの参考にするべきところは、何よりも「DHHが めっちゃ稼いでいる・儲かってる(らしい)」ところですよね… これで単に美しいだけとかたのしいだけとかだと(少なくとも仕事で 開発するうえでは)説得力がないので 「ビジネスでちゃんと成功する」というところからあくまでも軸足を ずらさない、そういうpracticalなところがあるからこそ生まれる説得力 というのはありそうに感じます 高橋さん
Slide 32
Slide 32 text
Railsを学ぶうえでよくある間違い ● 場当たり的実装で終わらせる ○ Railsにはいろんな現実的ユースケースに備えたAPIが用意されている ○ とにかく書いてみるのも大事だが、結構な確率でそれをやるためのより優れた方法がRailsから 提供されているので、ドキュメントを探ってみよう ● 「RailsでDDD的なレイヤードアーキテクチャをやってみよう」 ○ Railsは「あえて密結合」にすることを選んだフレームワークで、レイヤードアーキテクチャな ど責務を疎に設計するものとは違う思想を持っている ○ これに反する設計を持ち込むのはそもそものRailsの思想とは反しており、かなりの覚悟が必要 ○ もしやりたくなったらまずは「リソース」つまりDB設計に着目するなどいろいろアプローチが ある ○ まずはRailsの思想をしっかり理解しよう ○ そのうえで Rails で大規模にスケールしている GitHub、Shopify などの取り組みを参考にし てみよう 32
Slide 33
Slide 33 text
あえてRailsで学べないことを話すと ● Rails のエコシステムに含まれていない技術は学びにくい ○ 例えばGoであればアプリケーションに必要な様々なライブラリやミドルウェアを各種選定した り自前で作ったりする ○ その過程でいろんな選択肢を見るきっかけになる ○ Railsの場合はあらかじめ内包されていたり定番ライブラリが多くあるので悩むことが少ない が、いろいろ選定して回って知識を得るきっかけがない ● 個人的にはRailsのフロントエンドのエコシステムは今のところバックエンドほど「これでいいじゃん!」感はないかも... 33
Slide 34
Slide 34 text
Railsの未来
Slide 35
Slide 35 text
Railsは2025年においても、あくまでひとりでも全てを行えることを指向している 35 The One Person Framework https://world.hey.com/dhh/the-one-person-framework-711e6318
Slide 36
Slide 36 text
つまり個人開発をする際にはかなりおすすめできる ● 最新版Railsでは、必要なインフラが最小限でOKになるようにいろんなツール が追加されている ○ Railsが動くサーバとDBがあれば十分 ● JSONを返すWeb APIを作るのも簡単なので、クライアントをモバイルアプリ にしてもいいし、フロントエンドはReactやVueで書くといったこともお手軽 ● しかも使いながら自然といろんなWeb開発の実践的なユースケースを学べる 36 学生のみなさんにはとてもおすすめ!
Slide 37
Slide 37 text
もちろん大規模開発にも引き続き使われる ● ShopifyはRubyKaigiというカンファレンスで「100年続く企業を目指してお り、そのためにRubyとRailsへの投資を続ける」という旨の発言をしている ● STORESもRubyとRailsの生産性の高さにベットし、既存のRailsへの投資はも ちろん新規サービスも多くをRailsで作っていく 37 「強いこだわり」と「GitHub/Shopifyなどのふつうにでかいサービスでも使え る利便性」が両立できている、そのバランス感覚がすごいなーというところです このバランス感覚はDHH一人に帰属するところでもないはず 高橋さん
Slide 38
Slide 38 text
STORESエンジニア組織の将来予測 ● LLMの登場によってマイクロサービス的分業の世界観からよりひとりのエンジ ニアがより広い範囲の課題解決を行う世界観に ● The One Person が事業に対して大きなインパクトを生み出す時代に 38 引き続きRails本気でやっていくぞ...!
Slide 39
Slide 39 text
ぜひ Rails を通じて Webアプリケーション開発の楽しさを 学んでください!
Slide 40
Slide 40 text
参考文献 ● 2024年のRailsと自由について考える ○ https://speakerdeck.com/takahashim/enishitechcconf2024 ● Ruby on Railsの正体と向き合い方 ○ https://speakerdeck.com/yasaichi/what-is-ruby-on-rails-and-how-to-deal-with-it ● Ruby on Rails: DHHのインタビュー ○ https://kdmsnr.com/translations/interview-with-dhh/ ● Ruby on Railsはどのように生まれ、発展してきたのか ○ https://www.publickey1.jp/blog/24/ruby_on_railsdhhruby_on_rails_the_document ary.html ● texta.fm ○ https://open.spotify.com/show/2BdZHve9cIU6c8OFyz7LeB 40