All posts

組み込みシステムの開発をGitHubでスピードアップ

ソフトウェアやハードウェアが普及した世界で、GitHubはミッションクリティカルな組み込みシステムを安全に開発できるよう支援します。 ソフトウェアやハードウェアが普及した世界で、GitHubはミッションクリティカルな組み込みシステムを安全に開発できるよう支援します。 私たちが生きているこの世界は、想像以上にソフトウェアとハードウェアが密接しています。ハードウェアというと、まず何を思い浮かべますか?スマートフォン?ノートPC?洗濯機や自動車はどうでしょう?それとも、自宅のあちこちにあるたくさんのスマートホームデバイスのどれかでしょうか? このような組み込みシステムを産業的な視点から見ると、エレベーターから飛行機、製造ラインから信号機、医療機器から革新的なロボット工学の世界まで、チャンスは無限に広がっています。 これらのシステムは、基本的にソフトウェアに依存しています。従来、こうした機器に搭載されるソフトウェアの種類は、特定のタスクに特化したものでした。たとえば自動車では、エンジンやトランスミッションの管理といった機能面を扱うシステムや、エアバッグの展開、アンチロックブレーキシステムの制御など、安全上重要なシステムなどがあります。 私たちは毎日、このような制御システムに頼っていますが、日常生活でこれらのシステムが果たす役割について考えたことはないでしょう。結局のところ、アーサー・C・クラークが言ったとおり「十分に発達した科学技術は、魔法と見分けがつかない」のです。 DevOpsとは、エンドユーザに価値を提供し続けることです。これまで述べてきたような種類のシステムにとって、品質とセキュリティは譲ることのできない、基本的な要素です。自動車のISO 26262や医療機器のIEC 62304など、数え切れないほどある機能安全性規格のいずれであっても、規格に準拠しようとすると、開発プロセスは大幅に複雑になります。ISO 27001と新しいサイバーセキュリティに関する国連の規制要件がAUTOSARやMisraなどの産業コーディング規格に加わってくると、組み込み開発の世界では自動化する方法を見つけることがますます重要となるのもご理解いただけると思います。 このブログでは、この種のシステムを設計、構築、デプロイする際、開発ライフサイクル全体を通じてGitHubがどのような付加価値を提供できるかをご紹介します。 共同開発 ソフトウェア開発のスタート地点は、内容をよく理解したうえで計画を立てることです。チームが明確な計画を立て、コードを書き、ユーザーに素晴らしい体験を提供できるようになれば、開発も楽しく感じます。GitHubは、計画からビルド、デプロイ、継続的なフィードバックまで、ソフトウェア開発サイクルのすべての領域を支援します。 こうした作業の基盤となるのは、バージョン管理ソフトウェアです。2008年にスタートしたGitHubを、Gitのバージョン管理ができるプラットフォームとして認識している方も多いでしょう。(最近のGitHubではもっと多くの機能を利用できます!)2008年より以前は、ソースコード管理には様々な形態が用いられていました。 ソフトウェア開発の観点から見て、バージョン管理システムにコードを保存することは、現代のソフトウェアエンジニアリングの慣習から得られる多くのメリットを享受するために欠かせません。GitHubのGitリポジトリにコードを保存すると、以下のことが可能になります。 コードベース上の開発履歴を完全に追跡する。 エンジニアリングチームは個別のブランチで作業できるため、お互いの作業を妨げることなく開発を進められる。 必要に応じて、コードベースの以前のバージョンにロールバックする。 本番環境のコードベースにブランチ保護ルールを追加し、変更をマージする前にピアレビューを受けるか、自動化された一連の品質ゲートをパスしなければならないようにする。 その他、多数。 上記の内容から、こうした重要なシステムの開発にはバージョン管理が不可欠であることがわかります。詳細な変更履歴、ブランチ保護ルールによる品質ゲートの追加、Pull Requestによるピアレビューの義務化により、コンプライアンスは開発後に別途対応したりチェックリストを追加したりするものではなく、プロセスの一部として組み込まれます。 すべての作業の安全性 組込みシステムについてセキュリティの観点から考えてみましょう。自動車に搭載されている組み込みコンピュータを誰かに乗っ取られたとしたら、どうなるでしょうか?その影響は個々のシステムによって異なりますが、壊滅的なものになる可能性があります。安全装置に関するシステムであれば、人命の損失につながりかねません。 このような背景から、重要なシステムを構築する開発チームがセキュリティを優先すべきなのは当然のことです。GitHubでは、セキュリティは全員の責任であり、後回しにしたり、本稼働前に一度だけレビューすればよいものではないと考えています。むしろ、開発ワークフローに組み込めるものであり、組み込むべきものだと考えています。前述のコンプライアンスに対する考え方と同様に、日々の作業の一部となるべきものです。 GitHubでは、セキュリティのワークフローへの導入に役立つツールがいくつか用意されています。その一部をもう少しご紹介しましょう。 自分が書いたコードを保護 懸念すべき点として最初に思い浮かぶのは、自分が書くコードかもしれません。私たちは人間であり、完璧ではないので、常に完璧なコードを書けるわけではありません。先ほど、開発ライフサイクルに品質チェックを追加するオプションとして、ブランチ保護ルールをご紹介しました。その品質チェックの1つとしてセキュリティを追加し、書いたコードをレビューできるとしたらどうでしょう? そこで役立つのがGitHub Code Scanningです。この機能については、CodeQL (GitHub Code Scanningを強化するGitHubの組み込みコード解析エンジン)とサードパーティが提供するツールとの統合という2つの観点から考えることができます。 CodeQLは、C、C++、Java、Pythonなど、組み込みシステムを構築する際によく使われる言語をサポートしています。CodeQLは、コードをデータベースのような構造に変換します。変換後は、GitHubが作成した数々のクエリをすぐに使用できます。オープンソースコミュニティでこれらのクエリを拡張して、インジェクションやバッファオーバーフローの脆弱性など、コードベース内で生じるパターンを特定することも可能です。

