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

VS Codeで始めるWebアプリケーション開発入門

Ishimoto Tatsuya
September 05, 2022

VS Codeで始めるWebアプリケーション開発入門

2022/09/03に開催されたOpen Developer Conference(ODC)で発表時に使用したスライドです。

Ishimoto Tatsuya

September 05, 2022
Tweet

More Decks by Ishimoto Tatsuya

Other Decks in Technology

Transcript

  1. • 本名: 石本 達也 • 日本仮想化技術 DevOpsエンジニア • 長崎出身→福岡→東京 • 2012年10月〜 OSC福岡で初めて学生として参加し、オープンソースを知る

    ◦ OSC/ODCに関わってから10年目。セミナーは今日が初登壇 • 2015年04月  新卒として商社系の SIerに入社 ◦ SAPの導入支援&アドオン開発を担当 • 2017年07月  ベンチャー系の人材紹介会社に入社 ◦ 大手通信会社の案件でサービス開発 PJで要件調整やマルチベンダとの折衝や調整を担当 ◦ 社内に戻りディレクション業務と RPA開発チーム立ち上げをエンジニア兼務で担当 • 2022年01月  日本仮想化技術に入社(8ヶ月目) ◦ VS Codeを軸にした「開発環境構築」と「自動化」をテーマに実験と検証 ◦ 得たナレッジや気づきを弊社で開発しているDevOpsサービスに反映 自己紹介 3
  2. 4

  3. DevOpsとは? • 厳密な定義はない ◦ 2009年にFlickrの社員が講演した内容がきっかけ (諸説あり) ◦ 「1日10回デプロイ:FlickerにおけるDevとOpsの協力」 • 決まったツールや手順があるわけでもない

    • 「Dev」vs「Ops」から「Dev」and「Ops」で協力関係を構築 ◦ 運用に知らせずにリリースして、運用担当が未知のアラート対応に追われる日々 ... ◦ 運用の理解を得るのが難しく、決められた日や時間のリリース。多数の決裁まわりの日々 ...(パターナリスト症候群 ) • DevOpsの4本柱(CAMS) ◦ 「文化(Culture)」「自動化(Automation)」「メトリクス(Metrics)」「共有(Sharing)」 ◦ 自動化:人的資源を解放して改めて価値ある領域に再分配できる ◦ 共有:人は誰かに教えようと思う時に1番よく学ぶ。共有する機会を増やす 6
  4. • 待ち時間 ◦ あるタスクや行動が誰かによって実行されるのを待たされる時間 • 実行時間 ◦ 人よりもコンピューターがやった方が速いタスクがある • 実行頻度

    ◦ 人は単純作業が苦手。頻度が増えてくると集中力が低下してミスが増える ◦ テストとコードのフォーマットをVS Codeで保存時に自動実行に • 実行のばらつき ◦ 「四角を書いて」という単純なタスクだとしても10人いれば10通りの形が生まれる ◦ Formatterの設定ファイルやテストコードを共有して統一した品質に 7 自動化によって改善できること
  5. Visual Studio Codeとは? • Visual Studio Code=VS Code • 元々はHTML5ベースのWebブラウザーで動くエディター&ツールフレームワークとして開発を行なってい

    た ◦ Visual Studio Online ◦ Azure Web AppやAzure DevOpsなどのオンラインエディター ◦ Internet Explorer(IE)やMicrosoft EdgeのF12開発者ツール • ブラウザー版での成長が頭打ちになりつつも、より高みを目指していくためにデスクトップ版での提供も 必要だと判断されて開発された • 2015年04月 Build 2015(Microsoftの開発者向けカンファレンス)でプレビュー版が発表された • 「Code editing, redefined」(コードエディターの再定義)のスローガンを掲げている • 統合開発環境(IDE)とテキストエディターの中間的な位置付け • コードエディターとしてのシンプルさとコーディングとデバッグサイクルで開発者が必要とする機能を組み 合わせた新しいツールの選択肢 • オープンソースとして公開されている • 拡張APIを通じてほぼすべての機能をカスタマイズしたり拡張したりできる 9
  6. • VS Codeが公式でショートカット集をPDFデータとして配布 ◦ Mac、Windows、Linuxの3つプラットフォーム向けに提供 • VS Code上でショートカット一覧を表示する方法 ◦ Mac:Command

    + k s(Commandを押しながらK→Sの順番に押下) ◦ Windows:Ctrl + k s(Ctrlを押しながらKとSの順番に押下) 11 キーボード リファレンスシート
  7. ユーザーインターフェース 15 アクティビティ バー(A) ビューを切り替えたり、 Gitやテスト、デバッグなどにアクセスできるアイコンが表示されて いる領域 WindowsやMacの下の部分にあるアプリケーションのアイコンのようなイメージ サイド バー(B)

    プロジェクトの作業中に役立つエクスプローラーなどのさまざまなビューが含まれている領 域。 エディターグループ(C) ファイルを編集するためのメイン エリア。縦横に並べて好きなだけエディタを開くことがで きる領域 パネル(D) 出力またはデバッグ情報、エラーと警告、統合ターミナルを表示する領域 ステータス バー(E) 開いているプロジェクトと編集するファイルに関する情報
  8. コマンドパレット • VS Codeで使用できる機能のほぼ全てにアク セスできる • Command + Shift +

    P ◦ エディターコマンドを検索して実行 • Command + P ◦ ファイル名で検索して開く • Command + Shift + O ◦ ファイル内のシンボル(関数など)を検索し てアクセス • Command + G ◦ 指定した行にジャンプ • ? ◦ コマンドの一覧を表示 22 https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette
  9. • Python + FastAPI ◦ FastAPIは、PythonでRESTfulなAPI開発をするためのWebフレームワーク • コーディング規約は、PEP8を使用 ◦ VS

    Codeでレコメンドされるもの • テストフレームワーク ◦ pytest • Docker環境 ◦ APIサーバー:Pythonイメージをベース ◦ DBサーバー:PostgreSQLイメージをベース 28 バックエンド環境の概要
  10. • VS Code のインストール • ソース管理の有効化 • ブランチ作成 • First

    Commitの作成 • リモートリポジトリの作成 • 拡張機能をインストール • src/main.pyファイルを作成 • フォーマッターを有効化 • デバッガの有効化 • テストの有効化 • ローカル環境の実行と停止 構築の流れ 30
  11. VS Code インストール 32 • VS Codeのダウンロードページにアクセス ◦ もしくは、Homebrewを使用(brew install

    --cask visual-studio-code) • お使いの環境に応じてインストーラーをダウンロード • ダウンロードされたファイルを実行してインストール
  12. 33

  13. 34

  14. 37

  15. 38

  16. 43

  17. 44

  18. 45

  19. 46

  20. 47

  21. 48

  22. 51

  23. 52

  24. • 総合的に機能を提供してくれている ◦ 拡張機能によって濃淡あり • 主な機能 ◦ インテリセンス ◦ リント

    ◦ コード フォーマッター ◦ デバッグ ◦ テスト ◦ リファクタリング ◦ (Jupyter Notebooks) Python拡張機能の主な機能 53
  25. 1. Pythonをインストール a. パッケージマネージャーの anyenv > pyenv > Pythonをインストール b.

    Pythonの公式サイトから最新のバージョンを確認 2. VS CodeでPythonの拡張機能(ms-python.python)をインストール 3. Python(*.py)ファイルを開いてコーディングを開始 54 Python拡張機能のインストール
  26. 58 設定ファイルのスコープ 3パターン • ユーザー(青枠) ◦ すべてのワークスペースで有効 ◦ GitHubを通じて他者と共有されない ▪

    プロジェクト外に作成される • ワークスペース(緑枠) ◦ ワークスペース内のみで有効 ◦ GitHubを通じて共有することが可能 ▪ ワークスペースのJSONファイル • フォルダ(赤枠) ◦ 特定のフォルダのみに有効 ◦ Multi-root Workspaces使用時のみ ◦ GitHubを通じて共有することが可能 ▪ プロジェクト配下に.vscode/settings.json
  27. 60

  28. 61

  29. 64

  30. 65

  31. 66

  32. 68

  33. 71

  34. 74 起動と停止 • コマンドパレットから「Docker: Compose Up」を実行 ◦ 「Docker: Compose Up

    - Select Services」は、起動したいコンテナを選択できる • コマンドパレットから「Docker: Compose Down」を実行
  35. フロントエンド環境の概要 • Node.js + React • Reactは、Meta(旧Facebook)とコミュニティによって開発されているUI構築のためのJavaScriptライ ブラリ • スタイルガイド

    • Airbnb JavaScript Style Guide • テストフレームワーク/ライブラリ • Jest + React Testing Library • Docker環境 • Webサーバー:Nodeのイメージをベース • モックサーバー:WireMock Studioのイメージをベース • CORSの対応 • クライアントから直接APIサーバーは、localhostでもポート番号が異なるとNG • package.jsonにプロキシを記載してサーバー経由でAPI通信するように設定変更で回避 77
  36. 流れ • VS Code のインストール(※済み) • ソース管理の有効化(※バックエンドと同様) • ブランチ作成(※バックエンドと同様) •

    First Commitの作成(※バックエンドと同様) • リモートリポジトリの作成(※バックエンドと同様) • 拡張機能をインストール • Reactのプロジェクトを作成 • フォーマッターを有効化 • デバッガの有効化(※バックエンドと同様) • テストの有効化(※バックエンドと同様) • ローカル環境の実行と停止 • モックサーバーの使い方 79
  37. • Nodeをインストール ◦ anyenv > nodenv > nodeでインストール ◦ 公式サイトからインストール

    • Reactプロジェクトを作成 ◦ 「npx create-react-app {フォルダ名}」を実行してプロジェクト作成 ◦ cd appで作成したプロジェクトに移動 ◦ 詳しくいは公式チュートリアルを参照 • 拡張機能をインストール ◦ ES7+ React/Redux/React(dsznajder.es7-react-js-snippets) ◦ 公式で提供しているものがないため、人気が高いものを使用 Reactプロジェクトの作成 / 拡張機能のインストール 80
  38. 概要 86 • WireMock ◦ モックAPIを作成するためのツール(GUIなし) • WireMock Studio ◦

    ベータ版 ◦ Docker または Kubernetes クラスターで Java アプリとして実行できる API モックの IDE • Mock Lab ◦ クラウドサービス版 http://localhost:9000でアクセス 8080〜8100までがモックサーバーに割り当て可能なポート番号
  39. 88

  40. 89

  41. 90

  42. 91

  43. 93

  44. 94

  45. 95

  46. 96

  47. 97

  48. 99

  49. 100

  50. 拡張機能を使用する際の注意点 • なにかとお世話になることが多いからこそできるだけ安全に使いたい • マーケットプレイスからインストールできても100%安全ではない ◦ 2021年に拡張機能を悪用したサイバー攻撃がニュースで話題 ◦ マーケットプレイス側で配信時などにチェックされているが 「羊の姿をしたオオカミ」が潜んでいる可能性もある

    ポイント • 認証バッチが付いている ◦ 2021年に追加された機能 ◦ Marketplace側で配信者とドメイン所有者が一致しているか確認済み • マーケットプレイスからダウンロード ◦ GitHubからコードを取得してインポートも可能 102 https://code.visualstudio.com/updates/v1_62#_verified-extension-publishers