Prompt

Github actionsは、
何のための、何ができる、何?
そしてー、それはどうやって使うの?


お!今度はGitHub Actionsについてだね! プログラミングの知識もあって、哲学的な思考もする君にぴったりな、自動化と効率化のツールだよ! INFPの君なら、ルーティン作業を自動化して、もっとクリエイティブな作業に時間を割きたいって思うんじゃないかな?

じゃあ、GitHub Actionsが**「何のための、何ができる、何?」、そして「どうやって使うの?」** を、楽しく分かりやすく解説していくね!


GitHub Actionsって、何のための、何ができる、何? 🤖

一言で言うと、GitHub Actionsは**「GitHub上でコード開発の様々な自動化を行うためのCI/CD(継続的インテグレーション/継続的デリバリー)プラットフォーム」**だよ!

もっと砕けた言い方をするとね、

  • 何のための?

    • 「めんどくさい作業を代わりにやってくれる、賢いお手伝いさん」 のため!

    • 開発のルーティン作業(テスト、ビルド、デプロイなど)を自動化して、開発者がもっとコードを書くことや新しいアイデアを考えることに集中できるようにするためのものだよ。

    • 品質を保ちながら、早く、安全にソフトウェアをリリースできるようにするためにも使われるんだ。

  • 何ができる?

    • 「GitHubのリポジトリで何かイベントが起きたら、指定した処理を自動的に実行する」 ことができるんだ!

    • CI (継続的インテグレーション):

      • コードの自動テスト: コードをプッシュするたびに、自動的にテストを実行して、バグがないかチェックしてくれる。

      • コードの静的解析/品質チェック: コードの書き方に問題がないか、セキュリティ上の脆弱性がないかなどを自動で解析してくれる。

      • 自動ビルド: JavaScriptやTypeScriptのコードを本番用にバンドルしたり、コンパイルしたりする作業を自動化する。

    • CD (継続的デリバリー/デプロイ):

      • 自動デプロイ: テストが通ったコードを、本番環境やステージング環境に自動でデプロイ(配置)してくれる。

      • リリース自動化: バージョンタグを付けたり、リリースノートを生成したりといったリリース作業を自動化する。

    • その他、何でも!:

      • 特定のラベルが付いたIssueが作成されたら、自動でコメントを投稿する。

      • 新しいプルリクエストが開かれたら、レビュアーを自動でアサインする。

      • 定期的にWebサイトの死活監視を行う。

      • SlackやDiscordに通知を送る。

      • 君が想像できるほとんどの「何かイベントが起きたら、何かする」っていう処理を自動化できるんだ!

  • 何?

    • GitHubに統合された**サービス(機能)**だよ! 他のCI/CDツール(Jenkins, CircleCI, GitLab CIなど)と同じようなことができるけど、GitHubと密接に連携しているのが最大の特徴だね。

どうやって使うの? 🛠️

GitHub Actionsを使うのは、主にYAMLファイルという設定ファイルを書くことから始まるよ。

  1. ワークフロー(Workflow)の作成

    • GitHub Actionsの自動化の単位は**「ワークフロー」**と呼ぶんだ。

    • リポジトリのルートディレクトリに、.github/workflows/ というディレクトリを作成する。

    • その中に、例えば main.yml といった名前でYAMLファイルを置いて、ワークフローの内容を定義するよ。

    YAML

    # .github/workflows/main.yml
     
    name: My First CI Workflow # ワークフローの名前
     
    on:
      push: # このワークフローが実行されるトリガー
        branches:
          - main # mainブランチにpushされたら実行
     
    jobs: # 実行するジョブの定義
      build-and-test: # ジョブの名前
        runs-on: ubuntu-latest # このジョブが実行されるOS (仮想環境)
     
        steps: # ジョブ内で実行するステップ(処理のまとまり)
          - name: コードをチェックアウト # ステップの名前
            uses: actions/checkout@v4 # GitHubが提供するアクション(既存の処理)を使う
     
          - name: Node.jsをセットアップ
            uses: actions/setup-node@v4 # Node.js環境をセットアップするアクション
            with:
              node-version: '20' # Node.jsのバージョンを指定
     
          - name: 依存関係をインストール
            run: npm install # コマンドを実行
     
          - name: テストを実行
            run: npm test # コマンドを実行
  2. 主要な構成要素

    • name: ワークフローの名前。GitHubのActionsタブに表示されるよ。

    • on: トリガーを定義する。

      • push: 特定のブランチにコードがプッシュされた時。

      • pull_request: プルリクエストが作成/更新された時。

      • workflow_dispatch: 手動でワークフローを実行できるトリガー。

      • schedule: 定期的に実行する(Cron形式で指定)。

      • その他、Issueの作成/更新、Starの付与など、GitHub上のあらゆるイベントをトリガーにできる!

    • jobs: ワークフロー内で実行される一連の処理(ジョブ)を定義する。

      • 複数のジョブを定義でき、互いに依存関係を持たせることもできるよ(例: jobAが成功したらjobBを実行)。
    • runs-on: ジョブが実行される環境(仮想マシン)を指定する。ubuntu-latest(Linux)、windows-latestmacos-latestなどがあるよ。

    • steps: ジョブの中で順番に実行される個々のタスク。

      • name: ステップの名前。

      • uses: アクション (Action) を使う場合。GitHubが提供する公式アクションや、コミュニティが作ったアクション(例: actions/checkout@v4はリポジトリのコードを仮想環境にコピーするアクション)を利用できる。

      • run: シェルコマンド(例: npm install, php composer install)を実行する場合。

  3. GitHubリポジトリでの設定

    • YAMLファイルをコミットしてプッシュすると、GitHubのリポジトリにある「Actions」タブに表示されるよ。

    • トリガーイベントが発生すると、自動的にワークフローが実行され、実行状況やログをリアルタイムで確認できるんだ。

INFPの君へ

GitHub Actionsって、まるで**「自動化の魔法の杖」みたいだと思わない? 繰り返し発生する単調な作業から解放されて、本当に集中したいクリエイティブなコーディングや設計、哲学的な思考**に、もっと時間を使えるようになるんだ。

プログラミングを学んでる君なら、自分のプロジェクトにCI/CDを導入することで、コードの品質を保ちながら、もっと早く、もっと安心して新しい機能を追加できるようになるよ。ぜひ、触ってみて、この便利さを体感してみてね! わからなかったら、またいつでも聞いてくれ!