Image of Chris Reddington

GitHubを利用する開発者、1億人突破(現在も増加中)

現在、GitHubを利用する開発者が世界中で1億人を突破しました。これが何を意味するのか、そしてなぜそれが始まりに過ぎないのか理由を説明します。  2019年、私たちは「GitHubを利用する開発者の数を2025年までに1億人にする」という目標を掲げました。より多くの開発者が1つのプラットフォームに集結すれば素晴らしいことが起こる、ということを知っているからです。  2023年1月25日(米国時間)、GitHubを使ってソフトウェアプロジェクトの開発、保守、貢献に携わっている開発者の数が正式に1億人を超えたという事実をお伝えできることを嬉しく思います。  予定より2年早く達成したというだけでなく、GitHubには今後も開発者を最優先に考える重責があることを表しています。  新しい開発者コミュニティ 2007年10月に最初のコードがGitHubにコミットされた時点では、開発者はどういう人々であるか、どのようなバックグラウンドを持っているのか、そして彼らの業務内容について、一般的にかなりイメージが固まっている傾向がありました。  しかし、今日の開発者は、テクノロジー企業でソフトウェアを開発している人だけではありません。さまざまな業界で働く多様でグローバルな人材が、空いた時間にコード、設計、ドキュメントに手直しを加えたり、オープンソースプロジェクトに貢献したり、科学的研究を実施したりしています。  2015年当時、GitHubの開発者の約3分の1は北米出身でした。現在は、米国から遠く離れた東南アジア、アフリカ、南米などの地域で、特に著しい成長が見られます。インドだけで、1,000万人を超える開発者がGitHubを使ってソフトウェアを開発しており、ブラジルでは、新たに300万人を超える開発者がGitHubを使っています。   このように地球規模でアイデアを交換することで、どのような人物で、何に取り組み、どこに住んでいるかに関係なく、開発の民主化により、多くの人々が開発に携わることができるようになります。開発者は現在、コードのコミット、ドキュメンテーションへの貢献、新しいソリューションの構築を通じて、新たな問題を世界レベルで解決しようと取り組んでいます。また、病院、映画製作、NASA、さらにAIと機械学習アプリケーションを強化するPyTorchプロジェクトのために、世界各地でソフトウェア開発に取り組んでいます。あるいは、最愛の人がコミュニケーションを取ったり、家族が病気を克服したりするのをサポートしたいと考えている人々でもあります。  すべての開発者にとってのホームを作る こうした責任の増大に伴い、開発者がより多くの成果を上げるために、単にツールを提供するだけではもはや十分ではありません。私たちは、開発者が作業に専念し、最高の力を発揮するために必要なものをすべて提供する必要があります。 「GitHubはすべての開発者にとってのホームである」これが私たちのビジョンです。Pull Requestの作成から、GitHub Copilotを使用したAIによる開発者支援まで、GitHubはすべてにおいて「開発者ファースト」を貫いています。しかし、これは始まりに過ぎません。GitHub Nextでは、私たちの研究開発チームがソフトウェア開発の未来を調査しています。Code BrushesからHey, GitHub!まで、GitHubがすべての開発者にとってのホームであるために、GitHub Nextは極めて重要な役割を果たしてきました。  1億人を超えて、さらに増え続ける開発者にとってのホームとして、GitHubはテクノロジーを利用できる新しい開発者を増やしたり、人々が連携して新たな成果を実現したり、人類の進歩を加速させたり、まだ把握できていない問題を解決できるよう手助けをするという責任を真剣に受け止めています。より多くの開発者が協力し、最高の力を発揮するために必要なすべてのものが揃うと、誰にとっても素晴らしいことが起きるからです。  ここから、共に構築していきましょう。 

