「[[マイクロソフト系技術情報 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模擬試験 * 目次 [#l7cf7a9c] #contents *概要 [#q9cb9b31] -以下、模擬試験をやって、説明できるようにしておくべきトピックを列挙。 -先ずは、https://ghcertified.com/practice_tests/ から --問題数を指定してスタート。 --全問空送り+採点後に個別にチェックしても良い。 -LinkedInラーニングは評価で無償利用できそうではあるが「なんかアレ」(支払い情報登録などがあり)なのでチェックしなかった。 -LinkedInラーニングは評価で無償利用できそうではあるが~ 「なんかアレ」(支払い情報登録などがあり)なのでチェックしなかった。 *詳細 [#r3666cee] **基本 [#c0614f2b] ***Git、GitHub [#w0396192] -Git --commitとはスナップショット成り(断定)♨ --DVCSのD(分散)とはローカルコピー成り(断定)♨ --ブランチも同時作業に寄与する機能ではあるが分散ではない --ブランチしたらマージする必要がある。 --Git で新しいブランチを 1 行で作成する方法 git checkout -b ブランチ名 git switch -c ブランチ名 -GitHub --最も成功したGitホスティング・サービス --Gitリポジトリに対するコラボレーションを支援するプラットフォーム ***Markdown [#g43de288] -シンプルな記法を使って文書を記述できる軽量マークアップ言語 -マークアップをシンプルに削ぎ落としたと言う事でマークダウンと命名 -入力支援に「書式設定ツールバー」や「スラッシュ コマンド」がある。 -実は、GitHub Flavored Markdown (GFM)と言う拡張仕様らしい。 -チェックリストを作成するには - [ ] and - [x] などのGFM拡張仕様を使う。 ***ファイル [#h0957e24] リポジトリの表示方法をカスタマイズするファイル -README.md: --リポジトリのプロフィールを記載する --優先順位:.githubディレクトリ、ルートディレクトリ、.docsディレクトリ --(置き場は異なるがユーザのGitHubプロフィールを記載する場合にも使用される) -CODEOWNERS.md:コードベースの特定の領域または全体を担当する個人またはチームを定義 -LICENSE.md:パブリック・リポジトリでOSSの場合、ライセンスを設定する。 -CITATION.cff:ユーザーがソフトウェアを正しく引用できるようにする。 -[[その他:CONTRIBUTING.md、CODE_OF_CONDUCT.md、SECURITY.md、SUPPORT.md、FUNDING.yml>GitHub Foundaitons ハンズオン#hf1ada4b]] ***ドキュメント [#k486dff9] -リポジトリに紐付く --Wiki:リポジトリのWiki(Markdown) --GitHub Pages:静的HTMLのホスティング -アカウントに紐付く --Gist ---小さなコード スニペットを他のユーザーと簡単に共有 ---パブリックからプライベートには変更できない。 ---プライベートはアクセス許可ではなく検索にヒットするか/しないか。 ***スター、フォロー、ウォッチ、 [#tdcbc335] -スターをつける:評価したり、お気に入りとして保存する。 --ユーザ:できない --リポジトリ:後で簡単に見つけられるようにまとめらる。他のユーザーに知らせる方法にもなる。 -フォロー、ウォッチする:エコシステム内での繋がりを深める。 --ユーザーをフォロー:個人のダッシュボードに、ユーザーの公開アクティビティに関する通知が届く --プロジェクトをウォッチ:個人のダッシュボードに、プロジェクトの公開アクティビティに関する通知が届く ***検索 [#v53ec1a5] -各種、エンティティの検索を行うことができる。 -以下のようなフィルタを使用する(ガチで覚えなくても消去法でイケる)。 --リポジトリの例 in:name docker stars:>100 is:public --イシューの例 is:issue is:open label:test "fix" ***テンプレート系 [#f8b46f6c] -リポジトリ・テンプレート --既存のリポジトリからリポジトリテンプレートを作成 --リポジトリテンプレートから新しいリポジトリを作成 -イシュー・テンプレート+Form -プルリクエスト・テンプレート -プロジェクト・テンプレート --新しいプロジェクト・テンプレートを作成 --管理者または書き込み権限を使用して、~ 既存のプロジェクトをテンプレートとしてコピー --組織のメンバーに推奨テンプレートを設定 -コメント(返信)テンプレート --返信テンプレート ---イシュー・プルリクエストのコメントのテンプレート ---リポジトリ設定で作成、編集、削除 --保存した返信 ---イシュー・プルリクエストで再利用できるコメント ---アカウント設定で作成、編集、削除 -コミットメッセージテンプレート(Git) -GitHub Actionsテンプレート -Codespacesテンプレート ***Flow [#y2dbc10c] -Git Flow:大規模なプロジェクトや複雑な開発プロセスに適している。 --Main → Develop →Feature → Develop → Release → Develop → Main --Main → Hotfix → Main & Develop --(ブランチは作業場の意味でリリースするのはReleaseではなくMainになる) -GitHub Flow:GitHubが推奨するシンプルで軽量なワークフロー --Mainブランチは常にデプロイ可能な状態に保つ。 --新しいブランチを作成して、作業を進める。 --作業が完了したらプルリクエストを作成してレビューを依頼 --コードレビューを経て、問題がなければMainブランチにマージ **エンティティ [#he0e27b0] ***設定 [#m4f6da28] -ピン留め~ お気に入りとかフォロー/ウォッチとは別。 --プロフィールページにリポジトリやGistを最大6つまで固定表示 --イシューリストの上部にイシューを最大3つまで固定表示 -メタデータ: --エンティティへのLabel、Milestoneの割当はサイドバーのメタデータから --Label:任意の分類Labelを付与できる。 --Milestone:残作業の把握、PJフェーズへの関連付け。 ***settings系 [#if9d118f] settings:各種のエンティティにあるsettingsから設定できる。 - - - ***リポジトリ [#ycecc4b0] -コード、ファイル、各ファイルの改訂履歴を保存できる場所 -リポジトリの検出可能性を高める(解り易い名前、トピック、README.md等のマークダウン ドキュメント -可視性オプション(プライベート、パブリック、内部(エンタープライズのみ)) -タブ --settings:Issue、Wiki、Projectなどの設定を行う(無効化が可能)。 --Insights: ---リポジトリのアクティビティ(≒コード変更)に関するグラフや視覚化 ---アクティビティの概要も含まれる(コード変更二関係あるモノ?) ---カンバセーションは含まれる(ディスカッションは含まれない) ---イシューのリストと言う選択肢はイシューのリストを見れば良いので無い。 ---forkについては、コード変更に直接関係ないので含まれない。 ***イシュー [#g8944383] Issue(問題) ***プルリクエスト [#rd4731b4] -プルをリクエストすると見せかけて実際はフェッチ&マージしている(笑) -ブランチ元のブランチ(base)がブランチ先のブランチ(compare)をマージする -4つの状態(Draft、Open、Merged、Closed) -3つのレビューの状態(Comment、Request Changes、Approve) -2つのプルリクエストをイシューにリンクする方法(メタデータ、イシュー番号) -キーワードでプルリクエストとイシューのMerged、Closedを連動させる。 -ブランチ保護ルールでプルリクのマージ前にステータスチェック(例:2 つの承認)を強制 --mainブランチのブランチ保護ルールを作成する --ブランチ保護ルールでは、マージ前にプルリクエストを要求する --ブランチ保護ルールでは、プルリクエストをマージする前に少なくとも 2 つの承認が必要。 >展開保護ルールというのは、Actions関連の機能らしい。 ***ディスカッション [#wd79a166] -イシューとは異なり、コード修正に直接関係せず追跡する必要がない会話が対象 -コミュニティ フォーラム(会話、質問、お知らせ、アイデア共有) -3つのアクション(ピン留め、別のリポジトリに転送、イシューに変換) -イシューに変換 --正確には「ディスカッションからイシューを作成」 --ディスカッションは残るがリンクなどはない。 **機能 [#wa941914] ***コラボレーション [#z0b8678f] -GitHubのフォーク --語源はLinuxのフォークで親から子(プロセス)を作成する的な。 --自アカウントに存在する他のユーザーのリポジトリを個人用にコピー --ローカルへのクローンではなく自アカウントへのクローン的な --GitHub上で元のリポジトリとの連携が自動で管理される。~ (手動のクローン&プッシュでは連携機能は利用できない) -組織のメンバーと外部の共同作業者 --共同作業者は組織に属さないがリポジトリ レベルの書き込みアクセス権を付与されたユーザー --メンバーは組織に属し、より広範なアクセス権と役割を持つ場合がある。 --共同作業者は個人アカウントのプライベートリポジトリにも招待可能。 -エンティティ(イシュー、プルリクエスト)への人の割当はサイドバーのメタデータから行う。 -オープンソースは誰でも検査、変更、拡張できるソースコード付きのソフトウェア。 -インナーソースはオープンソースの開発手法や文化を企業や組織の内部で活用する手法 ***プロジェクト [#aa36973f] -イシューやプルリクエスト --をプロジェクトに追加する方法:個別、自動、一括 --とプロジェクトとの同期は双方向で自動的に行われる。 --の3つのビューア:テーブル/スプレッドシート、カンバン/タスクボード、ロードマップ -フィールド --テキスト、数値、日付フィールド --イテレーション フィールド --カスタム フィールド -自動化オプション --Project workflows:組み込みの簡易自動化ワークフロー --GitHub Actions:柔軟性高いカスタマイズが可能な強力なツール --GitHub GraphQL API:プロジェクトデータをCRUDするWebAPI -Close and delete(Closeしてもデータは保持されArchiveなどはない) -Insights:プロジェクトの現在のステータスと履歴の進行状況を視覚化 -Classic → 現在 --エクスペリエンスに比べて多くの新機能と改善点を提供 --双方向の同期、3つのビューア、カスタム フィールド ***エディタ系 [#v210c093] 比較的簡素な開発環境(VSCode系)、もしくは、エディタ -Codespaces --リポジトリ専用に設定された事前構成済みの開発環境。 --必要に応じてVMが作成される。マシンタイプを選択できる。 --VMを占有するが、環境はDockerの仮想化コンテナで提供される。 --ライフサイクルが重要(作成、再構築、停止、削除) ---再構築:コンテナ構成に加えた変更を実装 ---切断しても再接続可能、コミットされていない変更は保存される。 --ディープリンク:新しいCodespaceを特定の構成で作成できるリンク --カスタマイズ ---表示名 ---OSまたはベース イメージ、シェルの構成 ---VS Code のインターフェース設定 --構成ファイル ---.devcontainerディレクトリ以下に配置する。 ---Dockerfile(OSまたはベース イメージ、シェルの構成) ---devcontainer.json(使用するDockerfileや設定を指定) ---.vscode/settings.json -github.dev editor ***セキュリティ系 [#le5d476d] -Dependabot:リポジトリ内の依存関係の脆弱性をチェック -CodeQL:コードを分析しコード内の脆弱性とエラーを特定 -シークレットスキャン:機密データが誤って公開されるのを防ぐために、リポジトリで既知の秘密形式を検索する機能。 **サブシステム的な [#b71de907] ***GitHub Actions [#eecdf8d0] -GitHub のCI/CD プラットフォーム -プルリクエストをマージする前に自動テストを実行する -サポートする有効なトリガーイベント~ (コミットがプッシュされた、プルリクエストが開かれたなど --リポジトリ関連のイベント: ---push: リポジトリに変更がプッシュ ---pull_request: プルリクエストが作成、更新、マージ ---release: リリースが公開、作成、削除 --その他 ---CRON 式のスケジュールイベント ---Web フックイベント: ---手動でトリガー ---外部システムからのカスタムイベントでトリガー ---イシュー・コメント関連 ---コードスキャン関連 ---ラベル・マイルストーン関連 ---環境・セキュリティ関連 ***GitHub Copilot [#l8befded] オートコンプリート形式の提案を提供する AI ペア プログラマー - GitHub Copilot サブスクリプションをアクティブ化 -サポートされているIDEのいずれかでセットアップし、コーディングを開始 -プラン --GitHub Copilot for Individuals ---Free:一部の機能への限定的なアクセス(学生、教師、人気OSSのメンテナ向け) ---Pro:すべての Copilot 機能に完全にアクセスできる。 --GitHub Copilot for Business~ 組織や企業のポリシーを制御できる。 ---Free:30 日間の無料試用版 ---Team:組織・企業アカウントでサブスクリプションを購入 --GitHub Copilot Enterprise ---GitHub Enterprise Cloud 上で利用できる。 ---Copilot Business +追加の AI 機能を提供 ***GitHub Desktop、GitHub Mobile [#c19d0b90] -GitHub Desktop --Git&GitHubのGUI版のクライアントツール --Actions、Copilotなどのサブシステム系の操作はできない。 -GitHub Mobile --GitHubのGUI版のクライアントツール --Gitクライアントではない点に注意 --主にコラボレーション系の操作が可能 ***GitHub Marketplace [#tdfb307f] 販売するツールを公開するマーケット -公開されている GitHub Actions ***GitHub Sponsors program [#c1ffb92c] オープンソースプロジェクトの開発者を経済的に支援 **アカウント、プラン、役割、権限 [#t2ada60f] ***アカウント [#k0386bd1] -個人アカウント:1 人のユーザーのみに設定できる。 -組織アカウント:複数の所有者とメンバーを設定できる。 -企業アカウント:大規模な企業や組織向けに設計されたアカウント。 ***ブラン [#ff33bec6] -どのプランでもパブリック・リポジトリは無制限に作成可能 -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:オンプレにデプロイするハイブリッド・クラウド ***ロール [#ge302e00] -リポジトリレベルのロール --読み取り (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): チームの管理(メンバーの追加・削除や子チームの作成)が可能。 ***組織階層 [#s2845227] 3つの組織階層(チーム、組織、企業 -チーム -組織 -企業 **認証 [#bc6a7efa] ***2FA [#efdc2eef] -TOTP、セキュリティキー(FIDO)、パスキー(FIDO2/WebAuthn)、テキストメッセージ(SMS)、GitHub Mobile -2FAは、すべてのGitHubユーザーに対して推奨される設定。 ***SSO [#pf068457] -エンタープライズ管理ユーザー (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) に対応 ***その他 [#we718b7e] -個人アクセストークン (PAT) は、WebAPIとかCLI用 **その他 [#a1e955a1] *参考 [#y70bf605] **LinkedInラーニング [#v3f100ba] -模擬試験~ https://www.linkedin.com/learning/practice-exam-1-for-github-foundations-certification/about-the-practice-exam --GitHub Foundations 認定資格の模擬試験 1 --GitHub Foundations 認定資格の模擬試験 2 --GitHub Foundations 認定資格の模擬試験 3 --GitHub Foundations 認定資格の模擬試験 4 -模擬試験(日本語)~ https://www.linkedin.com/learning/practice-exam-1-for-github-foundations-certification-25089547/2135041 --GitHub Foundations Certification 模擬試験 1 --GitHub Foundations Certification 模擬試験 2 --GitHub Foundations Certification 模擬試験 3 --GitHub Foundations Certification 模擬試験 4 **その他ネット情報 [#bd819106] -GitHub Foundations Practice Test :: GitHub Certified~ GitHub Foundations 模擬試験 :: GitHub 認定~ https://ghcertified.com/practice_tests/foundations/ --https://github.com/FidelusAleksander/ghcertified/tree/master/content/questions/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/