[{"data":1,"prerenderedAt":2607},["ShallowReactive",2],{"/ja-jp/blog/github-to-gitlab-migration-made-easy":3,"navigation-ja-jp":1867,"banner-ja-jp":2287,"footer-ja-jp":2298,"blog-post-authors-ja-jp-Fernando Diaz":2549,"blog-related-posts-ja-jp-github-to-gitlab-migration-made-easy":2564,"blog-share-wrapper-ja-jp":2588,"next-steps-ja-jp":2598},{"id":4,"title":5,"authors":6,"body":8,"category":1841,"date":1842,"description":1843,"extension":1844,"externalUrl":1845,"faq":1845,"featured":1846,"heroImage":1847,"meta":1848,"navigation":1371,"path":1849,"seo":1850,"slug":1857,"stem":1858,"tags":1859,"template":1864,"updatedDate":1865,"__hash__":1866},"blogPosts/ja-jp/blog/github-to-gitlab-migration-made-easy.md","GitHubからGitLabへの移行を、驚くほど簡単に",[7],"Fernando Diaz",{"type":9,"value":10,"toc":1821},"minimark",[11,33,42,45,80,83,88,97,100,285,289,292,346,349,362,380,413,416,436,439,446,453,456,459,463,466,508,513,562,566,569,601,605,614,751,754,779,788,791,794,817,820,824,827,830,883,895,899,902,1059,1070,1074,1091,1094,1139,1156,1159,1167,1176,1180,1183,1331,1345,1525,1534,1609,1615,1664,1675,1678,1681,1732,1735,1772,1775,1778,1817],[12,13,14,15,19,20,26,27,32],"p",{},"GitLabへの移行を検討し始めたとき、最初に浮かぶ疑問はたいてい同じです。",[16,17,18],"em",{},"移行はどれくらい大変なのか","。多くの",[21,22,25],"a",{"href":23,"rel":24},"https://about.gitlab.com/ja-jp/topics/devsecops/",[],"DevSecOps","チームにとって、「大がかりな作業になりそうだ」という不安こそが、AIネイティブな単一の",[21,28,31],{"href":29,"rel":30},"https://about.gitlab.com/ja-jp/platform/",[],"DevSecOpsプラットフォーム","へ踏み出す最大の障壁になっています。",[12,34,35,36,41],{},"しかし、GitLabへの移行はかつてないほど簡単になりました。組み込みのインポーターが、プロジェクトデータの大半をバックグラウンドで自動的に移行してくれます。さらに、これまで人手を要してきたCI/CDパイプラインの書き換えも、いまやその多くを",[21,37,40],{"href":38,"rel":39},"https://about.gitlab.com/ja-jp/gitlab-duo/",[],"GitLab Duo","が担当。AIネイティブアシスタントであるDuoが、GitHub ActionsのワークフローをGitLab CI/CDへ変換します。",[12,43,44],{},"本記事では、移行の全体像を最初から最後まで解説します。",[46,47,48,64,67,70,77],"ul",{},[49,50,51,52,56,57,56,60,63],"li",{},"GitHubからGitLabへ移行されるデータ：",[53,54,55],"strong",{},"自動","、",[53,58,59],{},"条件付き",[53,61,62],{},"手動","の区分",[49,65,66],{},"GitLab 18.xで実際に必要な前提要件（思っているより少なめ）",[49,68,69],{},"インポートの3つの方法：UI（OAuth）、パーソナルアクセストークン、一括移行向けのREST API",[49,71,72,73,76],{},"GitHub ActionsをGitLab CI/CDへ変換する方法：従来のやり方",[16,74,75],{},"と","GitLab Duoを使った近道",[49,78,79],{},"GitLabがインポートに対応しているその他のプラットフォーム",[12,81,82],{},"さっそく始めましょう。",[84,85,87],"h2",{"id":86},"githubからgitlabへ移行されるデータ","GitHubからGitLabへ移行されるデータ",[12,89,90,91,96],{},"GitLabの",[21,92,95],{"href":93,"rel":94},"https://docs.gitlab.com/ja-jp/user/project/import/github/",[],"組み込みGitHubインポーター","は、\nプロジェクト作成画面から直接利用できます。処理はバックグラウンドジョブとして実行されるため、インポートを開始したらあとは待つだけ。\nプロジェクトデータの大半は自動で移ります。一部の項目はオプションの切り替えになっていたり、\n事前に知っておきたい注意点があったりします。",[12,98,99],{},"移行対象と方式を、次の表にまとめました。",[101,102,103,116],"table",{},[104,105,106],"thead",{},[107,108,109,113],"tr",{},[110,111,112],"th",{},"データ",[110,114,115],{},"状態",[117,118,119,128,136,144,151,158,165,172,179,186,199,207,215,231,243,257,271],"tbody",{},[107,120,121,125],{},[122,123,124],"td",{},"Gitリポジトリ、ブランチ、タグ、コミット履歴",[122,126,127],{},"✅ 自動。オープンなプルリクエストのフォークブランチも含みます。",[107,129,130,133],{},[122,131,132],{},"イシュー",[122,134,135],{},"✅ 自動",[107,137,138,141],{},[122,139,140],{},"プルリクエスト（マージリクエストに変換）",[122,142,143],{},"✅ 自動。レビュー、レビューコメント、提案、アサインされたレビュアー、「マージした人」の情報も含みます。",[107,145,146,149],{},[122,147,148],{},"イシューとプルリクエストのコメント",[122,150,135],{},[107,152,153,156],{},[122,154,155],{},"ラベルとマイルストーン",[122,157,135],{},[107,159,160,163],{},[122,161,162],{},"リリースノートの内容",[122,164,135],{},[107,166,167,170],{},[122,168,169],{},"Wikiページ",[122,171,135],{},[107,173,174,177],{},[122,175,176],{},"ブランチ保護ルール",[122,178,135],{},[107,180,181,184],{},[122,182,183],{},"イシューとプルリクエストのイベント",[122,185,135],{},[107,187,188,191],{},[122,189,190],{},"コラボレーター（メンバー）",[122,192,193,194,198],{},"⚠️ 条件付き。オプションの切り替え（デフォルトでオン）。",[195,196,197],"code",{},"read:org","スコープが必要で、GitHubのロールはGitLabのロールにマッピングされます（下記参照）。GitHub Enterprise Cloudのカスタムロールは非対応のため、手動で追加します。",[107,200,201,204],{},[122,202,203],{},"Markdownの添付ファイル（説明、コメント、リリース内）",[122,205,206],{},"⚠️ 条件付き。オプションの切り替え。プライベートリポジトリでは、2023年5月より前の添付ファイルはインポートできません（GitHub側の制限）。GitHub Enterprise Serverでは画像と動画のみが対象です。",[107,208,209,212],{},[122,210,211],{},"大量のコメント（約30,000件以上）",[122,213,214],{},"⚠️ 条件付き。GitHubのイシューごとのAPI制限を回避するため、代替コメントインポートを有効にします。2017年より前のコメントは別スレッドとしてインポートされる場合があります。",[107,216,217,220],{},[122,218,219],{},"Git LFSオブジェクト",[122,221,222,223,226,227,230],{},"⚠️ 条件付き。インポート実行",[16,224,225],{},"前","に、",[53,228,229],{},"移行先","プロジェクトでLFSを有効にする必要があります。有効になっていないと、オブジェクトは通知なくスキップされます。",[107,232,233,236],{},[122,234,235],{},"GitHub Actionsのワークフロー",[122,237,238,239,242],{},"🛠️ 手動（AI支援あり）。",[195,240,241],{},".gitlab-ci.yml","に変換します。大部分はGitLab Duoに任せられます。",[107,244,245,248],{},[122,246,247],{},"シークレット → CI/CD変数",[122,249,250,251,256],{},"🛠️ 手動。パイプラインを実行する前に、シークレットを",[21,252,255],{"href":253,"rel":254},"https://docs.gitlab.com/ja-jp/ci/variables/",[],"CI/CD変数","として再作成します（マスク／保護の指定を忘れずに）。",[107,258,259,262],{},[122,260,261],{},"必須ステータスチェック",[122,263,264,265,270],{},"🛠️ 手動。",[21,266,269],{"href":267,"rel":268},"https://docs.gitlab.com/ja-jp/user/project/merge_requests/status_checks/",[],"外部ステータスチェック","として再作成します。",[107,272,273,276],{},[122,274,275],{},"GitHubのOrganization／グループ構成",[122,277,278,279,284],{},"❌ 移行対象外。同等の構造になるよう、GitLab側で",[21,280,283],{"href":281,"rel":282},"https://docs.gitlab.com/ja-jp/user/group/",[],"グループとサブグループ","を作成します。",[286,287,288],"h3",{"id":288},"ロールのマッピング",[12,290,291],{},"GitHubとGitLabでは命名規則が異なるため、移行時にマッピングが行われます。コラボレーターをインポートすると、GitHubのロールは次のようにGitLabのロールへ対応づけられます。",[101,293,294,304],{},[104,295,296],{},[107,297,298,301],{},[110,299,300],{},"GitHubのロール",[110,302,303],{},"GitLabのロール",[117,305,306,314,322,330,338],{},[107,307,308,311],{},[122,309,310],{},"Read",[122,312,313],{},"ゲスト",[107,315,316,319],{},[122,317,318],{},"Triage",[122,320,321],{},"レポーター",[107,323,324,327],{},[122,325,326],{},"Write",[122,328,329],{},"デベロッパー",[107,331,332,335],{},[122,333,334],{},"Maintain",[122,336,337],{},"メンテナー",[107,339,340,343],{},[122,341,342],{},"Admin",[122,344,345],{},"オーナー",[84,347,348],{"id":348},"前提要件",[12,350,351,352,355,356,361],{},"前提要件は、年々",[16,353,354],{},"シンプル","になっています。特に大きな変化は、GitHubのすべての作成者がGitLab上で一致する公開メールアドレスを持つ必要がなくなったこと。現在は",[21,357,360],{"href":358,"rel":359},"https://docs.gitlab.com/ja-jp/user/project/import/#user-contribution-and-membership-mapping",[],"ユーザーコントリビューションマッピング","（GitLab 17.8以降）により、GitLabが帰属情報を自動的に処理します。詳しくは後述。",[12,363,364,367,368,371,372,375,376,379],{},[53,365,366],{},"GitHub.com","または",[53,369,370],{},"GitHub Enterprise Server","から、",[53,373,374],{},"GitLab.com","あるいは",[53,377,378],{},"GitLab Self-Managed","インスタンスへインポートするには、次のものが必要です。",[46,381,382,388,394,406],{},[49,383,384,385],{},"インポート元となる",[53,386,387],{},"GitHubプロジェクトへのアクセス権",[49,389,390,391],{},"移行先GitLabグループでの",[53,392,393],{},"メンテナーまたはオーナーロール",[49,395,396,399,400,405],{},[53,397,398],{},"GitHubインポートソースが有効になっていること","。GitLab.comではデフォルトで有効です。GitLab Self-Managedの場合は、管理者が",[21,401,404],{"href":402,"rel":403},"https://docs.gitlab.com/ja-jp/administration/settings/visibility_and_access_controls/#configure-allowed-import-sources",[],"インポートソース","の設定から有効にします。",[49,407,408,409,412],{},"GitHubのOrganizationが",[53,410,411],{},"サードパーティアプリケーションのアクセスを制限していないこと","（制限している場合は、認可時にアクセスを許可します）",[12,414,415],{},"状況によっては、次の条件も加わります。",[46,417,418,427],{},[49,419,420,423,424,426],{},[53,421,422],{},"Git LFSオブジェクトを移行する場合","：インポート",[16,425,225],{},"に、移行先プロジェクトでLFSを有効にします。",[49,428,429,432,433,435],{},[53,430,431],{},"コラボレーターを移行する場合","：トークンに",[195,434,197],{},"スコープが必要です。あわせて、GitHubプロジェクトでWriteまたはMaintain以上の権限が求められます。",[286,437,438],{"id":438},"メールアドレスの一致はもう不要",[12,440,441,442,445],{},"以前は、GitHubユーザーの公開メールアドレスとGitLabのメールアドレスが一致している場合にのみ、コントリビューション履歴がきれいに引き継がれました。現在は、一致するGitLabアカウントを持たない作成者、担当者、レビュアーについて、GitLabが",[53,443,444],{},"プレースホルダーユーザー","を作成し、そのコントリビューションを保持します。",[12,447,448,449,452],{},"インポート後は、グループのオーナーまたはメンテナーが ",[53,450,451],{},"「メンバー」→「プレースホルダー」"," へ進み、各プレースホルダーを実際のGitLabユーザーへ再割り当てします。あとは対象ユーザーが承認するだけ。つまり、まず移行を済ませ、帰属情報の整理は後から進められます。",[84,454,455],{"id":455},"インポートの実行",[12,457,458],{},"インポートの方法は3つあります。移行元と規模に合わせて選んでください。",[286,460,462],{"id":461},"方法1github-oauthを使ったui操作gitlabcomにおすすめ","方法1：GitHub OAuthを使ったUI操作（GitLab.comにおすすめ）",[12,464,465],{},"多くのチームにとって、これが最短ルートです。",[467,468,469,482,488,495,501],"ol",{},[49,470,471,472,475,476,481],{},"グループを開き、",[53,473,474],{},"「プロジェクトを作成」→「プロジェクトをインポート」→「GitHub」"," を選択します（",[21,477,480],{"href":478,"rel":479},"https://gitlab.com/projects/new#import_project",[],"gitlab.com/projects/new#import_project","から直接開いても同じです）。",[49,483,484,487],{},[53,485,486],{},"「Authenticate with GitHub」"," ボタンを押し、OAuthアプリケーションを承認します。",[49,489,490,491,494],{},"Organizationのリポジトリを扱う場合は、Organization名の横にある ",[53,492,493],{},"「Grant」"," をクリックしてアクセスを認可します。",[49,496,497,500],{},[53,498,499],{},"「Owner／Collaborated／Organization」"," タブでリポジトリを絞り込み、インポート対象を選択します。ここで名前の変更や、移行先GitLabネームスペースの指定も行えます。",[49,502,503,504,507],{},"オプションの切り替え（下表を参照）を設定し、",[53,505,506],{},"「Import」"," をクリックします。処理はバックグラウンドジョブとして走るため、画面を離れて後から確認しても問題ありません。",[12,509,510],{},[53,511,512],{},"オプションの切り替え",[101,514,515,528],{},[104,516,517],{},[107,518,519,522,525],{},[110,520,521],{},"切り替え",[110,523,524],{},"デフォルト",[110,526,527],{},"使うタイミング",[117,529,530,541,552],{},[107,531,532,535,538],{},[122,533,534],{},"コラボレーターをインポート",[122,536,537],{},"オン",[122,539,540],{},"プロジェクトメンバーをロールマッピング付きで移行したいとき",[107,542,543,546,549],{},[122,544,545],{},"Markdown添付ファイルをインポート",[122,547,548],{},"オフ",[122,550,551],{},"説明、コメント、リリースに埋め込まれた画像やファイルも移したいとき",[107,553,554,557,559],{},[122,555,556],{},"代替コメントインポートを使用",[122,558,548],{},[122,560,561],{},"コメントが約30,000件以上あり、GitHubのAPI制限に達しているとき",[286,563,565],{"id":564},"方法2パーソナルアクセストークンoauth未設定の場合","方法2：パーソナルアクセストークン（OAuth未設定の場合）",[12,567,568],{},"OAuthが設定されていない環境では、トークンによる認証を使います。",[467,570,571,588,594],{},[49,572,573,576,577,580,581,584,585,587],{},[195,574,575],{},"github.com/settings/tokens/new","で、",[195,578,579],{},"repo","スコープを付与した",[53,582,583],{},"クラシック","パーソナルアクセストークンを作成します（コラボレーターやLFSを移行する場合は",[195,586,197],{},"も追加）。なお、Fine-grainedトークンには対応していません。",[49,589,590,591,593],{},"GitLabでグループを開き、 ",[53,592,474],{}," を選択します。",[49,595,596,597,600],{},"トークンを貼り付けて ",[53,598,599],{},"「Authenticate」"," を選び、あとはOAuthの場合と同じ手順でリポジトリの選択と設定を進めます。",[286,602,604],{"id":603},"方法3rest-api一括インポートとスクリプト化","方法3：REST API（一括インポートとスクリプト化）",[12,606,607,608,613],{},"多数のリポジトリをまとめて移行したい場合、移行作業をスクリプト化したい場合、あるいは自分が所有していないパブリックリポジトリをインポートしたい場合は、",[21,609,612],{"href":610,"rel":611},"https://docs.gitlab.com/ja-jp/api/import/",[],"インポートAPI","を使います。",[615,616,621],"pre",{"className":617,"code":618,"language":619,"meta":620,"style":620},"language-bash shiki shiki-themes github-light","curl --request POST \\\n  --url \"https://gitlab.com/api/v4/import/github\" \\\n  --header \"PRIVATE-TOKEN: $GITLAB_TOKEN\" \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\n    \"personal_access_token\": \"\u003Cgithub_classic_pat>\",\n    \"repo_id\": 12345678,\n    \"target_namespace\": \"my-group\",\n    \"new_name\": \"imported-project\",\n    \"optional_stages\": {\n      \"single_endpoint_notes_import\": true,\n      \"attachments_import\": true,\n      \"collaborators_import\": true\n    }\n  }'\n","bash","",[195,622,623,643,654,672,682,691,697,703,709,715,721,727,733,739,745],{"__ignoreMap":620},[624,625,628,632,636,640],"span",{"class":626,"line":627},"line",1,[624,629,631],{"class":630},"s7eDp","curl",[624,633,635],{"class":634},"sYu0t"," --request",[624,637,639],{"class":638},"sYBdl"," POST",[624,641,642],{"class":634}," \\\n",[624,644,646,649,652],{"class":626,"line":645},2,[624,647,648],{"class":634},"  --url",[624,650,651],{"class":638}," \"https://gitlab.com/api/v4/import/github\"",[624,653,642],{"class":634},[624,655,657,660,663,667,670],{"class":626,"line":656},3,[624,658,659],{"class":634},"  --header",[624,661,662],{"class":638}," \"PRIVATE-TOKEN: ",[624,664,666],{"class":665},"sgsFI","$GITLAB_TOKEN",[624,668,669],{"class":638},"\"",[624,671,642],{"class":634},[624,673,675,677,680],{"class":626,"line":674},4,[624,676,659],{"class":634},[624,678,679],{"class":638}," \"Content-Type: application/json\"",[624,681,642],{"class":634},[624,683,685,688],{"class":626,"line":684},5,[624,686,687],{"class":634},"  --data",[624,689,690],{"class":638}," '{\n",[624,692,694],{"class":626,"line":693},6,[624,695,696],{"class":638},"    \"personal_access_token\": \"\u003Cgithub_classic_pat>\",\n",[624,698,700],{"class":626,"line":699},7,[624,701,702],{"class":638},"    \"repo_id\": 12345678,\n",[624,704,706],{"class":626,"line":705},8,[624,707,708],{"class":638},"    \"target_namespace\": \"my-group\",\n",[624,710,712],{"class":626,"line":711},9,[624,713,714],{"class":638},"    \"new_name\": \"imported-project\",\n",[624,716,718],{"class":626,"line":717},10,[624,719,720],{"class":638},"    \"optional_stages\": {\n",[624,722,724],{"class":626,"line":723},11,[624,725,726],{"class":638},"      \"single_endpoint_notes_import\": true,\n",[624,728,730],{"class":626,"line":729},12,[624,731,732],{"class":638},"      \"attachments_import\": true,\n",[624,734,736],{"class":626,"line":735},13,[624,737,738],{"class":638},"      \"collaborators_import\": true\n",[624,740,742],{"class":626,"line":741},14,[624,743,744],{"class":638},"    }\n",[624,746,748],{"class":626,"line":747},15,[624,749,750],{"class":638},"  }'\n",[12,752,753],{},"進捗の確認はこちらです。",[615,755,757],{"className":617,"code":756,"language":619,"meta":620,"style":620},"curl --header \"PRIVATE-TOKEN: $GITLAB_TOKEN\" \\\n  \"https://gitlab.com/api/v4/projects/\u003Cproject_id>/import\"\n",[195,758,759,774],{"__ignoreMap":620},[624,760,761,763,766,768,770,772],{"class":626,"line":627},[624,762,631],{"class":630},[624,764,765],{"class":634}," --header",[624,767,662],{"class":638},[624,769,666],{"class":665},[624,771,669],{"class":638},[624,773,642],{"class":634},[624,775,776],{"class":626,"line":645},[624,777,778],{"class":638},"  \"https://gitlab.com/api/v4/projects/\u003Cproject_id>/import\"\n",[12,780,781,783,784,787],{},[195,782,579],{},"スコープを持つGitHubのクラシックPATと、",[195,785,786],{},"api","スコープを持つGitLabのPATが必要になります。",[286,789,790],{"id":790},"インポート結果の確認",[12,792,793],{},"インポートが完了したら、簡単な健全性チェックを行います。",[467,795,796,807,810],{},[49,797,798,799,802,803,806],{},"新しいプロジェクトを開き、ステータスバナーが",[16,800,801],{},"scheduled → started → finished","と進むことを確認します。\n",[53,804,805],{},"partially completed","と表示された場合は、どのエンティティが失敗したのかを掘り下げます。",[49,808,809],{},"ブランチ、タグ、コミットSHA、イシュー、マージリクエスト、ラベル、マイルストーンの件数を、移行元と突き合わせます。",[49,811,812,813,816],{},"インポートされた項目に ",[53,814,815],{},"「Imported」"," バッジが付いているかを確認します。",[12,818,819],{},"再インポートは新しいコピーの作成になります（既存プロジェクトへのインポートは不可）。気になる点があれば、削除してやり直すのが確実です。",[84,821,823],{"id":822},"段階的な移行githubとgitlabを並行運用する","段階的な移行：GitHubとGitLabを並行運用する",[12,825,826],{},"移行は、ある日を境に一斉に切り替える必要はありません。多くのチームは段階的に進めています。GitHubを動かしたままGitLabを立ち上げ、\nパイプラインを検証し、チーム単位でメンバーを移していく進め方。GitLabは移行期間中もGitHubと共存できるよう設計されているため、\n一夜でスイッチを切り替えるのではなく、少しずつ導入していけます。",[12,828,829],{},"移行中に2つのプラットフォームを並行させる、主な方法は次のとおりです。",[46,831,832,850,865,877],{},[49,833,834,837,838,843,844,849],{},[53,835,836],{},"プルミラーリングでリポジトリを同期する。"," GitLabはGitHubリポジトリを\n",[21,839,842],{"href":840,"rel":841},"https://docs.gitlab.com/ja-jp/user/project/repository/mirror/pull/",[],"プルミラー","し、新しいブランチやコミットをスケジュールに沿って自動で取り込みます。\nデベロッパーはGitHubへプッシュを続けながら、GitLab側は常に最新の状態。読み取り専用の実データを使ってCI/CDやワークフローを検証できるため、\n誰の日常業務も変えずに済みます。切り替えの準備が整ったら、\n",[21,845,848],{"href":846,"rel":847},"https://docs.gitlab.com/ja-jp/user/project/repository/mirror/push/",[],"プッシュミラーリング","に変更すれば、GitLabでの変更が\nGitHubへ戻り、まだGitHubで作業しているチームにも反映されます。",[49,851,852,855,856,861,862,864],{},[53,853,854],{},"外部リポジトリ向けCI/CDでGitHubリポジトリのパイプラインを実行する。"," コードを移す前にGitLab CI/CDを評価したい場合の選択肢が、\n",[21,857,860],{"href":858,"rel":859},"https://docs.gitlab.com/ja-jp/ci/ci_cd_for_external_repos/github_integration/",[],"外部リポジトリ向けCI/CD","。\nGitHubリポジトリをGitLabに接続し、プッシュとプルリクエストのたびにパイプラインを実行して、結果をGitHubへ返す仕組みです。\n信頼できる情報源をGitHubに置いたまま、",[195,863,241],{},"への変換を実際のコミットで検証できます。",[49,866,867,870,871,876],{},[53,868,869],{},"CI/CDのステータスをGitHubへ返す。"," ",[21,872,875],{"href":873,"rel":874},"https://docs.gitlab.com/ja-jp/integration/github/",[],"GitHubインテグレーション","を使うと、\nGitLabがパイプラインとコミットのステータスをGitHubへ送信します。まだ移行していないデベロッパーも、使い慣れた画面でグリーンのチェックマークや\nビルド結果を確認できます。",[49,878,879,882],{},[53,880,881],{},"チーム単位、リポジトリ単位で移行する。"," インポーターはプロジェクト単位で動くため、まず1つのチームのリポジトリを移し、\n定着を見届けてから次のグループへ進む、という順序が取れます。未移行のグループやサブグループは、その間GitHubを参照したままで問題ありません。",[884,885,886],"blockquote",{},[12,887,888,889,894],{},"複数チーム・大規模リポジトリの移行を検討されている場合は、",[21,890,893],{"href":891,"rel":892},"https://about.gitlab.com/ja-jp/sales/",[],"要件に合わせた移行計画をご相談いただけます","。",[84,896,898],{"id":897},"github-actionsをgitlab-cicdへ移行する","GitHub ActionsをGitLab CI/CDへ移行する",[12,900,901],{},"CI/CDは、移行の中で自動化されない数少ない領域です。とはいえ、パイプラインを見直す絶好の機会。\n中心となる概念の多くは、2つのプラットフォーム間できれいに対応しています。",[101,903,904,914],{},[104,905,906],{},[107,907,908,911],{},[110,909,910],{},"GitHub Actions",[110,912,913],{},"GitLab CI/CD",[117,915,916,927,935,942,953,971,990,1002,1012,1024,1034,1047],{},[107,917,918,923],{},[122,919,920],{},[195,921,922],{},".github/workflows/*.yml",[122,924,925],{},[195,926,241],{},[107,928,929,932],{},[122,930,931],{},"ワークフロー",[122,933,934],{},"パイプライン",[107,936,937,940],{},[122,938,939],{},"ジョブ",[122,941,939],{},[107,943,944,947],{},[122,945,946],{},"ジョブ内のステップ",[122,948,949,952],{},[195,950,951],{},"script:","内の1行",[107,954,955,962],{},[122,956,957,958,961],{},"イベントトリガー（",[195,959,960],{},"on:","）",[122,963,964,967,968],{},[195,965,966],{},"rules:","／",[195,969,970],{},"workflow:",[107,972,973,981],{},[122,974,975,967,978],{},[195,976,977],{},"runs-on:",[195,979,980],{},"container:",[122,982,983,986,987],{},[195,984,985],{},"image:","とRunnerの",[195,988,989],{},"tags:",[107,991,992,995],{},[122,993,994],{},"Actions Marketplace",[122,996,997],{},[21,998,1001],{"href":999,"rel":1000},"https://docs.gitlab.com/ja-jp/ci/components/",[],"CI/CDコンポーネント",[107,1003,1004,1007],{},[122,1005,1006],{},"シークレット",[122,1008,1009],{},[21,1010,255],{"href":253,"rel":1011},[],[107,1013,1014,1019],{},[122,1015,1016],{},[195,1017,1018],{},"strategy.matrix",[122,1020,1021],{},[195,1022,1023],{},"parallel.matrix",[107,1025,1026,1031],{},[122,1027,1028],{},[195,1029,1030],{},"actions/checkout",[122,1032,1033],{},"組み込み（GitLabが自動でクローン）",[107,1035,1036,1041],{},[122,1037,1038],{},[195,1039,1040],{},"actions/cache",[122,1042,1043,1046],{},[195,1044,1045],{},"cache:","キーワード",[107,1048,1049,1054],{},[122,1050,1051],{},[195,1052,1053],{},"actions/upload-artifact",[122,1055,1056,1046],{},[195,1057,1058],{},"artifacts:",[12,1060,1061,1062,1065,1066,1069],{},"押さえておきたい大きな違いが1つあります。GitLabでは",[53,1063,1064],{},"ステージが順番に実行され、同一ステージ内のジョブは並列で実行されます","。さらに",[195,1067,1068],{},"needs:","を使えば、明示的な有向非巡回グラフ（DAG）を組み立てられます。",[286,1071,1073],{"id":1072},"近道ワークフローの変換はgitlab-duoに任せる","近道：ワークフローの変換はGitLab Duoに任せる",[12,1075,1076,1081,1082,1084,1085,1090],{},[21,1077,1080],{"href":1078,"rel":1079},"https://about.gitlab.com/ja-jp/gitlab-duo-agent-platform/",[],"GitLab Duo Agent Platform","には、GitHub Actionsのワークフローを",[195,1083,241],{},"へ書き換える",[21,1086,1089],{"href":1087,"rel":1088},"https://docs.gitlab.com/ja-jp/user/duo_agent_platform/flows/foundational_flows/convert_to_gitlab_ci/",[],"GitLab CI/CD変換フロー","が用意されています。ゼロから書き直すのではなく、できあがったドラフトをレビューするところから始められます。",[12,1092,1093],{},"GitLab Duoが役立つのは、変換だけではありません。移行の全工程が対象です。",[46,1095,1096,1102,1108,1114,1120,1130],{},[49,1097,1098,1101],{},[53,1099,1100],{},"計画","：ワークフローファイルをもとに、リポジトリごとの移行計画と複雑度の評価を生成",[49,1103,1104,1107],{},[53,1105,1106],{},"変換","：GitLab CI/CD変換フローが、マトリクスビルド、ジョブの依存関係、アーティファクト、条件付きルールを保ったまま、ActionsのワークフローをGitLab CI/CDへ書き換え",[49,1109,1110,1113],{},[53,1111,1112],{},"ドキュメント","：README、バッジ、リンクを更新（例：「Pull Request」→「Merge Request」）",[49,1115,1116,1119],{},[53,1117,1118],{},"検証","：インポートされた件数を突き合わせ、欠けているものを洗い出し",[49,1121,1122,1125,1126,1129],{},[53,1123,1124],{},"デバッグ","：",[53,1127,1128],{},"Fix CI/CD pipelineフロー","が失敗したジョブを分析し、原因を特定して修正案を提示",[49,1131,1132,1135,1136,1138],{},[53,1133,1134],{},"クリーンアップ","：キャッシュ、",[195,1137,1068],{},"によるDAG、CI/CDコンポーネントなど、GitLabらしい最適化を提案",[12,1140,1141,1146,1147,1149,1150,1155],{},[21,1142,1145],{"href":1143,"rel":1144},"https://docs.gitlab.com/ja-jp/user/gitlab_duo_chat/agentic_chat/",[],"GitLab Duo Agentic Chat","は、イシュー、マージリクエスト、パイプラインからコンテキストを取り込み、プラットフォーム内で質問に答えます。Web IDEで",[195,1148,241],{},"を編集する際は、",[21,1151,1154],{"href":1152,"rel":1153},"https://docs.gitlab.com/ja-jp/user/project/repository/code_suggestions/",[],"Duoコード提案","も心強い味方に。",[12,1157,1158],{},"GitLab Duoを利用できない環境でも、構造化したプロンプトをフロンティアモデルに与えれば、同じ変換が十分に機能します。安定した結果が得られるプロンプトの例がこちらです。",[884,1160,1161],{},[12,1162,1163,1164,1166],{},"このGitHub ActionsワークフローをGitLab CI/CDに変換してください。マトリクスビルド、ジョブの依存関係、アーティファクト、条件付きルールは保持すること。出力は有効な",[195,1165,241],{},"とします。",[12,1168,1169,1170,1175],{},"移行でAIアシスタントを使うときは、いくつかのガードレールを設けておきます。シークレット、トークン、社内ホスト名は絶対に貼り付けない。生成されたYAMLは必ずGitLabの",[21,1171,1174],{"href":1172,"rel":1173},"https://docs.gitlab.com/ja-jp/ci/yaml/lint/",[],"CI Lintツール","で検証する。そして出力は最終的なコミットではなく、レビュー前提のドラフトとして扱う。この3点です。",[286,1177,1179],{"id":1178},"手作業の場合対比で見る書き換え例","手作業の場合：対比で見る書き換え例",[12,1181,1182],{},"GitLab Duoにドラフトを作らせるにせよ、自分の手で書くにせよ、対応関係を目で見ておくと理解が早まります。まずは典型的なGitHub Actionsのビルド＆テストワークフローです。",[615,1184,1188],{"className":1185,"code":1186,"language":1187,"meta":620,"style":620},"language-yaml shiki shiki-themes github-light","name: CI\non: [push, pull_request]\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: actions/setup-node@v4\n        with: { node-version: '18' }\n      - run: npm install\n      - run: npm test\n      - run: npm run build\n","yaml",[195,1189,1190,1202,1222,1230,1237,1247,1254,1267,1278,1297,1309,1320],{"__ignoreMap":620},[624,1191,1192,1196,1199],{"class":626,"line":627},[624,1193,1195],{"class":1194},"shJU0","name",[624,1197,1198],{"class":665},": ",[624,1200,1201],{"class":638},"CI\n",[624,1203,1204,1207,1210,1213,1216,1219],{"class":626,"line":645},[624,1205,1206],{"class":634},"on",[624,1208,1209],{"class":665},": [",[624,1211,1212],{"class":638},"push",[624,1214,1215],{"class":665},", ",[624,1217,1218],{"class":638},"pull_request",[624,1220,1221],{"class":665},"]\n",[624,1223,1224,1227],{"class":626,"line":656},[624,1225,1226],{"class":1194},"jobs",[624,1228,1229],{"class":665},":\n",[624,1231,1232,1235],{"class":626,"line":674},[624,1233,1234],{"class":1194},"  build",[624,1236,1229],{"class":665},[624,1238,1239,1242,1244],{"class":626,"line":684},[624,1240,1241],{"class":1194},"    runs-on",[624,1243,1198],{"class":665},[624,1245,1246],{"class":638},"ubuntu-latest\n",[624,1248,1249,1252],{"class":626,"line":693},[624,1250,1251],{"class":1194},"    steps",[624,1253,1229],{"class":665},[624,1255,1256,1259,1262,1264],{"class":626,"line":699},[624,1257,1258],{"class":665},"      - ",[624,1260,1261],{"class":1194},"uses",[624,1263,1198],{"class":665},[624,1265,1266],{"class":638},"actions/checkout@v4\n",[624,1268,1269,1271,1273,1275],{"class":626,"line":705},[624,1270,1258],{"class":665},[624,1272,1261],{"class":1194},[624,1274,1198],{"class":665},[624,1276,1277],{"class":638},"actions/setup-node@v4\n",[624,1279,1280,1283,1286,1289,1291,1294],{"class":626,"line":711},[624,1281,1282],{"class":1194},"        with",[624,1284,1285],{"class":665},": { ",[624,1287,1288],{"class":1194},"node-version",[624,1290,1198],{"class":665},[624,1292,1293],{"class":638},"'18'",[624,1295,1296],{"class":665}," }\n",[624,1298,1299,1301,1304,1306],{"class":626,"line":717},[624,1300,1258],{"class":665},[624,1302,1303],{"class":1194},"run",[624,1305,1198],{"class":665},[624,1307,1308],{"class":638},"npm install\n",[624,1310,1311,1313,1315,1317],{"class":626,"line":723},[624,1312,1258],{"class":665},[624,1314,1303],{"class":1194},[624,1316,1198],{"class":665},[624,1318,1319],{"class":638},"npm test\n",[624,1321,1322,1324,1326,1328],{"class":626,"line":729},[624,1323,1258],{"class":665},[624,1325,1303],{"class":1194},[624,1327,1198],{"class":665},[624,1329,1330],{"class":638},"npm run build\n",[12,1332,1333,1334,1337,1338,1341,1342,1344],{},"続いて、同じ内容をGitLab CI/CDで書いたものです。checkoutが消え（GitLabが自動でクローンします）、",[195,1335,1336],{},"runs-on","は",[195,1339,1340],{},"image","になり、各ステップは",[195,1343,951],{},"内の1行に変わります。",[615,1346,1348],{"className":1185,"code":1347,"language":1187,"meta":620,"style":620},"stages: [test, build]\n\n# GitLabが管理するSASTは、たった1行で追加できる\n# 移行のタイミングで導入すると効果的\ninclude:\n  - template: Jobs/SAST.gitlab-ci.yml\n\ntest:\n  stage: test\n  image: node:18\n  script:\n    - npm install\n    - npm test\n\nbuild:\n  stage: build\n  image: node:18\n  script:\n    - npm install\n    - npm run build\n  artifacts:\n    paths: [dist/]\n",[195,1349,1350,1367,1373,1379,1384,1391,1404,1408,1414,1424,1434,1441,1448,1454,1458,1464,1474,1483,1490,1497,1504,1512],{"__ignoreMap":620},[624,1351,1352,1355,1357,1360,1362,1365],{"class":626,"line":627},[624,1353,1354],{"class":1194},"stages",[624,1356,1209],{"class":665},[624,1358,1359],{"class":638},"test",[624,1361,1215],{"class":665},[624,1363,1364],{"class":638},"build",[624,1366,1221],{"class":665},[624,1368,1369],{"class":626,"line":645},[624,1370,1372],{"emptyLinePlaceholder":1371},true,"\n",[624,1374,1375],{"class":626,"line":656},[624,1376,1378],{"class":1377},"sAwPA","# GitLabが管理するSASTは、たった1行で追加できる\n",[624,1380,1381],{"class":626,"line":674},[624,1382,1383],{"class":1377},"# 移行のタイミングで導入すると効果的\n",[624,1385,1386,1389],{"class":626,"line":684},[624,1387,1388],{"class":1194},"include",[624,1390,1229],{"class":665},[624,1392,1393,1396,1399,1401],{"class":626,"line":693},[624,1394,1395],{"class":665},"  - ",[624,1397,1398],{"class":1194},"template",[624,1400,1198],{"class":665},[624,1402,1403],{"class":638},"Jobs/SAST.gitlab-ci.yml\n",[624,1405,1406],{"class":626,"line":699},[624,1407,1372],{"emptyLinePlaceholder":1371},[624,1409,1410,1412],{"class":626,"line":705},[624,1411,1359],{"class":1194},[624,1413,1229],{"class":665},[624,1415,1416,1419,1421],{"class":626,"line":711},[624,1417,1418],{"class":1194},"  stage",[624,1420,1198],{"class":665},[624,1422,1423],{"class":638},"test\n",[624,1425,1426,1429,1431],{"class":626,"line":717},[624,1427,1428],{"class":1194},"  image",[624,1430,1198],{"class":665},[624,1432,1433],{"class":638},"node:18\n",[624,1435,1436,1439],{"class":626,"line":723},[624,1437,1438],{"class":1194},"  script",[624,1440,1229],{"class":665},[624,1442,1443,1446],{"class":626,"line":729},[624,1444,1445],{"class":665},"    - ",[624,1447,1308],{"class":638},[624,1449,1450,1452],{"class":626,"line":735},[624,1451,1445],{"class":665},[624,1453,1319],{"class":638},[624,1455,1456],{"class":626,"line":741},[624,1457,1372],{"emptyLinePlaceholder":1371},[624,1459,1460,1462],{"class":626,"line":747},[624,1461,1364],{"class":1194},[624,1463,1229],{"class":665},[624,1465,1467,1469,1471],{"class":626,"line":1466},16,[624,1468,1418],{"class":1194},[624,1470,1198],{"class":665},[624,1472,1473],{"class":638},"build\n",[624,1475,1477,1479,1481],{"class":626,"line":1476},17,[624,1478,1428],{"class":1194},[624,1480,1198],{"class":665},[624,1482,1433],{"class":638},[624,1484,1486,1488],{"class":626,"line":1485},18,[624,1487,1438],{"class":1194},[624,1489,1229],{"class":665},[624,1491,1493,1495],{"class":626,"line":1492},19,[624,1494,1445],{"class":665},[624,1496,1308],{"class":638},[624,1498,1500,1502],{"class":626,"line":1499},20,[624,1501,1445],{"class":665},[624,1503,1330],{"class":638},[624,1505,1507,1510],{"class":626,"line":1506},21,[624,1508,1509],{"class":1194},"  artifacts",[624,1511,1229],{"class":665},[624,1513,1515,1518,1520,1523],{"class":626,"line":1514},22,[624,1516,1517],{"class":1194},"    paths",[624,1519,1209],{"class":665},[624,1521,1522],{"class":638},"dist/",[624,1524,1221],{"class":665},[12,1526,1527,1528,1530,1531,1533],{},"マトリクスビルドの対応も同じくらい素直です。",[195,1529,1018],{},"が",[195,1532,1023],{},"になります。",[615,1535,1537],{"className":1185,"code":1536,"language":1187,"meta":620,"style":620},"test:\n  image: node:${NODE_VERSION}\n  parallel:\n    matrix:\n      - NODE_VERSION: ['16', '18', '20']\n  script:\n    - npm install\n    - npm test\n",[195,1538,1539,1545,1554,1561,1568,1591,1597,1603],{"__ignoreMap":620},[624,1540,1541,1543],{"class":626,"line":627},[624,1542,1359],{"class":1194},[624,1544,1229],{"class":665},[624,1546,1547,1549,1551],{"class":626,"line":645},[624,1548,1428],{"class":1194},[624,1550,1198],{"class":665},[624,1552,1553],{"class":638},"node:${NODE_VERSION}\n",[624,1555,1556,1559],{"class":626,"line":656},[624,1557,1558],{"class":1194},"  parallel",[624,1560,1229],{"class":665},[624,1562,1563,1566],{"class":626,"line":674},[624,1564,1565],{"class":1194},"    matrix",[624,1567,1229],{"class":665},[624,1569,1570,1572,1575,1577,1580,1582,1584,1586,1589],{"class":626,"line":684},[624,1571,1258],{"class":665},[624,1573,1574],{"class":1194},"NODE_VERSION",[624,1576,1209],{"class":665},[624,1578,1579],{"class":638},"'16'",[624,1581,1215],{"class":665},[624,1583,1293],{"class":638},[624,1585,1215],{"class":665},[624,1587,1588],{"class":638},"'20'",[624,1590,1221],{"class":665},[624,1592,1593,1595],{"class":626,"line":693},[624,1594,1438],{"class":1194},[624,1596,1229],{"class":665},[624,1598,1599,1601],{"class":626,"line":699},[624,1600,1445],{"class":665},[624,1602,1308],{"class":638},[624,1604,1605,1607],{"class":626,"line":705},[624,1606,1445],{"class":665},[624,1608,1319],{"class":638},[12,1610,1611,1612,1614],{},"条件付きデプロイは",[195,1613,966],{},"へ対応します。",[615,1616,1618],{"className":1185,"code":1617,"language":1187,"meta":620,"style":620},"deploy:\n  stage: deploy\n  script: ./deploy.sh\n  rules:\n    - if: $CI_COMMIT_BRANCH == \"main\"\n",[195,1619,1620,1627,1636,1645,1652],{"__ignoreMap":620},[624,1621,1622,1625],{"class":626,"line":627},[624,1623,1624],{"class":1194},"deploy",[624,1626,1229],{"class":665},[624,1628,1629,1631,1633],{"class":626,"line":645},[624,1630,1418],{"class":1194},[624,1632,1198],{"class":665},[624,1634,1635],{"class":638},"deploy\n",[624,1637,1638,1640,1642],{"class":626,"line":656},[624,1639,1438],{"class":1194},[624,1641,1198],{"class":665},[624,1643,1644],{"class":638},"./deploy.sh\n",[624,1646,1647,1650],{"class":626,"line":674},[624,1648,1649],{"class":1194},"  rules",[624,1651,1229],{"class":665},[624,1653,1654,1656,1659,1661],{"class":626,"line":684},[624,1655,1445],{"class":665},[624,1657,1658],{"class":1194},"if",[624,1660,1198],{"class":665},[624,1662,1663],{"class":638},"$CI_COMMIT_BRANCH == \"main\"\n",[12,1665,1666,1668,1669,1674],{},[195,1667,241],{},"をコミットすれば、GitLabはすぐにパイプラインを実行します。\n詳しくは",[21,1670,1673],{"href":1671,"rel":1672},"https://docs.gitlab.com/ja-jp/ci/",[],"GitLab CI/CDのドキュメント","をご覧ください。",[84,1676,79],{"id":1677},"gitlabがインポートに対応しているその他のプラットフォーム",[12,1679,1680],{},"移行元はGitHubだけではありません。GitLabのインポーターは、次のプラットフォームからのワンクリック移行に対応しています。",[46,1682,1683,1690,1697,1704,1711,1718,1725],{},[49,1684,1685],{},[21,1686,1689],{"href":1687,"rel":1688},"https://docs.gitlab.com/ja-jp/user/project/import/bitbucket/",[],"Bitbucket Cloud",[49,1691,1692],{},[21,1693,1696],{"href":1694,"rel":1695},"https://docs.gitlab.com/ja-jp/user/project/import/bitbucket_server/",[],"Bitbucket Server（Stash）",[49,1698,1699],{},[21,1700,1703],{"href":1701,"rel":1702},"https://docs.gitlab.com/ja-jp/user/project/import/fogbugz/",[],"FogBugz",[49,1705,1706],{},[21,1707,1710],{"href":1708,"rel":1709},"https://docs.gitlab.com/ja-jp/user/import/gitea/",[],"Gitea",[49,1712,1713],{},[21,1714,1717],{"href":1715,"rel":1716},"https://docs.gitlab.com/ja-jp/user/project/import/repo_by_url/",[],"URLによるリポジトリ",[49,1719,1720],{},[21,1721,1724],{"href":1722,"rel":1723},"https://docs.gitlab.com/ja-jp/user/project/import/manifest/",[],"マニフェストファイル（AOSP）",[49,1726,1727],{},[21,1728,1731],{"href":1729,"rel":1730},"https://docs.gitlab.com/ja-jp/user/project/import/jira/",[],"Jira（イシューのみ）",[12,1733,1734],{},"次の移行元については、ドキュメントを用意しています。",[46,1736,1737,1744,1751,1758,1765],{},[49,1738,1739],{},[21,1740,1743],{"href":1741,"rel":1742},"https://docs.gitlab.com/ja-jp/user/import/#import-from-subversion",[],"SVN",[49,1745,1746],{},[21,1747,1750],{"href":1748,"rel":1749},"https://docs.gitlab.com/ja-jp/user/project/import/clearcase/",[],"ClearCase",[49,1752,1753],{},[21,1754,1757],{"href":1755,"rel":1756},"https://docs.gitlab.com/ja-jp/user/project/import/cvs/",[],"CVS",[49,1759,1760],{},[21,1761,1764],{"href":1762,"rel":1763},"https://docs.gitlab.com/ja-jp/user/project/import/perforce/",[],"Perforce",[49,1766,1767],{},[21,1768,1771],{"href":1769,"rel":1770},"https://docs.gitlab.com/ja-jp/user/project/import/tfvc/",[],"TFVC",[1773,1774],"hr",{},[12,1776,1777],{},"最後までお読みいただき、ありがとうございました。新しいプラットフォームを採用するうえで、移行は必ずしも恐れるべき工程ではありません。\nデータの移行はGitLabが自動で行い、CI/CDの変換はGitLab Duoが引き受けます。開発チームは、本来のリリース作業に集中できるはずです。\n詳しくは以下のリンクをご覧ください。",[46,1779,1780,1787,1794,1800,1807,1812],{},[49,1781,1782],{},[21,1783,1786],{"href":1784,"rel":1785},"https://about.gitlab.com/ja-jp/free-trial/",[],"GitLabを無料で試す",[49,1788,1789],{},[21,1790,1793],{"href":1791,"rel":1792},"https://about.gitlab.com/ja-jp/services/",[],"移行の支援サービスについて相談する",[49,1795,1796],{},[21,1797,1799],{"href":93,"rel":1798},[],"GitHubからGitLabへのプロジェクト移行ドキュメント",[49,1801,1802],{},[21,1803,1806],{"href":1804,"rel":1805},"https://docs.gitlab.com/ja-jp/user/project/import/#available-project-importers",[],"利用できるプロジェクトインポーター",[49,1808,1809],{},[21,1810,1080],{"href":1078,"rel":1811},[],[49,1813,1814],{},[21,1815,1673],{"href":1671,"rel":1816},[],[1818,1819,1820],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":620,"searchDepth":645,"depth":645,"links":1822},[1823,1826,1829,1835,1836,1840],{"id":86,"depth":645,"text":87,"children":1824},[1825],{"id":288,"depth":656,"text":288},{"id":348,"depth":645,"text":348,"children":1827},[1828],{"id":438,"depth":656,"text":438},{"id":455,"depth":645,"text":455,"children":1830},[1831,1832,1833,1834],{"id":461,"depth":656,"text":462},{"id":564,"depth":656,"text":565},{"id":603,"depth":656,"text":604},{"id":790,"depth":656,"text":790},{"id":822,"depth":645,"text":823},{"id":897,"depth":645,"text":898,"children":1837},[1838,1839],{"id":1072,"depth":656,"text":1073},{"id":1178,"depth":656,"text":1179},{"id":1677,"depth":645,"text":79},"devsecops","2023-07-11","GitLabのプロジェクトインポーターとGitLab Duo AIを使えば、GitHubからの移行はこれほど簡単になります。","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773856365/gsx2c0vqlswox3ldmq88.jpg",{},"/ja-jp/blog/github-to-gitlab-migration-made-easy",{"ogTitle":5,"ogImage":1847,"ogDescription":1851,"ogSiteName":1852,"noIndex":1846,"ogType":1853,"ogUrl":1854,"title":1855,"canonicalUrls":1856,"description":1851},"GitLabのプロジェクトインポーターを使えば、リポジトリ、イシュー、プルリクエストの大半は自動で移行できます。GitHub ActionsからGitLab CI/CDへの変換もGitLab Duoが支援。前提要件から3つのインポート方法、移行後の確認までを解説します。","https://about.gitlab.com","article","https://about.gitlab.com/blog/github-to-gitlab-migration-made-easy","GitHubからGitLabへの移行を、驚くほど簡単に：実践ガイド","https://about.gitlab.com/ja-jp/blog/github-to-gitlab-migration-made-easy","github-to-gitlab-migration-made-easy","ja-jp/blog/github-to-gitlab-migration-made-easy",[1860,1861,25,1862,1863],"CI/CD","tutorial","DevSecOps platform","AI","BlogPost","2026-08-19","1fIh-SbIbrJSUG1DV3PWxkCxatu2fb-D3QEvFVCYrks",{"logo":1868,"freeTrial":1873,"sales":1878,"login":1883,"items":1888,"search":2207,"minimal":2239,"duo":2257,"switchNav":2266,"pricingDeployment":2277},{"config":1869},{"href":1870,"dataGaName":1871,"dataGaLocation":1872},"/ja-jp/","gitlab logo","header",{"text":1874,"config":1875},"無料トライアルを開始",{"href":1876,"dataGaName":1877,"dataGaLocation":1872},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp&glm_content=default-saas-trial/","free trial",{"text":1879,"config":1880},"デモをリクエスト",{"href":1881,"dataGaName":1882,"dataGaLocation":1872},"/ja-jp/sales/?contact-topic=request-demo","sales",{"text":1884,"config":1885},"サインイン",{"href":1886,"dataGaName":1887,"dataGaLocation":1872},"https://gitlab.com/users/sign_in/","sign in",[1889,1964,2052,2057,2132,2185],{"text":1890,"left":1371,"config":1891,"menu":1893},"プラットフォーム",{"dataNavLevelOne":1892},"platform",{"type":1894,"link":1895,"columns":1899,"feature":1953},"lists",{"text":1896,"config":1897},"プラットフォームを詳しく見る",{"href":1898,"dataGaName":1892,"dataGaLocation":1872},"/ja-jp/platform/",[1900,1917,1935],{"title":1901,"items":1902},"実行とワークフロー",[1903,1907,1912],{"text":1860,"config":1904},{"href":1905,"dataGaLocation":1872,"dataGaName":1906},"/ja-jp/solutions/continuous-integration/","ci/cd",{"text":1908,"config":1909},"ソースコード管理",{"href":1910,"dataGaLocation":1872,"dataGaName":1911},"/ja-jp/solutions/source-code-management/","source code management",{"text":1913,"config":1914},"アジャイルデリバリー",{"href":1915,"dataGaLocation":1872,"dataGaName":1916},"/ja-jp/solutions/agile-delivery/","agile delivery",{"title":1918,"items":1919},"セキュリティとガバナンス",[1920,1925,1930],{"text":1921,"config":1922},"アプリケーションセキュリティテスト",{"href":1923,"dataGaLocation":1872,"dataGaName":1924},"/ja-jp/solutions/application-security-testing/","application security testing",{"text":1926,"config":1927},"ガバナンスとコンプライアンス",{"href":1928,"dataGaLocation":1872,"dataGaName":1929},"/ja-jp/solutions/software-compliance/","governance and compliance",{"text":1931,"config":1932},"サプライチェーンセキュリティ",{"href":1933,"dataGaLocation":1872,"dataGaName":1934},"/ja-jp/solutions/supply-chain/","supply chain security",{"title":1936,"items":1937},"コンテキストとAI",[1938,1943,1948],{"text":1939,"config":1940},"エージェント型オーケストレーション",{"href":1941,"dataGaLocation":1872,"dataGaName":1942},"/ja-jp/gitlab-duo-agent-platform/","agentic orchestration",{"text":1944,"config":1945},"コンテキストグラフ",{"href":1946,"dataGaLocation":1872,"dataGaName":1947},"/ja-jp/gitlab-orbit/","context graph",{"text":1949,"config":1950},"可視性と測定",{"href":1951,"dataGaLocation":1872,"dataGaName":1952},"/ja-jp/solutions/visibility-measurement/","visibility and measurement",{"config":1954,"title":1957,"text":1958,"link":1959},{"background":1955,"textColor":1956},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","GitLabが選ばれる理由","ひとつのプラットフォームで、ソフトウェアライフサイクル全体を通じてスピードと制御を両立できます。",{"text":1960,"config":1961},"詳細はこちら",{"href":1962,"dataGaName":1963,"dataGaLocation":1872},"/ja-jp/why-gitlab/","why gitlab",{"text":1965,"left":1371,"config":1966,"menu":1968},"ソリューション",{"dataNavLevelOne":1967},"solutions",{"type":1894,"link":1969,"columns":1973,"feature":2043},{"text":1970,"config":1971},"すべてのソリューションを表示",{"href":1972,"dataGaName":1967,"dataGaLocation":1872},"/ja-jp/solutions/",[1974,1992,2010],{"title":1975,"items":1976},"成果",[1977,1982,1987],{"text":1978,"config":1979},"DevOpsモダナイゼーション",{"href":1980,"dataGaLocation":1872,"dataGaName":1981},"/ja-jp/assessments/devops-modernization-assessment/","devops modernization",{"text":1983,"config":1984},"セキュリティモダナイゼーション",{"href":1985,"dataGaLocation":1872,"dataGaName":1986},"/ja-jp/assessments/security-modernization-assessment/","security modernization",{"text":1988,"config":1989},"AIモダナイゼーション",{"href":1990,"dataGaLocation":1872,"dataGaName":1991},"/ja-jp/assessments/ai-modernization-assessment/","ai modernization",{"title":1993,"items":1994},"規模別",[1995,2000,2005],{"text":1996,"config":1997},"エンタープライズ",{"href":1998,"dataGaLocation":1872,"dataGaName":1999},"/ja-jp/enterprise/","enterprise",{"text":2001,"config":2002},"スモールビジネス",{"href":2003,"dataGaLocation":1872,"dataGaName":2004},"/ja-jp/small-business/","small business",{"text":2006,"config":2007},"スタートアップ",{"href":2008,"dataGaLocation":1872,"dataGaName":2009},"/ja-jp/solutions/startups/","startups",{"title":2011,"items":2012},"業界",[2013,2018,2023,2028,2033,2038],{"text":2014,"config":2015},"金融サービス",{"href":2016,"dataGaLocation":1872,"dataGaName":2017},"/ja-jp/solutions/finance/","financial services",{"text":2019,"config":2020},"公共部門",{"href":2021,"dataGaLocation":1872,"dataGaName":2022},"/ja-jp/solutions/public-sector/","public sector",{"text":2024,"config":2025},"通信",{"href":2026,"dataGaLocation":1872,"dataGaName":2027},"/ja-jp/solutions/telecommunications/","telecommunications",{"text":2029,"config":2030},"自動車",{"href":2031,"dataGaLocation":1872,"dataGaName":2032},"/ja-jp/solutions/automotive/","automotive",{"text":2034,"config":2035},"教育",{"href":2036,"dataGaLocation":1872,"dataGaName":2037},"/ja-jp/solutions/education/","education",{"text":2039,"config":2040},"航空宇宙",{"href":2041,"dataGaLocation":1872,"dataGaName":2042},"/ja-jp/solutions/aerospace/","aerospace",{"config":2044,"title":2045,"text":2046,"link":2047},{"background":1955,"textColor":1956},"GitLab Transcend","前回のTranscendで発表された最新のイノベーションをご覧ください。",{"text":2048,"config":2049},"ブログを読む",{"href":2050,"dataGaName":2051,"dataGaLocation":1872},"/ja-jp/blog/gitlab-transcend-announcements/","gitlab transcend",{"text":2053,"config":2054},"価格",{"href":2055,"dataGaName":2056,"dataGaLocation":1872,"dataNavLevelOne":2056},"/ja-jp/pricing/","pricing",{"text":2058,"config":2059,"menu":2061},"関連リソース",{"dataNavLevelOne":2060},"resources",{"type":1894,"link":2062,"columns":2066,"feature":2123},{"text":2063,"config":2064},"すべてのリソースを表示",{"href":2065,"dataGaName":2060,"dataGaLocation":1872},"/ja-jp/resources/",[2067,2095],{"title":2068,"items":2069},"検索する",[2070,2075,2080,2085,2090],{"text":2071,"config":2072},"製品ドキュメント",{"href":2073,"dataGaName":2074,"dataGaLocation":1872},"https://docs.gitlab.com/","docs",{"text":2076,"config":2077},"GitLab University",{"href":2078,"dataGaName":2079,"dataGaLocation":1872},"https://university.gitlab.com/","university",{"text":2081,"config":2082},"技術デモ",{"href":2083,"dataGaName":2084,"dataGaLocation":1872},"/ja-jp/gitlab-technical-demo-series/","demo series",{"text":2086,"config":2087},"インタラクティブデモ",{"href":2088,"dataGaName":2089,"dataGaLocation":1872},"/ja-jp/demo-hub/","demo hub",{"text":2091,"config":2092},"GitLabサービス",{"href":2093,"dataGaName":2094,"dataGaLocation":1872},"/ja-jp/services/","services",{"title":2096,"items":2097},"つなげる",[2098,2103,2108,2113,2118],{"text":2099,"config":2100},"ブログ",{"href":2101,"dataGaName":2102,"dataGaLocation":1872},"/ja-jp/blog/","blog",{"text":2104,"config":2105},"コミュニティ",{"href":2106,"dataGaName":2107,"dataGaLocation":1872},"/community/","community",{"text":2109,"config":2110},"お客様事例",{"href":2111,"dataGaName":2112,"dataGaLocation":1872},"/ja-jp/customers/","customers",{"text":2114,"config":2115},"パートナー",{"href":2116,"dataGaName":2117,"dataGaLocation":1872},"/ja-jp/partners/","partners",{"text":2119,"config":2120},"イベント",{"href":2121,"dataGaName":2122,"dataGaLocation":1872},"/events/","events",{"config":2124,"title":2125,"text":2126,"link":2127},{"background":1955,"textColor":1956},"GitLabの最新情報","最新の機能と改善点に関する情報をお届けします。",{"text":2128,"config":2129},"最新情報を読む",{"href":2130,"dataGaName":2131,"dataGaLocation":1872},"/ja-jp/whats-new/","whats new",{"text":2133,"config":2134,"menu":2136},"企業情報",{"dataNavLevelOne":2135},"company",{"type":1894,"columns":2137},[2138],{"items":2139},[2140,2145,2150,2155,2160,2165,2170,2175,2180],{"text":2141,"config":2142},"GitLabについて",{"href":2143,"dataGaName":2144,"dataGaLocation":1872},"/ja-jp/company/","about",{"text":2146,"config":2147,"footerGa":2149},"採用情報",{"href":2148,"dataGaName":1226,"dataGaLocation":1872},"/jobs/",{"dataGaName":1226},{"text":2151,"config":2152},"プレス",{"href":2153,"dataGaName":2154,"dataGaLocation":1872},"/press/","press",{"text":2156,"config":2157},"ハンドブック",{"href":2158,"dataGaName":2159,"dataGaLocation":1872},"https://handbook.gitlab.com/","handbook",{"text":2161,"config":2162},"経営陣",{"href":2163,"dataGaName":2164,"dataGaLocation":1872},"/company/team/e-group/","leadership",{"text":2166,"config":2167},"投資家向け情報",{"href":2168,"dataGaName":2169,"dataGaLocation":1872},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":2171,"config":2172},"トラストセンター",{"href":2173,"dataGaName":2174,"dataGaLocation":1872},"/ja-jp/security/","trust center",{"text":2176,"config":2177},"AI Transparency Center",{"href":2178,"dataGaName":2179,"dataGaLocation":1872},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":2181,"config":2182},"ニュースレター",{"href":2183,"dataGaName":2184,"dataGaLocation":1872},"/company/contact/#contact-forms","newsletter",{"text":2186,"config":2187,"menu":2188},"お問い合わせ",{"dataNavLevelOne":2135},{"type":1894,"columns":2189},[2190],{"items":2191},[2192,2197,2202],{"text":2193,"config":2194},"お問い合わせはこちら",{"href":2195,"dataGaName":2196,"dataGaLocation":1872},"/ja-jp/sales/","talk to sales",{"text":2198,"config":2199},"サポートポータル",{"href":2200,"dataGaName":2201,"dataGaLocation":1872},"https://support.gitlab.com/hc/en-us","support portal",{"text":2203,"config":2204},"カスタマーポータル",{"href":2205,"dataGaName":2206,"dataGaLocation":1872},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":2208,"login":2209,"suggestions":2215},"閉じる",{"text":2210,"link":2211},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":374,"config":2212},{"href":1886,"dataGaName":2213,"dataGaLocation":2214},"search login","search",{"text":2216,"default":2217},"提案",[2218,2220,2225,2227,2231,2235],{"text":1080,"config":2219},{"href":1941,"dataGaName":1080,"dataGaLocation":2214},{"text":2221,"config":2222},"コード提案（AI）",{"href":2223,"dataGaName":2224,"dataGaLocation":2214},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":1860,"config":2226},{"href":1905,"dataGaName":1860,"dataGaLocation":2214},{"text":2228,"config":2229},"GitLab on AWS",{"href":2230,"dataGaName":2228,"dataGaLocation":2214},"/ja-jp/partners/technology-partners/aws/",{"text":2232,"config":2233},"GitLab on Google Cloud",{"href":2234,"dataGaName":2232,"dataGaLocation":2214},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":2236,"config":2237},"GitLabを選ぶ理由",{"href":1962,"dataGaName":2238,"dataGaLocation":2214},"Why GitLab?",{"freeTrial":2240,"mobileIcon":2244,"desktopIcon":2249,"secondaryButton":2252},{"text":1874,"config":2241},{"href":2242,"dataGaName":1877,"dataGaLocation":2243},"https://gitlab.com/-/trials/new/","nav",{"altText":2245,"config":2246},"GitLabアイコン",{"src":2247,"dataGaName":2248,"dataGaLocation":2243},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":2245,"config":2250},{"src":2251,"dataGaName":2248,"dataGaLocation":2243},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":2253,"config":2254},"はじめに",{"href":2255,"dataGaName":2256,"dataGaLocation":2243},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":2258,"mobileIcon":2262,"desktopIcon":2264},{"text":2259,"config":2260},"GitLab Duoの詳細はこちら",{"href":1941,"dataGaName":2261,"dataGaLocation":2243},"gitlab duo",{"altText":2245,"config":2263},{"src":2247,"dataGaName":2248,"dataGaLocation":2243},{"altText":2245,"config":2265},{"src":2251,"dataGaName":2248,"dataGaLocation":2243},{"button":2267,"mobileIcon":2272,"desktopIcon":2274},{"text":2268,"config":2269},"/switch",{"href":2270,"dataGaName":2271,"dataGaLocation":2243},"#contact","switch",{"altText":2245,"config":2273},{"src":2247,"dataGaName":2248,"dataGaLocation":2243},{"altText":2245,"config":2275},{"src":2276,"dataGaName":2248,"dataGaLocation":2243},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":2278,"mobileIcon":2283,"desktopIcon":2285},{"text":2279,"config":2280},"料金ページに戻る",{"href":2055,"dataGaName":2281,"dataGaLocation":2243,"icon":2282},"back to pricing","GoBack",{"altText":2245,"config":2284},{"src":2247,"dataGaName":2248,"dataGaLocation":2243},{"altText":2245,"config":2286},{"src":2251,"dataGaName":2248,"dataGaLocation":2243},{"title":2288,"titleMobile":2289,"button":2290,"config":2296},"【10月9日開催】AI駆動開発の最前線を、日本企業8社の実例から学ぶ","10月9日開催｜AI駆動開発の最前線を学ぶ",{"text":2291,"config":2292},"無料で申し込む",{"href":2293,"dataGaName":2294,"dataGaLocation":2295},"https://www.bs-event.jp/gitlab-epic-tour-japan-2026/?r=gitLab-page","epic-tour-japan-2026-banner","global-banner",{"layout":2297,"disabled":1846},"release",{"data":2299},{"text":2300,"source":2301,"edit":2307,"contribute":2312,"config":2317,"items":2322,"minimal":2541},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":2302,"config":2303},"ページのソースを表示",{"href":2304,"dataGaName":2305,"dataGaLocation":2306},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":2308,"config":2309},"このページを編集",{"href":2310,"dataGaName":2311,"dataGaLocation":2306},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":2313,"config":2314},"ご協力をお願いします",{"href":2315,"dataGaName":2316,"dataGaLocation":2306},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":2318,"facebook":2319,"youtube":2320,"linkedin":2321},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[2323,2369,2422,2465,2508],{"title":2053,"links":2324,"subMenu":2339},[2325,2329,2334],{"text":2326,"config":2327},"プランの表示",{"href":2055,"dataGaName":2328,"dataGaLocation":2306},"view plans",{"text":2330,"config":2331},"Premiumを選ぶ理由",{"href":2332,"dataGaName":2333,"dataGaLocation":2306},"/ja-jp/pricing/premium/","why premium",{"text":2335,"config":2336},"Ultimateを選ぶ理由",{"href":2337,"dataGaName":2338,"dataGaLocation":2306},"/ja-jp/pricing/ultimate/","why ultimate",[2340],{"title":2186,"links":2341},[2342,2345,2347,2349,2354,2359,2364],{"text":2343,"config":2344},"営業担当へのお問い合わせ",{"href":2195,"dataGaName":1882,"dataGaLocation":2306},{"text":2198,"config":2346},{"href":2200,"dataGaName":2201,"dataGaLocation":2306},{"text":2203,"config":2348},{"href":2205,"dataGaName":2206,"dataGaLocation":2306},{"text":2350,"config":2351},"ステータス",{"href":2352,"dataGaName":2353,"dataGaLocation":2306},"https://status.gitlab.com/","status",{"text":2355,"config":2356},"利用規約",{"href":2357,"dataGaName":2358,"dataGaLocation":2306},"/terms/","terms of use",{"text":2360,"config":2361},"プライバシーに関する声明",{"href":2362,"dataGaName":2363,"dataGaLocation":2306},"/ja-jp/privacy/","privacy statement",{"text":2365,"config":2366},"Cookie設定",{"dataGaName":2367,"dataGaLocation":2306,"id":2368,"isOneTrustButton":1371},"cookie preferences","ot-sdk-btn",{"title":1890,"links":2370,"subMenu":2381},[2371,2373,2375,2377,2379],{"text":1896,"config":2372},{"href":1898,"dataGaName":1892,"dataGaLocation":2306},{"text":1939,"config":2374},{"href":1941,"dataGaName":1942,"dataGaLocation":2306},{"text":1860,"config":2376},{"href":1905,"dataGaName":1906,"dataGaLocation":2306},{"text":1944,"config":2378},{"href":1946,"dataGaName":1947,"dataGaLocation":2306},{"text":1957,"config":2380},{"href":1962,"dataGaName":1963,"dataGaLocation":2306},[2382],{"title":2383,"links":2384},"トピック",[2385,2389,2394,2399,2404,2407,2412,2417],{"text":1860,"config":2386},{"href":2387,"dataGaName":2388,"dataGaLocation":2306},"/ja-jp/topics/ci-cd/","cicd",{"text":2390,"config":2391},"GitOps",{"href":2392,"dataGaName":2393,"dataGaLocation":2306},"/ja-jp/topics/gitops/","gitops",{"text":2395,"config":2396},"DevOps",{"href":2397,"dataGaName":2398,"dataGaLocation":2306},"/ja-jp/topics/devops/","devops",{"text":2400,"config":2401},"バージョン管理",{"href":2402,"dataGaName":2403,"dataGaLocation":2306},"/ja-jp/topics/version-control/","version control",{"text":25,"config":2405},{"href":2406,"dataGaName":1841,"dataGaLocation":2306},"/ja-jp/topics/devsecops/",{"text":2408,"config":2409},"クラウドネイティブ",{"href":2410,"dataGaName":2411,"dataGaLocation":2306},"/ja-jp/topics/cloud-native/","cloud native",{"text":2413,"config":2414},"コーディングのためのAI",{"href":2415,"dataGaName":2416,"dataGaLocation":2306},"/ja-jp/topics/devops/ai-for-coding/","ai for coding",{"text":2418,"config":2419},"エージェント型AI",{"href":2420,"dataGaName":2421,"dataGaLocation":2306},"/ja-jp/topics/agentic-ai/","agentic ai",{"title":1965,"links":2423},[2424,2426,2428,2430,2432,2435,2437,2439,2441,2443,2445,2447,2449,2452,2456,2461],{"text":1978,"config":2425},{"href":1980,"dataGaName":1981,"dataGaLocation":2306},{"text":1983,"config":2427},{"href":1985,"dataGaName":1986,"dataGaLocation":2306},{"text":1988,"config":2429},{"href":1990,"dataGaName":1991,"dataGaLocation":2306},{"text":2014,"config":2431},{"href":2016,"dataGaName":2017,"dataGaLocation":2306},{"text":2433,"config":2434},"公共機関",{"href":2021,"dataGaName":2022,"dataGaLocation":2306},{"text":2024,"config":2436},{"href":2026,"dataGaName":2027,"dataGaLocation":2306},{"text":2029,"config":2438},{"href":2031,"dataGaName":2032,"dataGaLocation":2306},{"text":2034,"config":2440},{"href":2036,"dataGaName":2037,"dataGaLocation":2306},{"text":2039,"config":2442},{"href":2041,"dataGaName":2042,"dataGaLocation":2306},{"text":1996,"config":2444},{"href":1998,"dataGaName":1999,"dataGaLocation":2306},{"text":2001,"config":2446},{"href":2003,"dataGaName":2004,"dataGaLocation":2306},{"text":2006,"config":2448},{"href":2008,"dataGaName":2009,"dataGaLocation":2306},{"text":2390,"config":2450},{"href":2451,"dataGaName":2393,"dataGaLocation":2306},"/ja-jp/solutions/gitops/",{"text":2453,"config":2454},"ソフトウェアコンポジション解析",{"href":1933,"dataGaName":2455,"dataGaLocation":2306},"software composition analysis",{"text":2457,"config":2458},"バリューストリーム管理",{"href":2459,"dataGaName":2460,"dataGaLocation":2306},"/ja-jp/solutions/value-stream-management/","value stream management",{"text":2462,"config":2463},"すべてのソリューション",{"href":1972,"dataGaName":2464,"dataGaLocation":2306},"all solutions",{"title":2466,"links":2467},"リソース",[2468,2473,2478,2481,2483,2485,2487,2489,2491,2493,2495,2497,2499,2501,2504],{"text":2469,"config":2470},"インストール",{"href":2471,"dataGaName":2472,"dataGaLocation":2306},"/ja-jp/install/","install",{"text":2474,"config":2475},"クイックスタートガイド",{"href":2476,"dataGaName":2477,"dataGaLocation":2306},"/ja-jp/get-started/","quick setup checklists",{"text":2071,"config":2479},{"href":2480,"dataGaName":2074,"dataGaLocation":2306},"https://docs.gitlab.com/ja-jp",{"text":2076,"config":2482},{"href":2078,"dataGaName":2079,"dataGaLocation":2306},{"text":2081,"config":2484},{"href":2083,"dataGaName":2084,"dataGaLocation":2306},{"text":2086,"config":2486},{"href":2088,"dataGaName":2089,"dataGaLocation":2306},{"text":2091,"config":2488},{"href":2093,"dataGaName":2094,"dataGaLocation":2306},{"text":2099,"config":2490},{"href":2101,"dataGaName":2102,"dataGaLocation":2306},{"text":2104,"config":2492},{"href":2106,"dataGaName":2107,"dataGaLocation":2306},{"text":2109,"config":2494},{"href":2111,"dataGaName":2112,"dataGaLocation":2306},{"text":2114,"config":2496},{"href":2116,"dataGaName":2117,"dataGaLocation":2306},{"text":2119,"config":2498},{"href":2121,"dataGaName":2122,"dataGaLocation":2306},{"text":2181,"config":2500},{"href":2183,"dataGaName":2184,"dataGaLocation":2306},{"text":2502,"config":2503},"最新リリース",{"href":2130,"dataGaName":2131,"dataGaLocation":2306},{"text":2505,"config":2506},"すべてのリソース",{"href":2065,"dataGaName":2507,"dataGaLocation":2306},"all resources",{"title":2509,"links":2510},"会社情報",[2511,2513,2515,2517,2519,2521,2523,2525,2527,2531,2536],{"text":2141,"config":2512},{"href":2143,"dataGaName":2135,"dataGaLocation":2306},{"text":2146,"config":2514},{"href":2148,"dataGaName":1226,"dataGaLocation":2306},{"text":2151,"config":2516},{"href":2153,"dataGaName":2154,"dataGaLocation":2306},{"text":2156,"config":2518},{"href":2158,"dataGaName":2159,"dataGaLocation":2306},{"text":2161,"config":2520},{"href":2163,"dataGaName":2164,"dataGaLocation":2306},{"text":2166,"config":2522},{"href":2168,"dataGaName":2169,"dataGaLocation":2306},{"text":2171,"config":2524},{"href":2173,"dataGaName":2174,"dataGaLocation":2306},{"text":2176,"config":2526},{"href":2178,"dataGaName":2179,"dataGaLocation":2306},{"text":2528,"config":2529},"Sustainability",{"href":2530,"dataGaName":2528,"dataGaLocation":2306},"/sustainability/",{"text":2532,"config":2533},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":2534,"dataGaName":2535,"dataGaLocation":2306},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":2537,"config":2538},"現代奴隷制の透明性に関する声明",{"href":2539,"dataGaName":2540,"dataGaLocation":2306},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":2542},[2543,2545,2547],{"text":2355,"config":2544},{"href":2357,"dataGaName":2358,"dataGaLocation":2306},{"text":2365,"config":2546},{"dataGaName":2367,"dataGaLocation":2306,"id":2368,"isOneTrustButton":1371},{"text":2360,"config":2548},{"href":2362,"dataGaName":2363,"dataGaLocation":2306},[2550],{"id":2551,"title":7,"body":1845,"config":2552,"content":2554,"description":1845,"extension":2558,"meta":2559,"navigation":1371,"path":2560,"seo":2561,"stem":2562,"__hash__":2563},"blogAuthors/en-us/blog/authors/fernando-diaz.yml",{"template":2553},"BlogAuthor",{"name":7,"config":2555},{"headshot":2556,"ctfId":2557},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659556/Blog/Author%20Headshots/fern_diaz.png","fjdiaz","yml",{},"/en-us/blog/authors/fernando-diaz",{},"en-us/blog/authors/fernando-diaz","lxRJIOydP4_yzYZvsPcuQevP9AYAKREF7i8QmmdnOWc",[2565,2573,2580],{"title":2566,"description":2567,"heroImage":2568,"category":1841,"date":2569,"authors":2570,"slug":2572,"externalUrl":1845},"数千人規模の開発を支えるGitLab環境の設計方法","数千人規模のデベロッパーを支えるGitLab環境は、どのように設計すべきでしょうか。デプロイモデルの選び方からRunnerのキャパシティ計画、高可用性とディザスタリカバリ、パイプラインのパフォーマンスまで、エンタープライズ規模のロールアウトを成功に導く判断ポイントとチェックリストを解説します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058602/epl3sinfezlzxnppxak6.png","2026-09-22",[2571],"GitLab","how-to-design-gitlab-for-enterprise-scale",{"title":2574,"description":2575,"heroImage":2576,"category":1841,"date":2577,"authors":2578,"slug":2579,"externalUrl":1845},"DevOpsプラットフォームの総保有コスト（TCO）を算出する方法","ツールチェーンのコストに見直しが求められていませんか。DevOpsプラットフォームの総保有コスト（TCO）を構成する要素を、CI/CDのコンピューティングからAI利用、セキュリティ、ツールの乱立まで整理し、年間コストの算出手順、比較の進め方、削減できる領域を解説します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778087000/qdfsf8kz6ebfnopx9v2e.png","2026-09-11",[2571],"how-to-calculate-devops-platform-total-cost-of-ownership",{"title":2581,"description":2582,"heroImage":2583,"category":1841,"date":2584,"authors":2585,"slug":2587,"externalUrl":1845},"GitLabで実現するGemini Enterpriseエージェント開発の内製化【イベントレポート】","Google Cloud Next Tokyo 26の来場者向けセッションに、GitLab合同会社、小松原つかさが登壇した模様をお伝えします。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1786927099/yslrrlhphzmll0fxjozt.jpg","2026-08-18",[2586],"GitLab Japan Team","event-report-google-cloud-next-tokyo-26",{"header":2589,"text":2590,"button":2594,"disclaimer":2597},"無料の\n\n30日間のGitLabトライアルを開始\n",[2591,2592,2593],"GitLab Duo Agent Platformへのアクセス","GitLabの最も高度な機能を試す","AIで複雑なタスクを自動化する",{"text":1874,"config":2595},{"href":2596,"dataGaName":1877,"dataGaLocation":2102},"https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/blog/","クレジットカードなしでご登録いただけます。",{"header":2599,"blurb":2600,"button":2601,"secondaryButton":2605},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":1874,"config":2602},{"href":2603,"dataGaName":1877,"dataGaLocation":2604},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":2186,"config":2606},{"href":2195,"dataGaName":1882,"dataGaLocation":2604},1790620179530]