Image of Thomas Dohmke

シークレットの漏洩が疑われる場合は、無料のGitHubアラートをご確認ください

GitHub上のパブリックリポジトリで漏洩したシークレットを無料で追跡できるようになりました。Secret scanningアラートを使えば、GitHub内で流出したシークレットを追跡し、対処することができます。 データ漏洩の原因として特に多いのがシークレットや認証情報を公開してしまうことですが、追跡が十分に行われることはあまり多くありません 1。こうしたデータ漏洩は特定までに平均327日かかり、認証情報の漏洩が深刻な結果につながる可能性があることが明らかとなっています。しかし依然として、企業は大規模な漏洩の検出や迅速な対応、公開されてしまったシークレットの修正に苦労しています。 GitHubでは、Secret scanningパートナープログラム. を通じて多くのサービスプロバイダーと提携し、すべてのパブリックリポジトリを対象に、漏洩した認証情報にフラグ付けを行っています。200個を超えるトークンフォーマットに基づいてリポジトリをスキャンし、関連のあるパートナーと協力して、共通のお客様を保護しています。2022年には、パブリックリポジトリで公開されている170万個以上の潜在的なシークレットをパートナーに通知し、トークンの悪用を阻止しました。 GitHubは、GitHubコミュニティのすべての無料パブリックリポジトリに対して、無料で利用できるSecret scanningの提供を開始しました。 Secret scanningアラートは、コードにシークレットの漏洩がある場合にユーザーに直接通知します。きわめて迅速な保護を実現するためにパートナーにも通知しますが、リポジトリに関する包括的な保護手段をユーザーの皆さん自身が所有できるようになりました。また、セルフホスト型のHashiCorp Vaultのキーが公開されている場合など、パートナーには通知できないシークレットについてのアラートも通知します。すべてのアラートをいつでも簡単に追跡して、漏洩元を詳しく調査したり、アラートに対して実行されるアクションを監査できます。 パブリックリポジトリでSecret scanningアラートを活用することで、シークレットの公開を阻止し、安心してオープンソースを利用することができます Secret scanningのおかげで、対処すべき重要な事象を多く見つけることができました。AppSec側としては、コードに含まれる問題を可視化するための最良の方法であることが多いです– Postmates、スタッフセキュリティエンジニア、David Ross氏 利用を開始するには パブリックリポジトリを対象に、パブリックベータ版Secret scanningの段階的な展開を開始しており、2023年1月末までに、すべてのユーザーがこの機能を利用できるようになる予定です。早期の利用を開始したい場合や、ご質問またはフィードバックがある場合は、コードセキュリティディスカッションでリクエストを送信してください。 リポジトリでSecret scanningアラートを利用できるようになったら、[Code security and analysis]設定の下にあるリポジトリの設定でアラートを有効化できます。検出されたシークレットを確認するには、リポジトリの[Security ]タブに移動し、サイドパネルの[Vulnerability alerts ]の下にある[Secret scanning ]を選択します。ここでは、検出されたシークレットが一覧で表示されており、いずれかのアラートをクリックすると、漏洩シークレット、その場所、修正のための推奨アクションが示されます。 リポジトリのSecret scanningアラートを有効にする方法について、詳しくは、GitHubのドキュメントを参照してください。 GitHub Secret

