MS_GitHubFoundationsPracticeExam - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
-
以下、模擬試験をやって、説明できるようにしておくべきトピックを列挙。
-
先ずは、https://ghcertified.com/practice_tests/ から
- 問題数を指定してスタート。
- 全問空送り+採点後に個別にチェックしても良い。
-
LinkedIn ラーニングは評価で無償利用できそうではあるが
「なんかアレ」(支払い情報登録などがあり)なのでチェックしなかった。
-
Git
-
commit とはスナップショット成り(断定)♨
-
DVCS の D(分散)とはローカルコピー成り(断定)♨
-
ブランチも同時作業に寄与する機能ではあるが分散ではない
-
ブランチしたらマージする必要がある。
-
Git で新しいブランチを 1 行で作成する方法
git checkout -b ブランチ名 git switch -c ブランチ名
-
-
GitHub
- 最も成功した Git ホスティング・サービス
- Git リポジトリに対するコラボレーションを支援するプラットフォーム
- シンプルな記法を使って文書を記述できる軽量マークアップ言語
- マークアップをシンプルに削ぎ落としたと言う事でマークダウンと命名
- 入力支援に「書式設定ツールバー」や「スラッシュ コマンド」がある。
- 実は、GitHub Flavored Markdown (GFM) と言う拡張仕様らしい。
- チェックリストを作成するには
- [ ]and- [x]などの GFM 拡張仕様を使う。
リポジトリの表示方法をカスタマイズするファイル
-
README.md
- リポジトリのプロフィールを記載する
- 優先順位:
.githubディレクトリ、ルートディレクトリ、.docsディレクトリ - (置き場は異なるがユーザの GitHub プロフィールを記載する場合にも使用される)
-
CODEOWNERS.md:コードベースの特定の領域または全体を担当する個人またはチームを定義
-
LICENSE.md:パブリック・リポジトリで OSS の場合、ライセンスを設定する。
-
CITATION.cff:ユーザーがソフトウェアを正しく引用できるようにする。
-
その他:CONTRIBUTING.md、CODE_OF_CONDUCT.md、SECURITY.md、SUPPORT.md、FUNDING.yml
移行メモ(ディレクトリ名): 元ページの「
.docsディレクトリ」は
GitHub の仕様上はdocs(先頭のドットなし)である
(優先順位は.github→ ルート →docs)。
ハンズオン側では正しくdocsと
書かれているため、そちらが正しい。
移行メモ(拡張子):
CODEOWNERSとLICENSEは
元ページでは.md付きで書かれているが、
GitHub が認識するのは 拡張子なしのCODEOWNERS/LICENSE
(LICENSEはLICENSE.md/LICENSE.txtも可、
CODEOWNERSは拡張子なしのみ)である。
元ページの表記のまま残すが、試験でも実務でも注意が要る。
-
リポジトリに紐付く
- Wiki:リポジトリの Wiki(Markdown)
- GitHub Pages:静的 HTML のホスティング
-
アカウントに紐付く
- Gist
- 小さなコード スニペットを他のユーザーと簡単に共有
- パブリックからプライベートには変更できない。
- プライベートはアクセス許可ではなく検索にヒットするか / しないか。
- Gist
-
スターをつける:評価したり、お気に入りとして保存する。
- ユーザ:できない
- リポジトリ:後で簡単に見つけられるようにまとめられる。
他のユーザーに知らせる方法にもなる。
-
フォロー、ウォッチする:エコシステム内での繋がりを深める。
- ユーザーをフォロー:個人のダッシュボードに、
ユーザーの公開アクティビティに関する通知が届く - プロジェクトをウォッチ:個人のダッシュボードに、
プロジェクトの公開アクティビティに関する通知が届く
- ユーザーをフォロー:個人のダッシュボードに、
-
各種、エンティティの検索を行うことができる。
-
以下のようなフィルタを使用する(ガチで覚えなくても消去法でイケる)。
-
リポジトリの例
in:name docker stars:>100 is:public -
イシューの例
is:issue is:open label:test "fix"
-
-
リポジトリ・テンプレート
- 既存のリポジトリからリポジトリテンプレートを作成
- リポジトリテンプレートから新しいリポジトリを作成
-
イシュー・テンプレート+Form
-
プルリクエスト・テンプレート
-
プロジェクト・テンプレート
- 新しいプロジェクト・テンプレートを作成
- 管理者または書き込み権限を使用して、
既存のプロジェクトをテンプレートとしてコピー - 組織のメンバーに推奨テンプレートを設定
-
コメント(返信)テンプレート
-
返信テンプレート
- イシュー・プルリクエストのコメントのテンプレート
- リポジトリ設定で作成、編集、削除
-
保存した返信
- イシュー・プルリクエストで再利用できるコメント
- アカウント設定で作成、編集、削除
-
-
コミットメッセージテンプレート(Git)
-
GitHub Actions テンプレート
-
Codespaces テンプレート
-
Git Flow:大規模なプロジェクトや複雑な開発プロセスに適している。
- Main → Develop → Feature → Develop → Release → Develop → Main
- Main → Hotfix → Main & Develop
- (ブランチは作業場の意味でリリースするのは Release ではなく Main になる)
-
GitHub Flow:GitHub が推奨するシンプルで軽量なワークフロー
- Main ブランチは常にデプロイ可能な状態に保つ。
- 新しいブランチを作成して、作業を進める。
- 作業が完了したらプルリクエストを作成してレビューを依頼
- コードレビューを経て、問題がなければ Main ブランチにマージ
-
ピン留め
お気に入りとかフォロー / ウォッチとは別。- プロフィールページにリポジトリや Gist を最大 6 つまで固定表示
- イシューリストの上部にイシューを最大 3 つまで固定表示
-
メタデータ
- エンティティへの Label、Milestone の割当はサイドバーのメタデータから
- Label:任意の分類 Label を付与できる。
- Milestone:残作業の把握、PJ フェーズへの関連付け。
settings:各種のエンティティにある settings から設定できる。
移行メモ(未記述): 元ページではこの節に空の箇条書き
(-が 3 つ)が置かれているだけで、内容が書かれていない。
該当の設定は、下記「リポジトリ」の「タブ」や、
ハンズオンの
「共通項 > Settings」(個人 Account / Repository /
Organization / Enterprise の 4 レベル)に記述がある。
-
コード、ファイル、各ファイルの改訂履歴を保存できる場所
-
リポジトリの検出可能性を高める
(解り易い名前、トピック、README.md 等のマークダウン ドキュメント) -
可視性オプション(プライベート、パブリック、内部(エンタープライズのみ))
-
タブ
- settings:Issue、Wiki、Project などの設定を行う(無効化が可能)。
- Insights:
- リポジトリのアクティビティ(≒ コード変更)に関するグラフや視覚化
- アクティビティの概要も含まれる(コード変更に関係あるモノ?)
- カンバセーションは含まれる(ディスカッションは含まれない)
- イシューのリストと言う選択肢はイシューのリストを見れば良いので無い。
- fork については、コード変更に直接関係ないので含まれない。
移行メモ(誤字・括弧): 「コード変更二関係あるモノ?」を
「コード変更に関係あるモノ?」に修正し、
「検出可能性を高める(…マークダウン ドキュメント」の
閉じ括弧の欠落を補った。
Issue(問題)
-
プルをリクエストすると見せかけて実際はフェッチ&マージしている(笑)
-
ブランチ元のブランチ(base)がブランチ先のブランチ(compare)をマージする
-
4 つの状態(Draft、Open、Merged、Closed)
-
3 つのレビューの状態(Comment、Request Changes、Approve)
-
2 つのプルリクエストをイシューにリンクする方法(メタデータ、イシュー番号)
-
キーワードでプルリクエストとイシューの Merged、Closed を連動させる。
-
ブランチ保護ルールでプルリクのマージ前にステータスチェック(例:2 つの承認)を強制
- main ブランチのブランチ保護ルールを作成する
- ブランチ保護ルールでは、マージ前にプルリクエストを要求する
- ブランチ保護ルールでは、プルリクエストをマージする前に
少なくとも 2 つの承認が必要。
展開保護ルールというのは、Actions 関連の機能らしい。
補足(デプロイ保護ルール): 「展開保護ルール」は
Deployment protection rules の訳で、推測どおり
GitHub Actionsの
Environment(環境)に付けるルールである。
「本番環境へのデプロイは特定のレビュアーの承認が要る」
「デプロイ前に待機時間を置く」といった制御を行うもので、
ブランチ保護(マージの制御)とは対象が異なる。
-
イシューとは異なり、コード修正に直接関係せず追跡する必要がない会話が対象
-
コミュニティ フォーラム(会話、質問、お知らせ、アイデア共有)
-
3 つのアクション(ピン留め、別のリポジトリに転送、イシューに変換)
-
イシューに変換
- 正確には「ディスカッションからイシューを作成」
- ディスカッションは残るがリンクなどはない。
-
GitHub のフォーク
- 語源は Linux のフォークで親から子(プロセス)を作成する的な。
- 自アカウントに存在する他のユーザーのリポジトリを個人用にコピー
- ローカルへのクローンではなく自アカウントへのクローン的な
- GitHub 上で元のリポジトリとの連携が自動で管理される。
(手動のクローン&プッシュでは連携機能は利用できない)
-
組織のメンバーと外部の共同作業者
- 共同作業者は組織に属さないがリポジトリ レベルの書き込みアクセス権を
付与されたユーザー - メンバーは組織に属し、より広範なアクセス権と役割を持つ場合がある。
- 共同作業者は個人アカウントのプライベートリポジトリにも招待可能。
- 共同作業者は組織に属さないがリポジトリ レベルの書き込みアクセス権を
-
エンティティ(イシュー、プルリクエスト)への人の割当は
サイドバーのメタデータから行う。 -
オープンソースは誰でも検査、変更、拡張できるソースコード付きのソフトウェア。
-
インナーソースはオープンソースの開発手法や文化を企業や組織の内部で活用する手法
-
イシューやプルリクエスト
- をプロジェクトに追加する方法:個別、自動、一括
- とプロジェクトとの同期は双方向で自動的に行われる。
- の 3 つのビューア:テーブル / スプレッドシート、
カンバン / タスクボード、ロードマップ
-
フィールド
- テキスト、数値、日付フィールド
- イテレーション フィールド
- カスタム フィールド
-
自動化オプション
- Project workflows:組み込みの簡易自動化ワークフロー
- GitHub Actions:柔軟性高いカスタマイズが可能な強力なツール
- GitHub GraphQL API:プロジェクトデータを CRUD する WebAPI
-
Close and delete(Close してもデータは保持され Archive などはない)
-
Insights:プロジェクトの現在のステータスと履歴の進行状況を視覚化
-
Classic → 現在
- エクスペリエンスに比べて多くの新機能と改善点を提供
- 双方向の同期、3 つのビューア、カスタム フィールド
比較的簡素な開発環境(VS Code 系)、もしくは、エディタ
-
Codespaces
-
リポジトリ専用に設定された事前構成済みの開発環境。
-
必要に応じて VM が作成される。マシンタイプを選択できる。
-
VM を占有するが、環境は Docker の仮想化コンテナで提供される。
-
ライフサイクルが重要(作成、再構築、停止、削除)
- 再構築:コンテナ構成に加えた変更を実装
- 切断しても再接続可能、コミットされていない変更は保存される。
-
ディープリンク:新しい Codespace を特定の構成で作成できるリンク
-
カスタマイズ
- 表示名
- OS またはベース イメージ、シェルの構成
- VS Code のインターフェース設定
-
構成ファイル
-
.devcontainerディレクトリ以下に配置する。 -
Dockerfile(OS またはベース イメージ、シェルの構成) -
devcontainer.json(使用するDockerfileや設定を指定) .vscode/settings.json
-
-
-
github.dev editor
-
Dependabot:リポジトリ内の依存関係の脆弱性をチェック
-
CodeQL:コードを分析しコード内の脆弱性とエラーを特定
-
シークレットスキャン:機密データが誤って公開されるのを防ぐために、
リポジトリで既知の秘密形式を検索する機能。
-
GitHub の CI/CD プラットフォーム
-
プルリクエストをマージする前に自動テストを実行する
-
サポートする有効なトリガーイベント
(コミットがプッシュされた、プルリクエストが開かれたなど)-
リポジトリ関連のイベント
-
push: リポジトリに変更がプッシュ -
pull_request: プルリクエストが作成、更新、マージ -
release: リリースが公開、作成、削除
-
-
その他
- CRON 式のスケジュールイベント
- Web フックイベント
- 手動でトリガー
- 外部システムからのカスタムイベントでトリガー
- イシュー・コメント関連
- コードスキャン関連
- ラベル・マイルストーン関連
- 環境・セキュリティ関連
-
オートコンプリート形式の提案を提供する AI ペア プログラマー
-
GitHub Copilot サブスクリプションをアクティブ化
-
サポートされている IDE のいずれかでセットアップし、コーディングを開始
-
プラン
-
GitHub Copilot for Individuals
- Free:一部の機能への限定的なアクセス
(学生、教師、人気 OSS のメンテナ向け) - Pro:すべての Copilot 機能に完全にアクセスできる。
- Free:一部の機能への限定的なアクセス
-
GitHub Copilot for Business
組織や企業のポリシーを制御できる。- Free:30 日間の無料試用版
- Team:組織・企業アカウントでサブスクリプションを購入
-
GitHub Copilot Enterprise
- GitHub Enterprise Cloud 上で利用できる。
- Copilot Business +追加の AI 機能を提供
-
-
GitHub Desktop
- Git & GitHub の GUI 版のクライアントツール
- Actions、Copilot などのサブシステム系の操作はできない。
-
GitHub Mobile
- GitHub の GUI 版のクライアントツール
- Git クライアントではない点に注意
- 主にコラボレーション系の操作が可能
販売するツールを公開するマーケット
- 公開されている GitHub Actions
オープンソースプロジェクトの開発者を経済的に支援
- 個人アカウント:1 人のユーザーのみに設定できる。
- 組織アカウント:複数の所有者とメンバーを設定できる。
- 企業アカウント:大規模な企業や組織向けに設計されたアカウント。
-
どのプランでもパブリック・リポジトリは無制限に作成可能
-
Free:個人・組織アカウントの両方に共通
-
Pro:個人アカウントの有料プラン
-
Team:組織アカウントの有料プラン
-
Enterprise:企業アカウントの有料プラン
-
SAML 認証
-
GitHub Actions などの使用量ベースの製品に対する使用可能量の追加。
-
追加オプション:GitHub Advanced Security、GitHub Premium Support、
GitHub Copilot Enterprise。 -
デプロイ オプション:GitHub Enterprise Cloud と
GitHub Enterprise Server の両方にアクセス可能- GitHub Enterprise Cloud:追加機能提供のための追加クラウド・インスタンス
- GitHub Enterprise Server:オンプレにデプロイするハイブリッド・クラウド
-
移行メモ(見出し): 元ページの見出しは「ブラン」だったが、
内容から「プラン」の誤字と解して修正した。
-
リポジトリレベルのロール
- 読み取り (Read): プロジェクトの表示やディスカッションが可能。
- 書き込み (Write): プロジェクトへの積極的な貢献が可能。
- トリアージ (Triage): Issue や Pull Request の管理が可能。
- 保守 (Maintain): リポジトリの管理が可能だが、機密操作は不可。
- 管理者 (Admin): フルアクセス権を持ち、
セキュリティ管理やリポジトリ削除が可能。 - 個人アカウントの場合は、管理者・共同作業者(=書き込み)の
権限レベルのみ。
-
組織レベルのロール
- オーナー (Owner): 組織全体を管理する権限を持つ特権ユーザー。
- メンバー (Member): デフォルトのユーザーで、基本的な操作が可能。
- モデレーター (Moderators):(企業・組織の所有者、)組織レベルのモデレーター
- 支払いマネージャー (Billing managers):
(企業・組織の所有者、)組織レベルの請求管理者 - セキュリティマネージャー (Security managers):
(企業・組織の所有者、)組織レベルのセキュリティ管理者
(セキュリティ関連機能の ON/OFF) - GitHub アプリマネージャー (GitHub App managers):
組織が所有する GitHub App 登録の設定を管理 - 外部協力者 (Outside collaborators):外部の共同作業者を追加する場合のロール
※ モデレーター:一般的に、議論や会話の進行を円滑に進める役割を担う人とされる。
-
チームレベルのロール
- メンテナー (Maintainer): チームの管理
(メンバーの追加・削除や子チームの作成)が可能。
- メンテナー (Maintainer): チームの管理
3 つの組織階層
- チーム
- 組織
- 企業
- TOTP、セキュリティキー(FIDO)、
パスキー(FIDO2 / WebAuthn)、
テキストメッセージ(SMS)、GitHub Mobile - 2FA は、すべての GitHub ユーザーに対して推奨される設定。
補足(2FA は既に必須化された): GitHub は 2023 年から
github.com にコードを寄稿するすべてのユーザーに 2FA を段階的に必須化し、
2024 年 1 月に完了している。
「推奨」ではなく「必須」が現状である。
また SMS は中間者攻撃に弱いため、TOTP かパスキーが推奨される。
- エンタープライズ管理ユーザー (EMU:Enterprise Managed Users) は
GitHub Enterprise Cloud が GitHub アカウントを外部 IdP と連携する機能 - ID 連携には SAML
(Security Assertion Markup Language) をプロトコルとして使用し、
外部 IdP で認証&連携 - 一部の IdP (Azure AD, Okta) では
SCIM (System for Cross-domain Identity Management) に対応
補足(EMU と SAML SSO は別物): 試験でも紛らわしいところなので整理する。
SAML SSO EMU アカウント 各自の 個人 GitHub アカウントに組織を紐付ける 企業が 専用アカウントを発行・所有する 退職時 組織から外れるがアカウントは本人のもの アカウントごと無効化できる 外部への公開 パブリック リポジトリに参加できる 原則、企業の外に出られない どちらも GitHub Enterprise Cloud の機能だが、
EMU は一度有効にすると後戻りできない(別 Enterprise の作成が要る)。
- 個人アクセストークン (PAT) は、WebAPI とか CLI 用
-
- GitHub Foundations 認定資格の模擬試験 1
- GitHub Foundations 認定資格の模擬試験 2
- GitHub Foundations 認定資格の模擬試験 3
- GitHub Foundations 認定資格の模擬試験 4
-
- GitHub Foundations Certification 模擬試験 1
- GitHub Foundations Certification 模擬試験 2
- GitHub Foundations Certification 模擬試験 3
- GitHub Foundations Certification 模擬試験 4
-
GitHub Foundations Practice Test :: GitHub Certified
GitHub Foundations 模擬試験 :: GitHub 認定
https://ghcertified.com/practice_tests/foundations/ -
GitHub-Foundations Dumps are Available for Instant Access - Try Free
GitHub-Foundations ダンプはすぐにアクセス可能 - 無料でお試しください
https://www.certshero.com/github/github-foundations -
GitHub-Foundations 問題集、GitHub 実際の試験問題 - 模擬練習
https://www.passtest.jp/GitHub-Foundations-mondaishuu.html -
GitHub Foundations Certification Practice Tests - JinalDesai.com
GitHub Foundations 認定模擬試験 - JinalDesai.com
https://jinaldesai.com/github-foundations-certification-practice-tests/
補足(「ダンプ」サイトの扱い): 上記のうち
「Dumps」を掲げるサイトは、実際の試験問題を流出させたものを
売っている場合がある。
これは試験の受験規約(NDA)違反にあたり、
発覚すると資格の取消や受験禁止の対象になる。
出題範囲の確認には
学習ガイドPDFと
公式の模擬試験を使うのが安全である。
- GitHub Foundations
- GitHub Foundaitons ハンズオン
- GitHub Foundaitons MS Learn Collections
- GitHub / GitHub Actions / GitHub Copilot
Tags: .NET開発, 構成管理ツール, CI, BI/AI