Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Lab 2

2025年09月18日に「Dev.to」が公開したITニュース「Lab 2」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

あるツールに「過去7日以内に更新されたファイルのみをパッケージする」新機能を追加した。`--recent`フラグで使える。この開発では、Issue作成から実装、テスト、プルリクエストまで、一連のソフトウェア開発プロセスを経験し、ツールの機能向上に貢献した。

出典: Lab 2 | Dev.to公開日:

ITニュース解説

この解説文は、既存のソフトウェアに新しい機能を追加する一連の開発プロセスを具体的に示している。特に、システムエンジニアを目指す初心者が、どのようにして実際の開発プロジェクトに関わり、貢献していくのかを理解するのに役立つだろう。今回取り上げられているのは、「コードをパッケージ化するツール」に、直近7日以内に変更されたファイルだけを対象とする新しい機能を追加する作業だ。この機能は、コマンドライン上で「--recent」または「-r」という引数(フラグ)を指定することで利用できるようになる。

まず最初に行うのが「Step 1: 課題の提起」である。ソフトウェア開発において、新しい機能の追加や既存の機能の修正、バグの報告などは、通常「イシュー」という形で管理される。イシューは、開発プロジェクトのGitHubページなどにある「Issues」セクションで作成され、開発者間で共有される作業内容のリストのようなものだ。この記事の執筆者は、まず、すでに誰かがこの「最近変更されたファイル」機能の開発を始めていないか、既存のイシューを確認した。もし既存のイシューが見つかれば、それに関わったり、重複作業を避けたりできる。今回は、まだこの機能に関するイシューがなかったので、新しく「--recentフラグのサポートを追加する」というイシューを自ら作成した。このイシューには、どのような新しいフラグを追加したいのか、そのフラグを使ったときにツールがどのように動作すべきか(例:直近7日以内に変更されたファイルのみを含める)、そして具体的なコマンドの使用例と期待される出力結果を詳しく記述した。これは、プロジェクトの管理者や他の開発者が、執筆者がこれから開発しようとしている機能の内容を正確に理解するために非常に重要なステップである。明確なイシューを立てることで、後々の認識齟齬を防ぎ、スムーズな開発につなげることができる。

次に、「Step 2: フォーク、クローン、ブランチ」という準備作業に進む。これは、実際にコードを変更する前に、開発環境を整えるための非常に一般的な手順である。まず「フォーク」とは、既存のプロジェクトのリポジトリ(ソースコードや開発履歴がすべて管理されている場所)を、自分のGitHubアカウントに完全にコピーすることだ。これにより、元のプロジェクトに直接影響を与えることなく、自分自身の管理下で自由にコードを変更できるようになる。次に、フォークしたリポジトリを「クローン」する。これは、GitHub上にある自分のリポジトリのコピーを、自分のローカルコンピュータにダウンロードする作業だ。これにより、自分のパソコン上でコードを編集したり、実行したりできるようになる。コマンドラインで「git clone」という命令を使うと、指定したリポジトリのコード一式が自分のパソコンに複製される。リポジトリをクローンして作業ディレクトリに移動したら、いよいよコード変更のための準備だ。「git checkout -b feature-recent-files」というコマンドは、「ブランチ」を作成して、そのブランチに切り替えることを意味する。ブランチとは、プロジェクトのメインのコードライン(通常は「main」や「master」と呼ばれる)から分岐させて、新しい機能開発やバグ修正などの特定の作業を独立して進めるための作業履歴のことだ。ブランチを使うことで、メインのコードを安定した状態に保ちながら、安全に新しい機能を開発できる。執筆者は、「feature-recent-files」という名前のブランチを作成し、以降のすべてのコード変更(コミット)はこの新しいブランチ上で行われた。

「Step 3: 実装」では、実際に新しい機能をコードとして書き起こす作業が行われた。今回は、Pythonで書かれた「src/main.py」というファイルが主な変更対象だった。具体的には、3つの主要な変更が加えられた。一つ目は「タイムスタンプのチェック」を追加したことだ。ファイルがいつ最後に更新されたかという情報(タイムスタンプ)を取得し、それが7日以内であるかどうかを判断するロジックを組み込んだ。二つ目は「ファイル発見ロジックの更新」である。ツールがパッケージ化するファイルを検索する際に、このタイムスタンプのチェックを組み込み、指定されたフラグ(--recentまたは-r)が使われた場合にのみ、直近7日以内に変更されたファイルだけを選ぶように修正した。これにより、新しい機能が意図通りに動作するようになった。三つ目は、ツールの出力に「Recent Changes」という新しいセクションを追加したことだ。これは、ユーザーが新しい機能を使ったときに、何が変更されたのか、どのファイルが含まれたのかを分かりやすく示すための配慮である。

コードの実装が終わったら、「Step 4: テスト」を行う。テストは、開発した機能が期待通りに動作するか、そして既存の機能に悪影響を与えていないかを確認するための非常に重要なプロセスだ。執筆者は、自分のローカル環境で実際に新しい機能を動かしてテストした。例えば、「python src/main.py . --recent」というコマンドを実行して、直近7日以内に変更されたファイルだけがコンソールに表示されるかを確認した。また、「python src/main.py . -r -o recent-output.txt」というコマンドで、変更されたファイルが指定した出力ファイルに正しく保存されるかどうかも確認した。これらのテストの結果、期待通りの動作が得られ、新しい機能が問題なく動作することを確認できた。テストは、リリース前に品質を確保し、ユーザーが安心して使えるソフトウェアを提供するために不可欠なステップである。

最後に、「Step 5: プルリクエスト」を出す。実装とテストが完了し、新しい機能が問題なく動作することが確認できたら、開発したブランチをGitHubにプッシュし、元のプロジェクト(Stevenのリポジトリ)に対して「プルリクエスト」を開く。プルリクエストとは、自分が開発したコードの変更を、元のプロジェクトの管理者(メンテナー)にレビューしてもらい、最終的にプロジェクト本体のコードに統合(マージ)してもらうための提案である。執筆者は、プルリクエストの記述欄に、追加した機能の概要、どのように実装したかの詳細、そして具体的な使用例(コードブロックを含む)を記載した。これは、プロジェクトの管理者や他の開発者が、変更内容を効率的に理解し、コードレビューを行う上で非常に役立つ情報となる。管理者はこの情報をもとにコードをレビューし、問題がなければ、執筆者のブランチの変更をメインのブランチにマージすることで、新しい機能がプロジェクト本体に取り込まれることになる。

このように、イシューの作成から始まり、コードの実装、テスト、そしてプルリクエストによる統合提案に至るまでの一連のプロセスは、ソフトウェア開発における一般的なワークフローであり、個人での開発はもちろん、チームでの共同開発においても非常に重要だ。この経験は、システムエンジニアを目指す者にとって、実世界での開発の流れを理解し、実際にコードを書いてプロジェクトに貢献するための貴重な学びとなる。

関連コンテンツ