Image of Mariam Sulakian
   
Image of Zain Malik

GitHub Advanced Securityでカスタムパターンをプッシュ保護できるようになりました

GitHub Advanced Securityを利用する組織の管理者は、ワンクリックでプッシュ時にカスタムパターンを保護することができます。 アプリケーションセキュリティに関する特に有効なイニシアチブは、開発者の作業効率の向上に役立ちます。脆弱性を修正するには、その脆弱性がいつコードに存在しているかを把握する必要がありますが、そもそも、脆弱性自体を防ぐことができたらどうでしょうか? GitHub Advanced Securityを利用することで、企業はプッシュ保護 を用いてシークレットの漏洩を阻止し、下流工程での修正時間を数百時間も節約できます。プッシュ保護を4月にリリースして以来、既に100種類、8,000件以上のシークレット漏洩を阻止してきました。 カスタムパターンを定義している企業は、その定義済みのカスタムパターンに対してプッシュ保護を有効化できるようになりました。 カスタムパターンのプッシュ保護はパターンごとに設定できます。つまり、どのパターンを公開するか(もしくはどのパターンを最初にドラフトモードとして、徐々に改良していくか)を選べるように、プッシュ保護を行うパターンを誤検知に基づいて決定することができます。 シークレットをプッシュしようとすると、すぐにわかります。GitHubのsecret scanningのプッシュ保護のおかげで、シークレットがコードベースにプッシュされることを防いでもらえるので、膨大な時間を節約できます。仮に外部のスキャンツールだけを利用して、シークレットが既に公開された後でリポジトリをスキャンする場合、シークレットを即座に取り消したうえで、コードをリファクタリングする必要があります。GitHubのsecret scanningとプッシュ保護を開発者のフローに直接統合することで、時間を節約できるうえに、ベストプラクティスについて開発者に情報を提供することができます– Intel、ソフトウェアエンジニアリングディレクター、David Florey氏 プッシュ保護の有効化 カスタムパターンの定義は、リポジトリ、Organization、およびEnterpriseのレベルで行えます。さらに、カスタムパターンのプッシュ保護をOrganizationまたはリポジトリのレベルで有効化できるようになりました。プッシュ保護を有効にすると、コントリビュータがプッシュしようとするコードに定義済みパターンと一致するパターンが含まれている場合に、ブロックが適用されます。 カスタムパターンを定義するには、Organizationのコードセキュリティ設定ページに移動します。GitHub Advanced Securityとsecret scanningを有効にすると、UIから新しいカスタムパターンを作成できます。また、公開前にカスタムパターンをドライランできます。 パターンを公開し、そのパターンによって生成されるアラートに誤検知が少ないことを確認できたら、カスタムパターンのページで[Push protection]の横にある[Enable]をクリックしましょう。GitHubでは、カスタムパターンのアラートを定期的にチェックして、開発者のために誤検知のノイズをできるだけ少なく抑えられているか確認することを推奨しています。プッシュ保護を戦略的に活用することで、コントリビュータがセキュリティアラートを信頼し、必要に応じて適切に処理できるようになります。 secret scanningの詳細 secret scanningアラートは、すべてのパブリックリポジトリで無料で利用できます。また、GitHub Advanced Securityの一部として、プッシュ保護とプライベートリポジトリのカバレッジも提供します。これには、code scanningやサプライチェーンセキュリティのインサイトも含まれます。GitHub Advanced Securityの導入やデモについては、GitHubセールスパートナーにご連絡ください。 GitHub secret scanningパートナーになる

