回答が必ず正しいわけではありません。ヒントとしてお使いください。この質問はお試し回数に含まれません。チュートリアルプロダクト開発の0→1を学ぼうお試しプラン下記フォームからメールアドレスを入力していただくと、招待リンクが記載されたメールが届きます。リンクをクリックし、アカウントを有効化した時点から『30分間』解説動画のお試し視聴ができます。メールアドレスこのメールアドレスは使用できません。入力内容に誤りがあります。第7版の解説動画は第1章から随時アップロードされますメールを送信しました。メール内のリンクから視聴を開始できます。Railsに乗り換えたのですが、またPHPに戻ってしまいました(詳細は私の名前をGoogleで検索してみてください)。そんな私ですが、とある本を使ってもう一度試してみた結果、今度はRailsに無事乗り換えることができました。チュートリアルという本です。私は多くのRails関連の本を参考にしてきましたが、真の決定版と呼べるものは本書をおいて他にありません。Way)』で行われています。最初のうちは慣れるまでに時間がかかりましたが、この本を終えた今、ついにこれこそが自然な方式だと感じられるまでになりました。本書では多くのプロが推奨するテスト駆動開発をほぼ全編に取り入れています。実例を使ってここまで分かりやすく解説された本は、本書が初めてでしょう。極めつけはGitやGitHub、本番環境へのデプロイまでも含めている点です。このような実践もチュートリアルに含まれているため、読者はまるで実際のプロジェクトの開発プロセスを体験しているような感覚が得られ、それでいてチュートリアルとして見事に一本化されています。かのような感覚が得られるはずです。やりながら、このRailsチュートリアルを3日間かけて一気に完走しました。最初から最後まで、途中を飛ばさずにやるのが有益な読み方です。3分のTED動画『社会運動をどうやって起こすか』を観たことがある方もいるのではないでしょうか。その方からの推薦の言葉です。多くを参考にさせてもらっています。協力と本書への支援も含め、感謝したいと思います。氏にも謝意を表したく思います。方々、ありがとうございました。最後に、ここに書ききれないほど多くの読者からバグ報告や提案を頂きました。ご協力いただいた皆様のおかげで、本書の完成度をとことんまで高めることができました。Donahoeによる日々のチュートリアル制作作業のサポートにも感謝いたします。最後に、たくさんの読者の皆さん、そして、ここに挙げきれないほど多いコントリビューターのみんな、バグ報告や提案をしてくれてありがとう。彼ら/彼女らの多くの手助けに、最高の感謝を。Enoughの共同創業者でもあります。Teachingを受賞しました。ハーバード大学卒業後、カリフォルニア工科大学で物理学博士号を取得。ライセンスの元で提供されています。これらのライセンスはいずれか一方が有効になります。MITライセンスに基づいて使用する場合は、ビールも購入する必要はありません。App」などのRailsアプリケーションのソースコードを指します。「Railsチュートリアル」という教材コンテンツ自体は上記ライセンスで提供されていないのでご注意ください。return.第1章ゼロからデプロイまでRailsチュートリアルへようこそ!本チュートリアルの目的は、皆さんにWebサービス開発で必要になる基礎知識を学んでもらうことです。本チュートリアルで学んだことは、Webサービス開発者としての仕事を探したり、フリーランスとしてのキャリアを始めたり、自分のWebサービスで起業する場面などで役立ちます。開発の経験があれば、より短期間でWebサービス開発の流れを掴めるでしょう。Railsチュートリアルは、Rails以外にも幅広く通用する「汎用性の高いスキル」の習得を重視しています。今後他のプログラミング言語やフレームワークを学ぶ予定がある人にとっても、ここで学んだWebサービス開発の基本が役立つように仕上げています。Rails』を題材にしています。これはWebサービス開発の基本を学ぶ上で、これ以上ふさわしいフレームワークは無いと考えているからです。Rails(略称『Rails』)は、プログラミング言語『Ruby』で書かれたフリーかつオープンソースのWeb開発フレームワークです。Railsは本格的なWebサービスを開発するツールとして急速に有名になり、海外ではGitHubやShopify、DisneyやApple、AirbnbやSoundCloud、イギリス政府などで採用され、ドイツの政府系ファンド(STF)もRuby/Railsを支援しています。日本国内でもCookpadやnote、freeeやマネーフォワード、YAMAPやCrowdWorks、QiitaやZenn、Game8やアカツキ、pixivやSTORES、駅すぱあとやスタディサプリ、自治体に導入されているつながる相談などで採用されています。Rubyを採用している上場企業は50社以上にのぼり、2021年にはRailsを使い続けるGitLabも約1.2兆円の時価総額で上場、2024年のRails求人数も右肩上がりとなっています。1Webサービス開発にはRails以外にも多くの選択肢がありますが、Railsのアプローチは豪快かつ強力で、個人開発から上場まで幅広い場面に使えます。Webサービスを作る個人にとってはRailsの標準機能だけで開発でき、大成功したときも高い拡張性を兼ね備えています。大企業がシングルページアプリケーション(SPA)やモバイルアプリと組み合わせて開発したい場面でも、Railsは素晴らしいバックエンドを提供できます。加えて、RailsにはPHPやNode.jsのフレームワークにも影響を与えた設計哲学があります2。Hansson)は設計哲学について一貫して次のようにコメントしています。Railsが登場した当初から現在に至るまで、フレームワークに関する様々な議論がありますが、Railsが大切にしている設計哲学は今も残り続けています。プログラミングの慣習をパターン化すること、不要な選択肢を外すこと、そして最適なデフォルト設定を提供することが大切であり、生産性を劇的に向上させるのです。この一貫したRailsの設計哲学が20年以上生き残り続けているおかげもあって、本チュートリアルで学べるWebサービス開発の基本もリリース当初からほとんど変わらずに安定し続けています。皆さんが本チュートリアルを通してこれから学ぶ知識と経験についても、当分古びることなく役に立つと言えるでしょう。Railsは今も絶え間なく進化を繰り返しています。6では、並列テストや複数データベース対応などの高度な機能が追加されました。Uchitelleさんによって『アプリがどれほど大きく成長してもRailsはスケールできる』と解説されています。7.0では、HotwireやTurboといったフロントエンドの新しい技術と統合されました。提供できるようになりました3。7.1では、Dockerを使った開発がしやすくなり、GitHubやShopify級の大規模なWebサービスでも高いパフォーマンスを出せるようになりました。Railsの実績は、今も動き続けているWebサービスとその成果を見れば明らかでしょう。共同開発プラットフォームとして絶大な人気を誇るGitHubには安心して寄りかかれる高い安定性があり、オンラインストア構築(EC)の分野で大成功を収めたShopifyはカナダ最大級の上場企業になりました。このような多くの成功した企業や政府・自治体(福岡・島根・三鷹など)がコミュニティを支援し続け、RubyやRailsが進化し続けているという点は、これから学ぶ私たちにとっても大きなメリットです。Railsは、2003年に1人のWebエンジニアが仕事の合間に手掛けたことから始まったとは思えない素晴らしい出来です。当時Railsを選ぶことは最先端であると同時に20年以上生き残るか分からないリスクもありましたが、今ではそうした駆け引きなしにRailsを選べます。Railsは数々の事例で実証された高い生産性を備え、有用なコミュニティによって支えられています。Railsは、本格的なWebサービス開発にふさわしい魅力的なフレームワークなのです。自分に合った学び方を見つけていきましょう。詳細は次の「前提知識」で1つずつご紹介していきます。対応の解説動画は準備中です。準備ができた章から先行リリースしています。前提知識Railsチュートリアルでは、題材となるSNSを作りながらプロダクト開発に関する様々な知識を学んでいきます。具体的には、Ruby、テスト駆動開発、コマンドラインによる実践的なプログラミング、Gitやテストを使ったコード管理、HTML、ある程度の量のCSS、JavaScriptとSQLを少々、そしてセキュリティを意識した設計と実装やRenderやAWSを使ったWebサービスの公開方法などが学べます。ゼロから学べたという事例もありますが、プログラミングの学習経験があると良いです。「プログラミングが初めて」という人向けにも、初心者向けプログラミング学習サービス「Progate」と提携し、Webの基礎知識が学べるコースを用意しています。Progateは学習の難関である環境構築が不要で、ブラウザ上でコーディング体験ができるため、特にプログラミング未経験者にオススメです。Rails)で基本を押さえましょう。Rails)上記コースを学んだ上で、それでも「難しい」と感じる方は下記の追加コンテンツや質問対応サービスもぜひご検討ください。Railsチュートリアル実践入門シリーズProgateと本書の違いの1つに、「ブラウザで開発するかローカルで開発するか」があります。実践入門シリーズではこれまでブラウザで学習してきた人を対象として、ローカル環境での開発に役立つ実践的な知識を詰め込んでいます。コマンドラインやテキストエディタの環境構築や、GitやGitHubに特化した解説など、ローカル環境で躓きがちな部分を重点的に補足しています。『Git/GitHub編』また、ローカル環境の難しさと同じことが、複雑かつ高度になっていくWeb技術にも言えます。Railsという実践的なWeb開発フレームワークを題材としていますが、JekyllやSinatraといった比較的シンプルで小さなフレームワークを間に挟むことで、段階的にWeb技術を学ぶこともできます。Rails編』(本書がこちら。本書も実践入門シリーズの1つです。)実践入門シリーズは今後も追加される予定です。最新情報は公式のnoteマガジンやYouTubeチャンネルからも発信していくので、ぜひチェックしてみてください。対応の解説動画は準備中です。準備ができた章から先行リリースしています。『ただ学ぶのではなく早く学びたい』といった方向けに解説動画と質問対応サービスも提供しています。企業の社員研修や大学/大学院の講義などでも採用されている好評のコンテンツとなっているので、効率的に学びたいときはぜひご検討ください。回答付き問題集で学ぶイラストと実演付きの解説動画で学べる速習パックです(倍速再生にも対応)。AIがエラーや疑問を補足する『AIサポート』や、大学/大学院で使われている回答付き問題集『トレーニング』も同梱されているため、「素早く学びたい」「理解度を高めたい」という場面でオススメです。現役Rubyエンジニアのサポート付きで学べる、解説動画の質問対応付きサービスです。後半の章ほど難しくなっていきますが、サポートを受けながらしっかり学ぶことができます。TechCommit】コミュニティ型の学習支援サービスです。独学での学習が不安な方にオススメです。(【Railsチュートリアルコラボ】Rails学習支援追加パックでお申し込みください。Railsの大型リファレンス『Railsガイド』です。Railsチュートリアル完走者が対象となっているので、本書を完走後、自分のWebサービスを開発するときや、仕事でコードを書く場面などでお使いください。全文検索やダークモードに対応したProプラン、ダウンロード可能な電子書籍版もあります。本チュートリアルは、実際に動くWebアプリケーションを開発しながら学ぶ構成になっています。最初は簡単なページ表示のみですが、章が進むにつれてユーザー登録やログイン機構など、少しずつに高度なWebアプリケーションになっていきます。1.4)の開発に取り組みます。本チュートリアルでは、あらゆるWebサービス開発で通用する一般的なトピックを中心に学べるようになっています。ユーザー登録やログイン機構、メールを使ったアカウント認証やパスワード設定といったトピックなどです。実際のWebサービスのほとんどでは、これらの主要な機能が盛り込まれています。Appの最終版では、初期のTwitterを連想させるような仕組みになっています。いえば偶然にも、Twitterも最初はRailsで構築されていましたね。動かす本チュートリアルの特徴の1つは、難関である開発環境のセットアップを後回しにしている点です。Codespacesなど、昨今進化が著しいクラウドIDE(ブラウザ上で開発できる環境)に対応しているため難しいセットアップが数クリックで完了し、本題であるプロダクト開発をすぐ学べるようになっています4。セットアップは初学者にとって大きな難関の1つです。Rubyをインストールし、Railsをインストールし、必要な関連ツールを何から何までインストールするのは、ベテラン開発者にとってもしんどい作業になることがあります。お使いのOS(Windows・macOS・Linux)やOSのバージョン、テキストエディタやIDEの好みなどでセットアップ方法がバラつくため、検索で見つかった記事が自分にとって逆効果になることもあります。1.2.1で説明するクラウドIDEは初学者の心強い味方になります。ブラウザ上で動くため、お使いのOSが異なっていてもほとんど同じように動きます。作業中の状態も保持してくれるので、チュートリアルをしばらくお留守にしてから戻ってきても以前の状態からすぐに再開できます。いえ、いずれはお使いのローカル環境でセットアップする必要が出てきます。1.2)も必要になるでしょう。ベテラン開発者がこれまで時間を掛けて歩んできたように、私達も少しずつ熟練に近づいていけばよいのです5。「熟練」になるとはRailsチュートリアルや実践入門シリーズでは「熟練」をテーマに据えています。技術的に困難な課題を解決するには、やはりハードスキル(操作方法などの定型化しやすいスキル)とソフトスキル(デバッグなどの定型化しにくいスキル)の両方が必要でしょう。クリックすると何が起きるかを知っているのは大切ですし、エラーが起こったらメッセージを読んで理解するスキルも重要でしょう。Webアプリケーションは様々な仕組みが積み重なって動いているため、その概要を理解するだけでも多くの知識と経験が必要です。言い換えると、皆さんがこれから挑戦するWebアプリケーション開発は、こうしたスキルの習得にもってこいの題材とも言えます。serverが動かなくなったときの対応方法といったテクニックも一緒に学べます(これらの用語が分からなくても大丈夫です。本チュートリアルで1章ずつ説明していきます)。難しいWebアプリケーション開発に挑戦しているので、本チュートリアルの途中で「うまくいかない!!」という場面に遭うこともあるでしょう。ハマりやすい手順については注釈やヘルプページなどで補足していますが、すべての状況をカバーするのは不可能です。したトラブルはむしろ「熟練」になるための修練だと捉えて、エラー解決に取り組んでみましょう。開発環境は、1人1人すべて異なります。開発者は慣れてくるにつれて、自分の環境をカスタマイズするものだからです。開発環境を大別すると、テキストエディタやコマンドラインを組み合わせて使う環境と、IDE(統合開発環境)の2つに分けられます。1.6)もしっかり組み込まれています。Railsの大きなプロジェクトには不可欠とも言うべき横断的ファイル検索も利用できます7。クラウドIDEを今後使うことがないとしても、コマンドラインターミナルやテキストエディタなどの開発ツールで一般にどんなことができるのかを知っておくには最適です。(名称がやや長いので以降ではそれぞれ「ターミナル」「エディタ」と呼び、またターミナルで行う操作のことを「コマンドライン」と呼びます。Codespacesを採用し、GitHub公式のRailsテンプレートを、Railsチュートリアル用にカスタマイズしたものを使用します。ブラウザ上で開発できるサービスで、無料のプランでも月60時間まで使えます8。クラウドIDEを利用するための手順は次のとおりです。GitHubのサイトは継続的に更新されているため、詳細な手順は異なっているかもしれません。1.2の「熟練」の考え方を参考に細かな差異にも対応してみましょう。認証情報をキャッシュする」を読んでおくとよいでしょう)。ChromeなどのChromiumベースをおすすめします。repository」をクリックします。template」が表示されていない場合はブラウザ幅を広げてみましょう。テンプレートページからリポジトリの作成へ進む新しいリポジトリを作成するページが表示されるので、ここではリポジトリ名にhello_appを入力しましょう。Description(説明欄)の内容は空欄でも大丈夫です。Publicオプションを選択し、本チュートリアルで取り扱うRailsアプリのソースコードをうっかり公開しても原理的には安全です。いえ、特にGitを今回初めて使うような場合は秘密鍵のような重要なファイルをうっかりコミットしてしまう可能性もゼロではありません。何か起きる前にひとまずPrivateにしておく用心深さが大事です10。repository」をクリックすると新しくリポジトリが作成されます。main」をクリックします。起動する環境構築が完了するのを待ちます。以下の画面が切り替わった後もCodespacesのサーバーが立ち上がるまで1〜2分ほど掛かります。環境構築が完了するのを待つRailsチュートリアルのロゴ画像が表示されたら完成です。このとき、シンプルブラウザが表示されず、エラーメッセージなどが表示される場合があります。ビューの読み込みエラーが起こったらが参考になるほか、1.3.2にあるように、実際のブラウザ(Chromeのタブなど)を開くと表示を確認できます。シンプルブラウザは実際のブラウザとは表示が異なる場合もあるので、画面確認は実際のブラウザで確認する方法がオススメです。環境構築の完成です!以上で初学者にとって難関と言われている「環境構築」も完了です!試しにRubyがインストールされているか確認してみましょう。Co...」「Codespace...」というタブをクリックすると、それぞれのターミナルに切り替えられます。–versionと打ってみましょう。Rubyのインストールが完了していたら、現在使っているRubyのバージョンが表示されます。日付などの細かな部分は異なっていても大丈夫ですので、ご安心ください。[x86_64-linux]本章の最後(1.7)で改めて説明しますが、上記のようにターミナルで操作して欲しいときは$記号を使って説明します。行の冒頭にある$記号は「ターミナルで打ってね」という意味なので、$は入力しないでくださいね。これでWeb開発を行う準備が整いました!Codespacesを使っている方は、この後の環境構築に関する説明をスキップして1.3.2から学習できます。いえいずれ独力で環境構築するスキルも重要になってくるので、斜め読みぐらいがオススメです。RailsをインストールするCodespacesで学習を進める場合、1.3.2から学習できます。ここから1.3.1の内容は自動で行われるため実行する必要はありませんが、自動化されている内容を知りたい場合や、自分で環境構築を行う場合に参考になります。1.2.1の開発環境には必要なソフトウェアがすべて含まれていますが、他の環境ではRailsが含まれていない場合もあるでしょう。チュートリアルを期待どおりに進めるには、Railsの正確なバージョンをインストールすることが重要です。1.7で説明します)。~/.gemrcRailsをインストールするには、RubyGemsが提供するgemコマンドを使います。1.2のコマンドをターミナルに入力してください。1.6の右下にあるコマンドライン領域に入力してください(ローカル環境で開発している場合は通常のターミナルウィンドウに入力してください)。7.0.4.3-vというオプションを使うことで、インストールされるRailsのバージョンを正確に指定できます。railsコマンドに-vオプション渡せばインストールされたことを確認できます。1.2)と正確に一致する必要があります12。gemのバージョンも揃えておくとよいことがわかっています。1.3.1で学びます。最初のアプリケーションコマンドラインの基礎知識は『コマンドライン編』で学べます。World」を表示するプログラムにしましょう。world!」という文字列を表示するだけの単純なアプリケーションを、開発環境(1.3.4)と本番環境(1.5)でそれぞれ作成します。Codespacesで学習を進める場合、1.3.2から学習できます。ここから1.3.1の内容は自動で行われるため実行する必要はありませんが、自動化されている内容を知りたい場合や、自分で環境構築を行う場合に参考になります。newコマンドを実行して作成します。このコマンドを実行するだけで、指定のディレクトリにRailsアプリケーションのスケルトンを簡単に作成できます。1.2.1で推奨しているCodespacesのテンプレートを使用している場合は、自動的にコマンドを実行しているため、ここでの操作は不要です。それ以外の環境では、お好きなディレクトリ構成で進めていただいて構いません。1.4ではUnixのcdコマンドとmkdirコマンドを使います。1.3をご覧ください。急いで学びたい人のためのUnixコマンドライン講座WindowsユーザーやmacOSユーザーの多くはコマンドラインというものに馴染みがないことでしょう。今はオススメのクラウド開発環境のおかげでUnixコマンドラインをみな同じように扱うことができ、Bashなどの標準的なシェル(Shell)を実行できます14。コマンドラインの基本的な仕組みは本当にシンプルです。ユーザーはコマンドを発行(issue)することで、実に様々な操作を実行できます。ディレクトリの作成ならmkdirコマンド、ファイルの移動やリネームはmvコマンド、ファイルのコピーならcpコマンド、ファイルシステム内でのディレクトリの移動はcdコマンド、という具合です。GUI(グラフィカルユーザーインターフェイス)しか使ったことのないユーザーにとっては、コマンドラインの黒い画面は何やら恐ろしげでとっつきが悪いように見えるかもしれませんが、見た目ほど当てにならないものはありません。コマンドラインはそれ自体が強力なツールであり、エンジニアにとってなくてはならない道具箱なのです15。なければ、どのエンジニアもコマンドラインを使っているはずがありません。経験豊富な開発者のデスクトップ画面を覗いてみれば、ほとんどどころか99%は、黒いターミナルがいくつも開いていて、その中で多数のコマンドラインシェルが忙しく実行されているはずです。Unixの基本的なコマンドラインについてもっと知りたい方は、『コマンドライン編』をぜひお読みください。自動で行われますが、それ以外の環境では自身で行う必要があります。1.5のコマンドを使った最初のアプリケーションの作成です。1.5のコマンドでは、Railsのバージョンを明示的に指定している点にご注目ください。1.2と同じバージョンのRailsで、最初のアプリケーションと同じファイル構造を作成できます。1.5では、デフォルトのbundleコマンドをスキップしています。1.3でインストールしたバージョンのbundleコマンドと互換性が保たれるようになります16。.環境構築が完了すると大量のファイルとディレクトリが作成されているのがわかります17。1.13)はこのように標準化されています。ファイルやディレクトリの構造がすべてのRailsアプリで標準化されているおかげで、他の開発者の書いたRailsのコードが読みやすくなります。これはWebフレームワークを導入する大きなメリットです。1.2をご覧ください。詳細は、本チュートリアル全体に渡って少しずつ説明していきます。アセットパイプラインの一部であるapp/assetsディレクトリについて5.2.1以降で詳しく説明します。Sheets)や画像などのファイル(アセットと呼びます)を置く場所、と覚えていただくだけで大丈夫です。BundlerCodespacesで学習を進める場合、1.3.2から学習できます。ここから1.3.1の内容は自動で行われるため実行する必要はありませんが、自動化されている内容を知りたい場合や、自分で環境構築を行う場合に参考になります。Railsアプリケーションを新規作成したら、次はBundlerを実行して、アプリケーションに必要なgemをインストールします。1.5)によって自動的に作成されますが、ここではGemfileに記載されているデフォルトのアプリケーションgemを少し変更します。そのために、エディタでGemfileを開きます(クラウドIDEの場合は、ファイルナビゲーター画面で矢印をクリックしてサンプルアプリのディレクトリを開き、Gemfileアイコンをダブルクリックします)。1.6のようになります(バージョン番号など細かな点は異なる可能性があります)。Gemfileの内容はRubyのコードですが、ここでは文法を気にする必要はありません。Rubyの詳細については第4章で説明します。1.15を参考にナビゲーターのリフレッシュアイコン18をクリックすると最新状態が表示されます。一般に、ファイルやディレクトリがうまく表示されていない場合は、このようにファイルツリーを再表示してみてください19。ファイルツリーを再表示するRailsは常に進化し続けるため、ここでGemfileの内容が違っていても大丈夫です。updateを実行すれば本書と同じバージョンになります。#(4.2)でコメントされています。これらの行では、よく使われているgemとBundlerの文法の例をコメント形式で紹介しています。この時点では、デフォルト以外のgemをインストールする必要はありません。gemコマンドで特定のバージョン番号を指定しない限り、Bundlerは自動的に最新バージョンのgemを取得してインストールします。Gemfileに次のような記述があるとします。"sprockets-rails"このgemのバージョンを指定する主な方法は2通りあります。これにより、Railsで使われるgemのバージョンを「ある程度」制御できます。1番目の方法は次のとおりです。gemがインストールされます(これはテストで使うgemです)。極端に言えば、バージョンが7.2であっても、3.26と同じかそれより上のバージョンならインストールされます。2番目の方法は次のとおりです。gemはインストールされません。5.0という記法ではバージョン5.1などの新しいマイナーバージョンがあればインストールされますが、バージョン6.0のようなメジャーバージョンアップはインストールされません20。gemのバージョン指定に~>を使う主な理由は、「一般には」マイナーアップデートの方が安全度が高いからです。経験上は、ちょっとしたマイナーアップデートでも問題が発生することがあります。このため、Railsチュートリアルでは基本的に事実上すべてのgemでバージョンを「ピンポイントで」指定し、がっちり固定してあります。ベテラン開発者にはGemfileで~>を使って指定し、最新のgemを使って進めることをオススメしていますが、チュートリアルが思い通りに動かなくなる可能性があることはご承知おきください21。1.7に示します22。最後の行はWindows環境特有の設定なので、ネイティブのWindows環境でRailsを実行する場合は、この行のコメントアウトを解除しておきましょう23。【電子書籍版を読んでいる方へ】本書のGemfileで固定した各gemのバージョンは公式リポジトリと一致している必要があります。現在の章に合わせてご参照ください。]前置きが長くなりましたが、いよいよBundlerを使ってhelloアプリに必要なgemsをインストールする準備が整いました。1.8では、本章の最後「デプロイする(1.5)」で必要となるコマンドも合わせて実行しています。installコマンドの実行には少し時間がかかるかもしれません。1.7の末尾の行のコメント解除をお忘れなく)。updateを実行してください」というようなメッセージが表示される場合があります。updateをまず実行しましょう。マニュアルどおりに行かない場合に慌てず落ち着いて対応することもスキルの1つです。したエラーメッセージにはその場で問題を解決する方法が含まれているものなので、よく読んでおきましょう。serverが実行されています。1.17)から実際のブラウザを開いて確認しましょう。実際のブラウザでの表示Chromeのタブなど、実際のブラウザでの表示方法は環境によって異なります。serverを実行してブラウザのアドレスバーにhttp://localhost:3000を貼り付けましょう。1.18ではなくRailsのデフォルトページが表示されます。serverコマンドを入力してください。サーバーをシャットダウンする演習Railsチュートリアルには多くの演習問題が含まれています。チュートリアルを学びながらこれらの演習を解くことを強くオススメします。本編と演習問題を分けて扱うため、原則として演習問題の解答はその後の本編コードリストで使わないようにしています。演習の解答を自分のコードに反映していくうちに、コードがチュートリアルから少しずつずれる可能性もあるということです。用意されている問題の多くはそう簡単に解けませんが、まだ最初なのでウォーミングアップとしてやさしい演習から始めることにしましょう。-vを実行して、使用しているRubyのバージョンを調べてみましょう。上と同じ要領で、RailsやBundlerのバージョンも調べてみましょう。1.13)を眺めてみると、app/というディレクトリがあり、その中に「models」「views」「controllers」という3つのサブディレクトリがあることに気付いた方もいると思います。ここにはRailsがMVC(model-view-controller)というアーキテクチャーパターンを採用していることが暗に示されています。MVCでは、アプリケーション内のデータ(ユーザー情報など)と、データを表示するコードを分離します。アプリケーションのグラフィカルユーザーインターフェイス(GUI)は多くの場合このようにして構成されます。ブラウザがRailsアプリと通信する際、一般的にWebサーバーにリクエスト(request)を送信し、これはリクエストを処理する役割を担っているRailsのコントローラ(controller)に渡されます。コントローラは、場合によってはすぐにビュー(view)を生成してHTMLをブラウザに送り返します。モデルを呼び出した後、コントローラは、ビューを描画(レンダリング)し、完成したWebページをHTMLとしてブラウザに返します。今はこの解説がまだ少し抽象的に思えるかもしれませんが、この章は後に何度も参照しますのでご安心ください。1.3.4では、MVCを扱うお試しアプリケーションをご覧に入れます。2.2.2では、このtoyアプリを使ってMVCの詳細を解説します。サンプルアプリケーションでは、MVCの3つの要素をすべて扱います。3.2でまずコントローラとビューを扱い、モデルについては6.1から扱い始める予定です。その後、これら3つの要素を協調動作させる方法を7.1.2で見ていきます。world!記念すべき最初のMVCフレームワークアプリケーションとして、先ほど作ったアプリにほんのちょっぴり変更を加えることにしましょう。1.18のページを置き換えてみましょう(コントローラのアクションについては2.2.2で詳しく解説します)。コントローラという名前から想像できるように、コントローラのアクションはコントローラ内で定義します。ここでは、Applicationという名前のコントローラの中にhelloという名前のアクションを作成することにします。実際、この時点ではコントローラはApplicationふたつあります。次のコマンドを実行すると、現在あるコントローラを確認できます。app/controllers/*_controller.rb新しいコントローラの作成は第2章で行います。1.9に、helloを定義したところを示します。world!」というテキストを表示しています。この時点ではRubyの文法については気にする必要はありません。第4章で詳しく解説します。endend表示したい文字列を返すアクションを定義したので、今度はデフォルトのページ(1.18)の代わりにこのアクションを使うようRailsに指示します。そのためには、Railsのルーター(router)を編集します。1.20はわかりやすくするためルーターを省略していますが、2.2.2で詳しく解説します)。URLにアクセスした場合のルーティング)を変更することにします。いうURLの末尾は「/」になっているので、ルートURLは単に「/」(スラッシュ)と簡略表記することもあります。本チュートリアルではrouteやroutingを「ルーティング」、rootを「ルート」と表記します。具体的なルーティングの文法は次のような形式になります。1.11に示したコードに変更します。mundo!」と表示されるようにしてみましょう。Railsでは「非ASCII文字」もサポートされています。「¡」文字をMacで入力するには、Optionキーを押しながら1キーを押します。この文字をコピーして自分のエディタに貼り付ける方が早いかもしれません。1.9のhelloアクションを参考にして、2つ目のアクションgoodbyeを追加しましょう。world!」というテキストを表示します。Gitによるバージョン管理シンプルとはいえ1つのRailsアプリが完成したので、このアプリケーションのソースコードをバージョン管理してみましょう。「バージョン管理を使わないアプリが動かない」ということはありませんが、ほとんどのWeb開発の現場においてバージョン管理は必須と言えるでしょう。バージョン管理のためのシステムを導入しておけば、コードの変更履歴を調べたり、うっかり削除してしまったファイルの復旧などが簡単に行えるようになります。バージョン管理システムにも様々な種類があります。Web開発ではリーナス・トーバルズがLinuxカーネルのために開発した分散バージョン管理システム「Git」が主流です。Gitはそれだけで大きなテーマなので、すべてを説明しようとすると1冊の本を軽く超えてしまいます。本セクションではバージョン管理システムの基本について説明していきますが、詳しく知りたい方は『Git/GitHub編』をご覧ください。GitはRailsのデフォルトに組み込まれているため、セットアップは不要です。開発が始まった直後から他の開発者とコードを共有したり(1.4.3)、本番環境のサーバーでアプリを動かせます。本章の最後「デプロイする(1.5)」では、実際にGitを使って本番環境のサーバーで動かしてみる予定です。GitのセットアップGitの基礎知識は『Git/GitHub編』で学べます。推奨環境であるクラウドIDE(1.2.1)でもGitが導入されているため、セットアップも不要です。gitコマンドを使える状態にあるので、早速Gitを使って様々なコマンドを実行してみましょう。branch.main.merge=refs/heads/mainプロジェクトの全ファイルはすでにリポジトリに追加されています。-A29を実行して、Git管理下にあるすべての変更ファイルをリポジトリに追加します。-Aただし、.gitignoreに書かれているパターンにマッチするファイルは追加されません。newコマンド実行時に自動生成され、Railsでよく使うパターンが追加されています。自分でパターンを追加しても構いません30。Gitで変更したファイルを追加するときは、最初ステージング(Staging)という一種のコミット待ち状態にします。安全のため、いきなり変更を保存(コミット)しないようになっているのです。statusコマンドを使います。commitコマンドを使います。repository...-mオプションを使うと、コミットの内容を説明するためのコミットメッセージをコマンドラインで直接記入できます。-mオプションを使わない場合はデフォルトに設定されているエディタが開き、そこでコミットメッセージを入力します(本チュートリアルでは常に-mオプションを使っていきます)。commitで保存したコミットは、あくまでローカルマシン(クラウドIDEなど)にしか保存されない点にご注意ください。ローカルマシンに保存したコミットを、GitHubに置かれているGitリポジトリに反映(プッシュ)する方法については1.4.4で解説します。logコマンドでこれまでのコミットメッセージの履歴を確認することもできます。repositoryコミットログがある程度長い場合は、qキーを押して終了します。logではlessコマンドをインターフェイスとして使っています。lessコマンドの詳細は、『コマンドライン編』の「使うならmoreよりless」で説明しています。Gitのメリット「ソースコードのバージョンをGitで管理する理由が分からない」という方もいるかもしれませんので、1つ例をご紹介します。仮に、あなたが重要なapp/controllers/ディレクトリを削除してしまったとしましょう(ホーマー・シンプソンがやらかすような感じで)。詳しくは『コマンドライン編』の「ディレクトリのリネーム/コピー/削除を行う」で解説しますが、ここで使っている-rfオプションは、「recursive」(ディレクトリ内にあるすべてのファイルとサブディレクトリを削除する)と、「force」(削除して良いかどうかの確認・警告をせずに削除する)という意味になります。現在の状態を確認してみましょう。-a")ファイルがいくつか削除されましたが、この変更はまだステージングに追加されておらず、コミットもされていません。restoreコマンド(と、対象ディレクトリまたはファイル名)を使えば、直前にコミットした状態まで簡単に戻すことができます31。concerns/うっかり削除してしまったディレクトリやファイルが、無事に復旧できましたね。これがGitを使うメリットの1つです。GitHubGitを使ったソースコードのバージョン管理ができるようになったので、今度はGitHubにソースコードをアップロードしてみましょう。GitHubはGitに特化したソフトウェア開発のプラットフォームです32。ローカルマシンにあるGitリポジトリを、わざわざGitHubにプッシュする主な理由は2つあります。1つ目は、ソースコードとそのすべての変更履歴(コミット記録)の完全なバックアップを作成するためです。2つ目は、他の開発者との共同作業をより簡単に行うためです。pushを実行するだけです33。ブラウザでGitHubのhello_appリポジトリページを表示すると、コミットが反映されています34。