「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>GitHub Foundations]]
--[[GitHub Foundations - 学習ガイドPDF]]
--[[GitHub Foundations トレーニング]]
--GitHub Foundaitons ハンズオン
--[[GitHub Foundaitons MS Learn Collections]]
--[[LinkedIn Prepare for the GitHub Foundations Certification]]
--[[GitHub Foundations模擬試験]]

* 目次 [#x06dfbb3]
#contents

*概要 [#ee908096]
https://github.com/alterbooth/hol-github-foundations/tree/main

*詳細 [#v1b6ac0c]

**共通項 [#iab1fd74]

***Settings [#ae816fa5]
エンティティのセッティングを定義できる。

-個人Accountの設定
-Repositoryの設定
-Organizationの設定
-Enterpriseの設定

***Template [#b044c142]
エンティティのテンプレートを定義できる。

-以下のテンプレートがある。
--Repository
--Issue
--Pull Request
--GitHub ActionsのWorkflow

-以下の定義方法がある。

--簡単なもの
---Markdownの形式でテンプレートを作成(*.md)
---フォーマット(シンプルなガイドラインや記述例)を提供する目的。

--複雑なもの
---YAMLで記述でテンプレートを作成(*.yml)
---マークアップなので複雑な定義が可能。

-以下の配置場所がある。

--.github -> root -> docs ディレクトリなどに配置。

--複数ファイルを配置する場合の場所(フォルダ名)は、~
エンティティや[[ドキュメントファイル>#hf1ada4b]]毎に決まっている。

***エンティティ一覧 [#u60c6d67]
-エンティティによっては、ボードや一覧がある。
-一覧にはフィルタリング用のフィルターが存在する。
-ボードや一覧があるエンティティはピン留めで一番上に来る。
--Repository、Issue、Discussion、Project
--Pull Requestにはピン留めはないのでラベルを使う。

**ドメイン1: GitとGitHub [#j4cd4ec7]

***Git and GitHub Basics [#qdab83df]
-バージョン管理を説明する
-分散バージョン管理を定義する
-Git、GitHubの差異を含め説明する
-GitHubリポジトリを説明する
-コミットを説明する
-ブランチを説明する
-Git用語でリモートを定義する
-[[GitHubフローを説明する>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Github%20-%20%E3%83%95%E3%83%AD%E3%83%BC%E9%96%A2%E9%80%A3]]

-機能階層~
Gitを修飾する各種機能が実装されている。

--コード管理・コラボレーション
---Gitリポジトリ
---Issue
---Pull requests
---Projects
---Discussions

--運用支援・開発環境 
---Actions
---Codespaces
---Copilot

--セキュリティ
---Dependabot
---Code scanning
---Secret scanning

--管理
---Organization
---Enterprise

-参考
--https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Git
--https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Github

***GitHub Entities [#eeba850b]
-GitHub accounts~
異なるGitHubアカウント(個人、Organization、Enterprise)

--Personal accounts
--Organization accounts
--Enterprise accounts

-GitHubの料金プラン
--個人アカウント向けのGitHub製品(Free、Pro)
--Organizationアカウント向けのGitHub製品(Free、Team)

|アカウント|Personal|Organization|Enterprise|h
|無料プラン製品|Free|Free||
|有料プラン製品|Pro|Team|Enterprise|

-GitHub Enterpriseの異なるデプロイメントオプション

-ユーザープロフィールの機能~
メタデータ、実績、プロフィールREADME、リポジトリ、ピン留めされたリポジトリ、スターなど

***GitHub Markdown [#w9333529]
-Markdownと、その使用方法
-IssueおよびPull requestコメントなどで使用
-基本的なフォーマット構文(見出し、リンク、タスクリスト、コメントなど)
-テキストフォーマットツールバーを使用する
-スラッシュコマンドでフォーマット構文を見つける。

***GitHub Desktop [#r7d40f0b]
-GitHub Desktopとgithub.comの違い
--github.com:Gitホスティング・サービス
--GitHub Desktop:クライアント・ツール

-GitHub Desktopの利用可能な機能
--GitHub Desktopで開発ワークフローを簡素化
--クローンしたリポジトリで全てのgit操作を実行

***GitHub Mobile [#o7c4da69]
GitHub Mobileの利用可能な機能
-素早くIssueやプルリクエストのダッシュボードにアクセス
-外出先でプルリクエストを承認
-モバイル最適化デザインでGitHubを閲覧し共同作業できる。
-GitHubの様々なエレメント的なものを検索
-GitHubの様々な通知を管理する。

***ハンズオン: GitとGitHub操作 [#d7d9b5fe]
https://github.com/alterbooth/hol-github-foundations/tree/main/domain1

-リポジトリの作成
-リポジトリをローカルにGitクローン
-(生のGitやVSCodeやCodespacesのターミナルを使うなど)
-Git操作、作業用ブランチ作成、README.mdを編集(gitのコマンドでadd commit push)
-GitHub操作、README.mdを編集、markdownを色々書いて、コミットする。
-Git操作、ブランチをプル、README.mdの変更結果を確認(gitのコマンドでpull)
-GitHub Desktop、GitHub Mobileなどを使用して共同作業をやってみる。

**ドメイン2: リポジトリ [#t18c5e10]

***リポジトリのドキュメントファイル [#hf1ada4b]
-良いREADMEの構成要素と推奨されるリポジトリファイル
-.github -> root -> docs ディレクトリなどに配置する。
-モノによっては、表示に関する優先順位がある。

-README.md
--プロジェクトの概要や使い方を記載するファイル。
--インストール手順、使い方、サンプルコード、ライセンス情報などが含まれる。
--TOPに表示される優先順は、.github -> root -> docs ディレクトリ

-LICENSE.md
--ソフトウェアのライセンス情報を記載するファイル。
--MIT, Apache, GPL などのライセンス条文が記載される。

-CODEOWNERS.md
--リポジトリ内の特定のファイルやディレクトリに対する責任者(コードオーナー)を定義
--プルリクエストの自動レビュー割り当てなどに使用される。

-CONTRIBUTING.md
--プロジェクトへの貢献方法(コントリビューションガイド)を記載するファイル。
--プルリクエストのルール、コードスタイル、バグ報告の手順などが含まれる。

-CODE_OF_CONDUCT.md
--プロジェクトの行動規範(Code of Conduct)を定めたファイル。
--コミュニティ内での適切な行動や禁止事項などを記載する。

-SECURITY.md
--セキュリティに関するガイドラインや脆弱性の報告方法を記載するファイル。
--セキュリティリスクや脆弱性の開示ポリシーなどが含まれる。

-SUPPORT.md
--プロジェクトのサポートに関する情報を記載するファイル。
--問い合わせ方法、FAQ、フォーラムやGitHub Issuesの利用方針などが含まれる。

-FUNDING.yml
--GitHub Sponsors や Open Collective などの資金提供手段を設定
--プロジェクトの開発支援を希望する場合に記載

-CITATION.cff
--プロジェクトの引用方法(学術論文向け)を記載するファイル。
--.cff(Citation File Format)を使用し、研究者が論文などでプロジェクトを正しく引用できるようにする。

***基本的なリポジトリのナビゲーション [#x55a16a1]
-リポジトリの名前
-リポジトリの情報
-リポジトリのREADME表示

-ナビゲーション
--Code
--Issues
--Pull requests
--Actions
--Projects
--Wiki
--Security
--Insights
--Settings
---General → Template Repository

-Branches
-Commits(履歴)

-コードの取得・展開
--clone

***新しいリポジトリの作成方法 [#cce52790]
-新しいリポジトリの作成
-新しいブランチの作成
-リポジトリにファイルを追加
-リポジトリのインサイトを表示
-スターを使ってリポジトリをお気に入り登録

-機能プレビュー(Feature preview)はプロファイルアイコンから
--Colorblind themes
--Command Palette
--Copilot Workspace for Pull Requests
--Personal Instructions
--New Commit Details Page
--Rich Jupyter Notebook Diffs
--New Issues Experience
--New merge experience
--Enhanced Repos Insights Views
--Slash Commands

***テンプレートリポジトリ [#aa347bd6]
-テンプレートリポジトリを作成
-新しいリポジトリの作成

***ハンズオン: リポジトリ操作 [#j3d98f4a]
https://github.com/alterbooth/hol-github-foundations/blob/main/domain2/README.md

-機能プレビュー(Feature preview)のNew Issues ExperienceをDisabledにしておく(手順書とUIが変わるので)。

-テンプレートリポジトリを使用してリポジトリを作成
--[[ハンズオン1で作成したリポジトリ>#d7d9b5fe]]に移動
--リポジトリのナビゲーションを確認
--このリポジトリをテンプレートリポジトリとしてマーク
--テンプレートリポジトリを使用してリポジトリを作成

-作成したリポジトリを編集する
--Github上でブランチを作成
--Github上でファイル(README)を追加
--Github上でファイル(README)を確認
--リポジトリにstarを付ける

**ドメイン3: 共同作業機能 [#n27f9f4b]
Issue、Pullrequest、Discussionの違い

-Issue
--シンプルなタスクを登録し、管理する。
--Pull requestsやProjectsと組み合わせ複雑なタスク管理に対応。

-[[Pullrequest>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Git%E3%81%AE%E5%9F%BA%E6%9C%AC#eaa84960]]
--Gitのブランチ間の差分から作成
--変更内容をレビューするために利用

-Discussion
--議論や質疑応答
--アイディアやフィードバックの収集
--Issueに起こす前段階の議論や調査

***Issues [#m52db5be]
-Issueの作成、IssueからBranchを作成

-Issueを検索およびフィルタリング
--フィルタによる絞込み、検索
--プルダウンでフィルタ追加して絞込み、検索

-基本的なIssue管理

--割り当て
---担当者
---Label、Milestone、Project
---Development: Branch、PullRequest

--ピン留め
--#による各種リンク
--重複としてマーク(Duplicate of #xx)
--クローズ、再オープン、転送、削除

-Issueキーワード
--特定のアクションを自動化
--Issueやプルリクエストの状態を管理

-Issue TemplateとIssue Form
--複数作成できる。
--定義ファイルは.github/ISSUE_TEMPLATE/に置く。

--Issue Template
---Markdownの形式でテンプレートを作成(*.md)
---ユーザーが自由に編集できる(入力必須項目などの制約なし)

--Issue Form
---YAMLで記述でテンプレートを作成(*.yml)
---構造化されたIssueを作成
---フォームで必須項目を設定し入力を強制
---入力フィールドの種類を指定可能

***Pull requests [#o38517c4]
-Pull requestの作成
--Pull requestのタブ
--ベースブランチと比較ブランチ
--Issueと比較すると追加でReviewersを指定できる。
--テンプレートの活用して作成できる。

-Pull requestのステータス
--Draft(ドラフト):作業中のPRで、レビューやマージがまだ行われない状態。
--Open(オープン):PRが作成され、まだマージやクローズされていない状態。
--Closed(クローズ):PRがマージされずに終了した状態。
--Merged(マージ済み):PRの変更がメインブランチなどに統合された状態。

-アクティビティをリンク
--別のPull Requestを参照
--Issueを参照
---Issue連動クローズのキーワード
---メタデータのDevelopmentから追加
--コメントをリンク
--コミットをリンク
--コードの特定行をリンク

-ナビゲーション

--Conversation(会話)
---PRの概要やディスカッションのやりとりが表示されるタブ。
---レビューコメントやステータス、マージの可否に関する情報を表示

--Commits(コミット)
---PRに含まれるコミットの一覧が表示されるタブ。
---それぞれのコミットメッセージや変更履歴を確認

--Checks(チェック)
---CI/CDのステータスや、自動テストの結果が表示されるタブ。
---失敗したチェックの詳細を確認し、修正が必要かどうか判断

--Files changed(変更されたファイル)
---PRで変更されたファイルの一覧が表示されるタブ。
---変更内容を差分表示で確認し、コードレビューを行う

-レビュー関連

--ファイルのコード行へのリンクにコメント

--レビューを行う
---単一コメント:「Add single comment」
---複数コメント:「Start a review - Finish your review」

--コメントの書き方
---変更の提案(suggested changes)は```suggestion - ```と書く。
---変更の提案を、提案の確定(commit suggestion)で反映できる。

--レビュー結果のステータス~
Review changes(Finish your review)でオプション選択

---コメント(Comment)~
変更の提案やフィードバックを提供する場合に選択
---承認(Approve)~
変更を承認する場合に選択
---変更要求~
修正が必要であることを示す場合に選択

--既定のレビュアーをCODEOWNERSファイルに指定しておくと良い。

***Discussions [#jb9d25af]

-Issuesとは異なり、コードに関連しない会話や質問、情報共有を行うための場で2021年8月に正式版となった。
-既定でOFF、リポジトリのナビゲーションのSettingsからDiscussionsを有効化
-Discussionsタブから「New discussion」or「Start a discussion」で新規作成

-DiscussionとIssueの違い

--Issue
---主にバグの修正、機能の提案、改善のリクエストなど、具体的な作業に関連するものに使用
---トラッキングに適したフィールド(ラベル、マイルストーン、プロジェクト)により管理を容易にする。

--Discussions
---形式にとらわれない広範で自由なコミュニケーション、議論、アイデアの共有に使用
---チームメンバーだけでなく、コミュニティ全体が参加できる。

-初期で用意されているカテゴリ
--General: 全般
--Announcements: お知らせ
--Ideas: アイディア
--Q&A: 質疑応答
--Show and tell: 知見共有

-コメントをDiscussionの回答としてマーク
-DiscussionをIssueに変換(自動リンク)
-Discussionをピン留め

***Notifications [#e6459cc9]
-ソース(パブリッシャ的な)
--Repository、Issue & Pull Request
--GitHub Actions、Dependabot

-サブスクリプションの管理
--アクティビティ、イベント
--Ignored repositories

--他のオプション
---エンティティ毎メールアドレスを変える
---自動的に追加されるRepository、Teamsの条件

***GitHub Gist [#b1263c63]
コードスニペットを他の人と共有する簡単な方法を提供

-GistはGitリポジトリであり、作成、フォークやクローンが可能
-Gistはパブリックまたはシークレットに設定可能
-パブリック → シークレットへの変更は不可能
-シークレットは検索にヒットしないだけでURL直アクセスは可能

***GitHub Wiki、Pages [#v3896de2]

-Wiki
--リポジトリのドキュメントをWikiに作成できる。
--Wiki編集はリポジトリへの書き込みアクセス権を持つユーザーができる。

-Pages
--静的サイトホスティングサービス
--[[ドキュメンテーション・ツール]]の出力を置く
--オプションでビルドプロセスを追加できる。

***ハンズオン: 共同作業 [#d264e8a4]
https://github.com/alterbooth/hol-github-foundations/blob/main/domain3/README.md

-Issue
--「New issue」ボタンで1つめのIssueを作る。
--Issueの画面右側のメタデータを確認
--DevelopmentからIssueをブランチと紐付け
--ピン留めする。
--「New issue」ボタンで2つめのIssueを作る。
--Issueの一覧で、フィルターやソートをしてみる
--Issueの一番下のボタンからクローズ(2種類)、再オープン
--コメントにDuplicate of #1と入力(した後に削除しないでクローズする作法)
--リポジトリを作成してそちらにIssueを転送してみる。転送を確認ご削除。
--TemplateとFormsを作って、それを使用してIssueを作成する。

-Pull request
--ユーザをリポジトリに招待してCODEOWNERSファイルを新規作成しソコにレビュアーとして追加
--masterブランチを編集し「create a new branch for this commit...」でbrunch しつつ commit & Pull request。
--Pull requestを新規作成し、Descriptionは適宜入力しつつ、Close #Xを入れる。
--レビュアーに自動的にCODEOWNERSに追加したアカウント名が追加されたことを確認する。
--Draft、Close、Reopenなどのステータス変更の操作を試してみる。
--説明された様々なレビュー・プロセスを実行し、最後にPull requestをマージする。
--マージされたらReopenできない。また、Delete brunchボタンからbranchを削除できる。
--Pull requestテンプレートを作って、テンプレートを使ったPull requestを作ってみる

-Discussions
--Repository の settings から Discussions を有効化
--有効化してDiscussionsが表示されることを確認
--「New discussion」ボタンを押し新しいDiscussionsを作成
--カテゴリの中から「Q&A」の「Get started」を押す
--TitleとBodyを入力して「Start discussion」を押す
--回答を書き込み、「Comment」ボタンを押す
--回答として採用するコメントの「Mark as answer」を押す
--マークされたコメントが回答として表示されることを確認する
--ピン留めは、全体かカテゴリ毎かを選択可能。
--Discussionに移動し「Create issue from discussion」からIssueを作成できる。

-Notifications
--トレイのアイコンを押下するとnotificationsの画面に遷移する。
--「Manage notifications」の「Subscriptions」からエンティティ一覧を確認できる。
--エンティティからIssueを選択&表示してメタデータからUnsubscribeできる。
--Repositoryの場合は「Manage notifications」の「Watched repositories」で一覧を確認できる。
--Repositoryに遷移して、Code の Watchから監視オプションを選択する。
--「Manage notifications」の「Notification settings」は個人Accountのsettings → Notificationと同じ。

-GitHub Gist
--個人Accountの「Your Gists」から「+」でファイルを開き「Create secret gist」で保存。
--「Edit」ボタンを押し、右上の「Make public」ボタンでパブリック化できる(逆はできない)。
--GitHub Gistは、fork/cloneできる。クローンしローカルで編集してプッシュすることで編集できる。

-GitHub Wiki
--Wikiは、リポジトリのナビゲーションのWikiから構成できる。
--Create the first pageで新設、編集したら、Save page。
--以降、New pageでページを追加し、編集したら、Save page。
--Sidebarを作成したりsettings → Features → Wikiから権限を見たり。

-GitHub Pages
--Pagesは、リポジトリのナビゲーションのPagesから構成できる。
--Pagesはgh-pagesという別ブランチを作成して公開する方法や~
masterブランチにて「docs」フォルダーを公開する方法があるもよう。

**ドメイン4: モダンな開発 [#yb58d7f4]

***GitHub Actions [#rcf8c999]
自動化によるワークフローを更に加速する。

-20以上のプロジェクト・イベントに対応する自動化トリガーにより、CI/CDだけでなく、あらゆるAPIの呼び出しの自動化が可能
-シンプルで使いやすい(YAMLに基づく設定と、学習および開始に役立つ多数のサンプルワークフロー)
-アクションのためのグローバルコミュニティ(コミュニティおよび企業によって維持されている17,000以上のオープンソースアクション)

-yamlの基本構造
 name: CI Workflow  # ワークフロー名
 
 on:  # トリガー
   push:
     branches:
       - main
   pull_request:
     branches:
       - main
   schedule:
     - cron: '0 12 * * 1'  # 毎週月曜日12:00 UTCに実行
 
 jobs:
   build:  # ジョブの定義
     runs-on: ubuntu-latest  # 実行環境(macos-latest, windows-latest も可)
 
     steps:
       - name: リポジトリをチェックアウト
         uses: actions/checkout@v4
 
       - name: Node.js セットアップ
         uses: actions/setup-node@v4
         with:
           node-version: '20'
 
       - name: 依存関係のインストール
         run: npm install
 
       - name: テスト実行
         run: npm test

-https://github.com/features/actions

***GitHub Copilot [#fa1d94b2]
あなたのAIペアプログラマー

-コードをより速く、少ない労力で書くのを助けるAIペアプログラマー
-コメントやコードからコンテキストを引き出し、次の入力や全体の関数を瞬時に提案
-実装したいロジックをコメントで記述し、GitHub Copilotにコードを組み立てさせる。
-UTパッケージをインポートし、GitHub Copilotにテストコードを提案させる。

-https://github.com/features/copilot/

***GitHub Codespaces [#xee6ffd6]
妥協のないコーディング

-ブラウザ内で完全な開発環境を使用して、コードの記述、ビルド、テスト、デバッグ、およびデプロイが可能
-開発環境のセットアップ時間を週に数時間から数分に短縮、リポジトリへの迅速な貢献を可能にする。
-dotfilesリポジトリやVS Code拡張機能を使用してエディタを設定し、すべてのCodespaceで一貫した環境を作成
-VS CodeのWeb版、デスクトップ版を併用可能(デスクトップ版のリモート環境接続機能を使用)

-エディタ以外はVM、コンテナの特性を活かした機能が多い
--Deep Links(環境のコピー)
--Live Share(コードの共同編集機能)
--GitHub Actions との統合(テスト)
--シークレット管理 
--リモート接続(VS CodeのRemote - SSH、Remote - Containers)

-Lifecycle
--Creating a Codespace(VM課金)
--Rebuilding a Codespace(VM課金)
--Stopping a Codespace(ストレージ課金)
--Deleting a Codespace

-github.dev(簡易エディタ) vs Codespaces(開発環境)

||github.dev|Codespace|h
|コスト|無料|個人アカウントには無料の月間使用枠がある|
|利用可能|>|github.comの全ユーザーが利用可能|
|起動|すぐに使用を開始できます|VMが割り当てられ、devcontainer.jsonファイルの内容に基づいてコンテナが設定される|
|コンピュート|エディタのみ|VM上でデバッグできる|
|ターミナルアクセス|なし|ローカルと同様にIDEウィンドウからターミナルを操作できる|
|拡張機能|Web上で実行できる拡張機能のサブセットのみ|VSCode Marketplaceのほとんどの拡張機能を使用できる|

-https://github.com/features/codespaces

***ハンズオン: モダン開発 [#i8bb585e]
https://github.com/alterbooth/hol-github-foundations/blob/main/domain4/README.md

-はじめに、簡単なHTMLとJavaScriptで作られた電卓アプリのサンプル・リポジトリを用意

-GitHub Actions
--ナビゲーションのActionsからテンプレートを使用してワークフローを作成する。
--サンプルではコミットするとActionsのワークフローが実行されるので、ログを確認する。
--トリガーにworkflow_dispatchが指定されているので、ワークフローを手動で実行できる。

-GitHub Copilot
--次を準備する。
--VS CodeにGitHub Copilotの拡張機能をインストール
--Copilot Chatの動作を確認
--Copilot Code completion(コード補完)の動作を確認

-GitHub Codespaces
--リポジトリのナビゲーションのCodeに遷移する。
--CodeボタンのプルダウンからCodespacesタブの「Create codespace on main」ボタンでcodespaceを開く。
--ブラウザでVS Codeの画面が開き、ファイルが修正出来ることを確認
--画面上部の「Terminal」→「New terminal」からターミナルを開き、npm installを実行
--一度、ブラウザのタブを閉じ、同じ環境に再接続できることを確認
--https://github.com/codespacesにアクセスし、起動しているcodespaceの一覧を確認
--codespaceを停止、ターミナルの履歴が消えていることを確認、codespaceを削除

-github.dev
--リポジトリを開き、キーボードの「.」(ドット)を押して、github.devを開く
--ターミナルを開いたり、複数のファイルを保存して1つのコミットにまとめることはできない
--ドメインのgithub.comをgithub1s.comに変更してGitHubのリポジトリコードをVSCode風に表示してくれるツールにアクセス

**ドメイン5: プロジェクト管理 [#v213632f]

***GitHub Projects [#e312135f]
-IssuesやPull requestsをインポートしタスク管理

-プロジェクトには、リポジトリ、組織、個人のプロジェクトがある。
--このうち、グループ(リポジトリ、組織)、個人で機能は別になる。
--グループの共同作業プロジェクトと個人のタスク管理プロジェクト

-刷新された3種類のレイアウトで、様々な表示に対応
--テーブル形式、テーブルレイアウト
--カンバン形式、ボードレイアウト
--ロードマップ形式、ロードマップレイアウト(=ガントチャート)

-IssueやPull requestにはない項目を自由に構成
--テキスト型、数値型、選択肢型、日付型
--イテレーション型でスプリントを表現・管理

-簡易的なワークフロー(フィールドの自動更新、GitHub Actions連携)
--Item added to project
--Item reopened
--Item closed
--Code changes requested
--Code review approved
--Pull request merged

-以前からあったProjects(classic)は2022年に刷新され今のProjectsに
--Projects(classic)は、2024年8月にサービス提供が終了
--Projects(classic)は、
---基本的なカンバンボードのみ、カスタマイズ性が低く
---GraphQL APIのサポートがなく、データ取得の柔軟性が低かった。

-その他の機能
--Repositoryから独立したアクセス管理が可能
--GitHub Projectsのレイアウト上で「Draft Issue」を作成し、後にIssueに変換
--既存のLabelとMilestonesを可視化、作業を追跡できる。
--インサイト:現在または時系列のデータを様々なグラフチャートで可視化
--テンプレート:Project(レイアウト、LabelとMilestonesなど)、返信(度々お世話になります...的な)

***ハンズオン: プロジェクト管理 [#w370f8f2]
https://github.com/alterbooth/hol-github-foundations/blob/main/domain5/README.md

-作成したリポジトリのナビゲーションのProjectsを選択
-自身のプロフィールページのナビゲーションのProjectsから「Your projects」を選択
-テンプレートから「Start from scratch」→「Table」を選択
-「Project name」を入力し「Create project」ボタンを選択
-Issueを2つ作り、「Projects」の歯車アイコンから、Projectに紐付ける
-3種類のレイアウトを切り替え様々な表示を確認
-ステータス「No Status」「Todo」「done」変更と確認を行う。
-StatusをDoneに変えるとIssueが自動でCloseされることを確認(Workflowの機能)。
-「Draft Issue」を作成し、後にIssueに変換してみる。
-「Iteration」列を追加、「Options」に「Starts on」「Duration」を追加
-Issueに追加した「Iteration」列の設定を行いソートなどを試みる。
-IssueのLabelとMilestonesをProjectsでもフィルタなどに利用できることを確認。
-Milestonesがロードマップレイアウトでの表示に影響を与えることを確認
-Project Insightsで様々なグラフチャートを確認
-Projectのテンプレート、返信テンプレートを確認

**ドメイン6: プライバシー、セキュリティ、および管理 [#a4d2fb45]

***Authentication and Security [#hf7ab188]
-2FA(2FA Authentication)でアカウント保護
--TOTP(Time-based One-timePassword)アプリ
--モバイルまたはデスクトップ、またはテキストメッセージ

-ロールによる異なるアクセス権限
--GitHubのアクセス許可はRBAC(Role-Based Access Control)に基づいている。
--RBACはユーザにロールを割り当てることでアクセスを許可する。
--RBACではロールに対象エンティティとエンティティ操作が定義されている。

--エンティティレベル:Enterprise、Organization、Team、Repository
---Enterprise、Organization、Teamエンティティに対する権限はユーザにロールを割り当てる。
---Repositoryエンティティに対する権限はユーザにアクセス許可を割り当てる。

--policy, roleの継承フロー

-EMU(Enterprise Managed Users)
--GHECアカウントはエンタープライズ管理者によって所有、作成、管理、および監査されるGHECアカウント
--ライフサイクル管理の自動化、IDPを使用してプロビジョニング/デプロビジョニングワークフローを自動化

***GitHub Administration [#qa34afac]
-機能を有効化および無効化

-リポジトリの権限レベルを認識
|権限|説明|推奨|h
|Read(読み取り)|Repositoryのコードとアクションの読み取り専用アクセスを持ち、IssueやPullRequest、Discussionにコメントを追加することが可能。|非コードコントリビューター|
|Triage(トリアージ)|読み取り専用権限に加え、Issues、Pull Requests、DiscussionのLabelおよびアサインメントの管理が可能。ただし、書き込み権限はない。|管理コントリビューター|
|Write(書き込み)|Repository設定を除くすべての部分への書き込みアクセスを許可。|コードコントリビューター|
|Maintain(メンテナンス)|Repositoryの管理を行うための権限を持つ。デリートやセキュリティ関連の操作は行えない。|プロジェクトマネージャー|
|Admin(管理者)|Repositoryのすべての機能、設定、および構成に対する完全な管理アクセスを持つ最も権限の強い役割|リポジトリの全体管理者|

-リポジトリ可視性
|可視性|説明|h
|Public(公開リポジトリ)|GitHub未登録ユーザー含め、世界中から閲覧可能。オープンソース プロジェクトとして活用できる。|
|Internal(Enterprise内の内部リポジトリ)|Enterprise Account が所有しているOrganizationでのみ作成可能で、同Enterpriseに所属するメンバー全員がアクセス可能。インナーソース プロジェクト用|
|Private(非公開リポジトリ)|明示的に追加されたユーザーまたはTeamsのみがアクセス可能。個人での使用や特定メンバーのみアクセスを許可する用途で活用できる。|

-ブランチ保護
--リポジトリの「Settings」「Code and automation」「Rules」「Rulesets」「New ruleset」「New branch ruleset」でルールを追加
--バイパスリストでルールを設定した後も管理者が制限を回避できるかどうかを制御。
--対象ブランチでは、保護対象のブランチ名を「release-*」などのパターンも指定できる。
--マージとコミット制限、多数のオプションがある。Codeownersとの関係。

-Security:機能とオプション
--Security policy
--Security advisories
--Private vulnerability reporting
--Dependabot alerts
--Code scanning alerts
--Secret scanning alerts

-Insights:インサイトを定義
--Pulse
--Contributors
--Community
--Community Standards
--Traffic
--Commits
--Code frequency
--Dependency graph
--Network
--Forks
--Actions Usage Metrics
--Actions Performance Metrics
--People

-Repository
--外部コラボレーター (Outside Collaborator)を招待
--個人のRepositoryだとロール設定はできない。

-Organization、Team

--Team細分化、階層化が可能

--ロール(アクセス許可レベル)の説明

---Organization
|所有者(Owner)|所有者は、組織のメンバーができることをすべて実行でき、ユーザーを追加削除ができる。2人以上指定する。|
|メンバー(Member)|メンバーは、リポジトリとチームを作成および管理できる。|
|モデレーター(Moderator)|メンバー以外の共同作成者をブロックおよびブロック解除、相互作用の制限、コメント非表示の設定ができる|
|支払いマネージャー(Billing manager)|課金情報を表示して管理できる|
|セキュリティマネージャー(Security managers)|リポジトリのアクセス許可、セキュリティ アラートを管理できる|
|外部コラボレーター(Outside collaborator)|1 つ以上のOrganizationリポジトリにアクセスできる。|

---Team
|メンバー(Member)|Organizationメンバーと同じ機能セット|
|メンテナ(Maintainer)|メンバーができるすべてのことに加えてチームのメンテナンス操作を実行できる|

***ハンズオン: プライバシー、セキュリティ、および管理 [#d49e5c43]
https://github.com/alterbooth/hol-github-foundations/blob/main/domain6/README.md

-2要素認証について確認

-Repositoryのロールを確認
--「Pre-defined roles」で定義済みのロールを確認
--「Custom roles」で「Create a role」ボタンを選択し、新しいロールを作成
---「Choose a role to inherit」で「Write」を選択し、継承するパーミッションを確認
---「Add permissions」で、追加できるパーミッションを確認

-RepositoryのSettings、Security、Insightsを確認

-Organization/Enterpriseの設定
--Organization配下のリポジトリで、Settings > Access > Collaborators and teamsを開く
--「Add people」ボタンを選択し、追加するユーザーをアカウント名で検索、選択
--招待するユーザーのロールを選択(シートが消費されるので、ハンズオンでは実際に招待しない)
--OrganizationとEnterpriseの設定を確認、OrganizationでTeam階層を作る。
--「Collaborators and teams」でTeamに対してロールを指定して招待

**ドメイン7: GitHubコミュニティの利点 [#z3cb8a46]

***オープンソースコミュニティ [#v457bf5a]

-オープンソースコミュニティの利点
--オープンソースとは?
--GitHubがオープンソースプロジェクトをどのように進めるか?
--人々をフォローする方法(通知を受け取る、コミュニティ内のプロジェクトを発見)
--Organizationをフォローする方法(活動に関する通知を受け取る)

--GitHub Sponsors:金銭的支援のための機能

--GitHub Marketplace:開発で使えるツールを販売するウェブサイト
---「Code quality」(コード品質)
---「Code review」(コードレビュー)
---「Continuous integration」(継続的インテグレーション)
---「Monitoring」(モニタリング)
---「Project management」(プロジェクト管理)

-オープンソースの利点を適用する方法

--インナーソース
---コラボレーション強化
---サイロ打破
---開発者の満足度向上

--発見してforkして貰うためのリポジトリの構成要素
---トピック設定
---READMEを適切に構成
---CONTRIBUTING.mdなど整備
---適切なラベルを設定

--Issue、Pull requestテンプレートの用意

***ハンズオン: GitHubコミュニティの利点 [#y1fc8b10]
https://github.com/alterbooth/hol-github-foundations/tree/main/domain7

-アカウントやOrganizationのフォロー
-Marketplaceについて

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS