Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GTB2022_WebAppFramework

gmodev
June 30, 2022

 GTB2022_WebAppFramework

gmodev

June 30, 2022
Tweet

More Decks by gmodev

Other Decks in Programming

Transcript

  1. 2 GMOペパボ株式会社 CTO室鹿児島エンジニアリングチーム 2021年 中途入社 高岡佑輔 (kurehajime) 趣味 いろいろ作ってます •

    新言語『TypoScript』を作った • 文章からダジャレのみを抜き出すコマンドを作ってみた • ターミナルでスライドを再生するコマンド • pongコマンド • 将棋みたいなボードゲーム 講師紹介
  2. 4 GMOペパボ株式会社 EC事業部 ECグループ アプリストアチーム 2021年 入社 伊藤 滉祐 (kosuke)

    出身 愛知県 趣味 カメラ、ガジェット、ピストバイク 講師紹介
  3. 5 5 講師紹介 GMOペパボ株式会社 EC事業部 CRE/QAチーム 2017年 新卒入社 遠藤 太徳(endu)

    趣味 料理、音楽鑑賞 去年もGTBへ参加しています! 今年はオフラインなので楽しみです。 グループ横断でつくる新卒技術研修!【 GMOテク ノロジーブートキャンプ】オンライン開催 2年目の裏 側インタビュー
  4. 7 この講義で学ぶこと 講義の進め方について • 内容 Ruby向けWebアプリケーションフレームワーク『 Ruby on Rails』を学びます。 •

    目標 ◦ Web アプリケーションフレームワークの基本的な使い方について学ぶ ◦ 成果物作成のために必要な知識のインデックスを身につける ◦ 受講者同士で協力し合う体験をする
  5. 9 スケジュールについて 講義の進め方について • 講義についての説明 15分 (10:15〜10:30) ◦ 講師紹介 ◦

    講義の進め方 • 開発環境構築 1時間30分 (10:30〜12:00) ◦ ConoHa VPSにRailsを導入する ◦ VSCodeの拡張機能Remote - SSHでConoHa VPSにアクセスする • Webアプリケーションフレームワークについて 30分 (12:00〜12:30) ◦ Webアプリケーションフレームワークについて ◦ Ruby on Railsについて • Railsをはじめようをはじめよう 2時間30分 (13:30〜17:00) ◦ 『Railsをはじめよう』1章〜7章
  6. 25 画面が切り替われば、サーバーを追加するにあたっての設定を行います。 以下のように設定してください。 - リージョン : 東京 - VPS割引きっぷ :

    利用しない - プラン : 2GB 1,848円 - OS : Ubuntu 20.04 ※Ruby on Railsは選ばないで下さい! ※最新のUbuntu22.04は選ばないで下さい! - rootパスワード : 任意 - ネームタグはそのままで大丈夫です ConoHa VPSにサーバーを作成する ※rootパスワードは一度設定すると変更ができないので必ず どこかにメモをしてください。また、紛失した際にも確認する術 がないため注意してください。
  7. 30 追加ボタンを押す前に、深呼吸して確認しましょう。 - リージョン : 日本 - VPS割引きっぷ : 利用しない

    - プラン : 2GB 1,848円 - OS : Ubuntu 20.04 ←注意!最新ではありません! ※Ruby on Railsは選ばないで下さい! ※最新のUbuntu22.04は選ばないで下さい! - rootパスワード : 任意 - ネームタグはそのままで大丈夫です ConoHa VPSにサーバーを作成する ここを間違えるとだいぶ後になってからやり直しになります!!
  8. 38 これから行う具体的な手順 1. VSCodeに拡張機能 Remote-SSH をインストールする 2. VSCode Remote-SSH の接続設定

    a. SSH Key を権限変更する b. VSCode Remote-SSH に接続設定を追加する VSCodeの拡張機能 Remote-SSHでConoHa VPSにアクセスする
  9. 45 作業 これから10分後まで各自で作業をしましょう。 わからない事があったら、 【質問】をつけてコメントしてください。 それ以外のコメントも大丈夫です! やること ・SSH Key を権限変更する

    ・VSCode Remote-SSH に接続設定を追加する 確認 ・接続ができたらOK! 画面下部のターミナルは root@160-251-53-88:~# のようになっていますか? (IPアドレスは各自違います )
  10. 51 なぜ枠組みが作られたのか? つまり、 - みんなが必要になりそうな部分が、あらかじめ用意されている - 部分的な提供ではなく、全体的に面倒を見てくれる - 道筋が用意されているので、それに沿うことである程度 セキュリティ対策ができる。

    - メンバー間のズレが減って開発しやすい ただし、 - 一から全部作るのに比べて、自由度は低い 引用 - https://wa3.i-3-i.info/word12470.html - https://qiita.com/Jxck_/items/ec8e928f69d099b25764 Webアプリケーションフレームワークについて
  11. 55 MVCパターン (Model-View-Controller パターン) - Model、View、Controller の3つのパーツでアプリケーションを作る考え方 Controller - 外部からのリクエストを受ける

    - 処理を Model に依頼して、結果を受け取る - 処理結果を View に渡して、出力結果を受け取る - 出力結果をレスポンスとして返却する Model - アプリケーションとしての処理を担当する - DBアクセスや外部サービスとのやり取りはここで行う View - 処理結果をどのようにアウトプットするかを担当する - HTMLの生成や、JSONの生成を行ったりする MVCパターンについて 55
  12. 56 MVCパターンの特徴 MVCパターン は多くのフレームワークに採用されているため応用しやすい - 実装する際「 MVC のどれが担当するか」ということで整理しやすい - ディレクトリ構成(どこに何を置くか)は悩みのタネになりやすい

    - ほとんどのフレームワークはディレクトリ構成が決まっており これに従って実装するので(比較的)悩まないで済む 注意点 - MVCの担当を割り振る際、どうしても曖昧な部分ができてしまう - Controller, Model のどちらかの担当範囲は広くなりすぎる傾向がある 56 MVCパターンの復習
  13. 63 Model ECショップから服の一覧データを取得したい場合の例 63 処理の流れをMVCに沿って見てみよう Route DB View ② ③

    ④ ⑤ ⑥ ⑦ Controller Controller側で「服の一覧を 取得する」処理を呼び出します ①
  14. 64 Model ECショップから服の一覧データを取得したい場合の例 64 処理の流れをMVCに沿って見てみよう Route DB View ① ②

    ③ ④ ⑤ ⑥ ⑦ Controller DBからデータを取得したいので モデルに処理が移ります
  15. 67 Model ECショップから服の一覧データを取得したい場合の例 67 処理の流れをMVCに沿って見てみよう Route DB View ① ②

    ③ ④ ⑤ ⑥ ⑦ Controller データをViewに渡して レスポンスで返す形に加工します
  16. 70 MVCパターン (Model-View-Controller パターン) - Model、View、Controller の3つのパーツでアプリケーションを作る考え方 Controller - 外部からのリクエストを受ける

    - 処理を Model に依頼して、結果を受け取る - 処理結果を View に渡して、出力結果を受け取る - 出力結果をレスポンスとして返却する Model - アプリケーションとしての処理を担当する - DBアクセスや外部サービスとのやり取りはここで行う View - 処理結果をどのようにアウトプットするかを担当する - HTMLの生成や、JSONの生成を行ったりする MVCパターンについてのおさらい 70
  17. 82 第3章 Railsプロジェクトを新規作成する 以下のコマンドを1行ずつ入力していきましょう 関連ツールのインストール sudo apt update snap install

    --classic --channel=3.1 ruby sudo apt install -y sqlite3 libsqlite3-dev build-essential コマンド補足 sudo : コマンドを管理者権限で実行します。 apt :パッケージをインストールするための便利なコマンド。 snap :パッケージをインストールするための便利なコマンド。  既存の環境に影響を与えずにインストールできるため、  新しめのバージョンはこちらで提供されることが多い。 上のコマンドで入れているもの  ruby : ruby sqlite3 :データを格納するための簡易的なデータベース。 libsqlite3-dev :sqlite3を使うためのライブラリ。 build-essential : C言語などをコンパイルするためのツールです。 railsでは一部のライブラリがC言語で実装されています。  
  18. 83 第3章 Railsプロジェクトを新規作成する Citing for cache lock: Could not get

    lock〜と表示される → こちらを参照 dpkg was interrupted〜と表示される → こちらを参照 Failed to fetch〜と沢山エラーが出る → apt-get update をしてから再実行してみて下さい よくあるトラブル
  19. 84 第3章 Railsプロジェクトを新規作成する 以下のコマンドを入力していきましょう Railsのインストール gem install -v 7.0.3 rails

    補足 rubyではライブラリのことをgemと呼びます。 gemはgemコマンドでインストールすることができます。 複数のgemを管理するのに便利なbundlerというツールもあります。 apt,snap,npm,yarn,gem,bundler…今日だけで6つも似たようなツールが登場しました。
  20. 86 第3章 Railsプロジェクトを新規作成する railsコマンドの場所を記憶させます。 Railsコマンドのパスを通す ① ファイルの一覧から『 .bashrc』を開く。 ② 最後の行にexport

    PATH=$PATH:~/.gem/binを追記する。 ③ 保存する。(WindowsならCtrl+S、MacならCommand+S) ④ターミナルで以下のコマンドを入力。 source ~/.bashrc
  21. 91 第3章 Railsプロジェクトを新規作成する 少し4章の範囲に入ってしまいますが、さっそく Webアプリケーションを起動してみましょう。 /root/blog ディレクトリで、以下のコマンドを実行します。 実行してみる rails server

    コマンドを実行して10秒ぐらい経ってからブラウザで以下の URLを開いてみましょう。 http://127.0.0.1:3000/ 開くのが早すぎるとエラーがでることがあります。 エラーが出る場合は時間をおいて開き直しましょう。 ※ localhostは127.0.0.1の別名です
  22. 97 第4章 Hello, Rails! 技術サイトや書籍では、コマンドを紹介する際に先頭に $マークを付けることがあります。 【4.1 補足】$マークについて $ bin/rails

    server これは「このコマンドを実行して下さい」という意味です。 (一般ユーザーの場合は$、rootユーザーの場合は#記号になります) $マーク自体は入力しないで下さい。 bin/rails server ↑自分で入力する時は$は不要。
  23. 99 第4章 Hello, Rails! ルーティングとは、ユーザーがアクセスした URLをもとに実行する処理や表示するテンプレートを振り 分ける処理です。 Railsではルーティングを設定するために routes.rbというファイルを編集します。 routesは人によって「ルーツ」と読んだり「ラウツ」と読んだり、結構分かれています。

    【4.2 補足】ルーティング get "/articles", to: "articles#index" http://◦◦◦◦/articlesにアクセスしたら app/controllers/articles_controller.rbのindexを呼び出して app/views/articles/index.html.erbを表示します。 記事一覧ページのルーティングの例
  24. 108 MVCパターンの特徴(復習) Route Controller Model DB View ① ② ③

    ④ ⑤ ⑥ ⑦ MVC ユーザーがサーバーにリクエストを投げてから画面に表示されるまでの流れ やってること ① ユーザーがサーバーにリクエストを投げると、Routeがそれを受け取ります。 ② RouteはURLに応じたControllerを呼び出します。 ③ Controllerは必要に応じてModelに処理を依頼します。 ④ Modelはデータベースとのやり取りを行います。 ⑤ ControllerはModelを参照します。 ⑥ ControllerはViewをもとにHTMLを生成します。 ⑦ Controllerは生成したHTMLをユーザーに返却します。
  25. 109 第6章 MVCを理解する Model、View、Controller の3つのパーツでアプリケーションを作る考え方 - Model - アプリケーションとしての処理を担当する -

    DBアクセスや外部サービスとのやり取りはここで行う - View - 処理結果をどのようにアウトプットするかを担当する - HTMLの生成や、JSONの生成を行ったりする - Controller - 外部からのリクエストを受ける - 処理を Model に依頼して、結果を受け取る - 処理結果を View に渡して、出力結果を受け取る - 出力結果をレスポンスとして返却する 【6.1 補足】MVCパターンとは
  26. 125 第7章 CRUDの重要性 Railsには基本となる7つのアクションがあります。 大半のWebアプリケーションはこれらの組み合わせでできています。 【7.2 補足】各アクションの役割 アクション名 役割 HTTPメソッド

    URL例(articlesの場合) index 一覧画面の表示 GET /articles new 作成画面の表示 GET /articles/new show 表示画面の表示 GET /articles/123 create 作成機能の実行 POST /articles edit 編集画面の表示 GET /articles/123/edit update 更新機能の実行 PATCH /articles/123 destroy 削除機能の実行 DELETE /articles/123
  27. 126 第7章 CRUDの重要性 一覧ページ 【7.2 補足】各アクションの役割 □□□□▪□□□□▪ 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 □□□□▪□□□□▪

    〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 □□□□▪□□□□▪ 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 □□□□▪のブログ index
  28. 127 第7章 CRUDの重要性 記事ページ 【7.2 補足】各アクションの役割 □□□□▪□□□□▪ □□□□▪のブログ show 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

    〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