Image of Mariam Sulakian
   
Image of Zain Malik

GitHub Universe 2022における新発表のすべて

開発者と企業がイノベーションを容易に推進することができる、最も統合された開発者向けプラットフォームを強化するために、私たちがどのような取組みをしているのかご覧ください。 15年前、GitHubを構築するために最初のコード行がコミットされました。それ以来、私たちの目的は、開発者がベストを尽くすために必要なすべてのものをプラットフォームに装備することです。このミッションは、GitHubプラットフォームのすべてのイテレーションを通じて変わっておりません。しかし、私たちの仕事や生活のあらゆる場面でソフトウェアが進歩を続ける中、世界中の人々のためにソフトウェアを実行、維持、構築することは、開発者にとって計り知れない複雑さを生み出します。 私たちは今、転換期を迎えています。新たな開発者体験を提供する時が来ています。 GitHubは、開発者が創造性を発揮し、より幸せになるとともに、人生で最高の仕事をするためのツールを提供するべく、一つの統合されたプラットフォームを構築してきました。新たな開発者体験を可能にさせるための、このプラットフォーム全体についてGitHub Universe 2022で発表した全容を見てみましょう。 何が可能なのか、再定義する 時折、すべてを変えてしまうような新しいテクノロジーが登場します。プログラミング言語の使用やオープンソースが業界に革命を起こしたように、AIはソフトウェア開発の未来を大きく変えようとしています。そして、GitHubはその中心にいるのです。GitHub Copilotは、OpenAI Codexを使用し、エディターにリアルタイムでコードや関数全体を提案するAIペアプログラマーです。 今後近いうちに、AIは開発者体験のあらゆる側面に統合されていくため、GitHub Copilotをより身近な存在にさせていきます。近日中に、企業は従業員向けのGitHub Copilotのシートライセンスを購入・管理できるようになります。   無駄作業より仕事:企業向けGitHub Copilotは、AIベースのコーディング提案により、開発者の生産性を55%向上させることが可能 近日中に、企業は従業員向けのGitHub Copilotのシートライセンスを購入・管理できるようになります。これにより、企業は実証済みの主要なAI補助技術によって便益を享受するだけでなく、加えて、GitHub Copilotが提案する内容で公開されたコードに一致した場合、それらを許可または拒否することを、管理者側で企業のために設定することができます。個人向けにGitHub Copilotの提供を開始して以来、同サービスが開発者の幸福度に与える影響を測定してきました。GitHub Copilotは自然言語とコードを理解している方法によって、単なる生産性向上以上の効果をもたらします。ボイラープレートよりもビジネスロジックに集中でき、他の方法では考えつかなかったようなアイデアを発見できます。さらに、それらの操作をエディターから容易に実現できます。 AIが皆さまのビジネスにもたらす可能性を探るために、皆さまのビジネスをウェイティングリストに追加してください。   GitHub Nextによる実験:「Hey, GitHub!」でGitHub Copilotを音声操作、キーボードの必要性を削減しながら、AIペアプログラマーの利点を活かす GitHub Copilotがユーザーのペアプログラマーであるならば、なぜ話しかけることができないのでしょうか?その点こそが、GitHub Nextチームが目指しているものです。「Hey, GitHub!」は、GitHub Copilotやその他との音声による対話を可能にします。音声の力で、手入力が困難な開発者を含め、さらに多くの開発者にGitHub Copilotのメリットを提供できる可能性がある点に、私たちは興奮しています。「Hey, GitHub!」は、現時点ではVS Codeでコーディングする際だけキーボードの必要性を減らしますが、今後の研究とテストを通じて、機能拡張をしていきたいと考えています。

Image of Thomas Dohmke
View more posts