DAY 02: デジタル・アーキテクト

LinuxBeginner
オンラインで実践に進む

はじめに

LabEx Corporation での 2 日目へようこそ!昨日のシステム調査の成功を受けて、あなたは「プロジェクト・フェニックス(Project Phoenix)」のデジタル・アーキテクトに抜擢されました。開発チームは、あなたの徹底したドキュメント作成能力と細部へのこだわりに感銘を受けています。

しかし、今すぐ解決しなければならない緊急の課題があります。前任のシステム管理者が突然辞めてしまったため、プロジェクト・フェニックスのファイルが完全に散らかり放題になっているのです。ソースコード、ドキュメント、設定ファイルが 1 つのディレクトリに混在しています。重要な設定ファイルはバックアップもなく危険な状態にあり、昨日調査した開発サーバーには古いログファイルが溢れています。

あなたの任務は、成長を続ける開発チームを支えるために、クリーンで論理的、かつ効率的なファイル構造を設計(アーキテクト)することです。適切なディレクトリを作成し、ファイルを整理し、バックアップを確保し、古いデータをクリーンアップすることで、プロジェクト・フェニックスが成功するための基盤を築いてください。

リードデベロッパーの Sarah Chen は、あなたがこの混乱を整理されたプロフェッショナルな開発環境に変えてくれることを期待しています。今日のあなたの仕事は、チームの生産性とプロジェクトのスケジュールに直接影響を与えます。さあ、始めましょう!

プロジェクトディレクトリ構造の構築

最初のタスクは、phoenix_project ディレクトリ内に適切なディレクトリ構造を作成することです。構造を明確に定義してファイルの種類ごとに分けることで、プロジェクトのナビゲーションやメンテナンスが容易になります。

タスク

  1. ~/project/phoenix_project ディレクトリに移動します。
  2. 3 つの新しいサブディレクトリを作成してください:ソースコード用の src、設定ファイル用の config、ドキュメント用の docs

要件

  • すべての新しいディレクトリは ~/project/phoenix_project 内に作成すること。
  • ディレクトリ名は正確に srcconfigdocs とすること。
  • 1 つのコマンドで 3 つのディレクトリを同時に作成すること。

このステップを完了すると、ディレクトリ構造は以下のようになります:

~/project/phoenix_project/
├── config/
├── docs/
├── src/
├── README.md
├── config.json
└── main_app.py

~/project/phoenix_project ディレクトリで ls -F を実行すると、以下のように表示されるはずです:

README.md  config/  config.json  docs/  main_app.py  src/

ディレクトリ名の後の / 記号は、それがファイルではなくディレクトリであることを示しています。

ヒント

  • 現在のディレクトリを変更するには cd コマンドを使用します。
  • 新しいディレクトリを作成するには mkdir コマンドを使用します。
  • mkdir は複数の引数を受け取ることができ、一度に複数のディレクトリを作成できます。
✨ 解答を確認して練習

プロジェクトファイルの移動と整理

新しいディレクトリ構造が整ったので、既存のプロジェクトファイルをそれぞれの指定場所に移動しましょう。これにより、プロジェクトのルートが整理され、ファイルが見つけやすくなります。

タスク

  1. main_app.py ファイルを src ディレクトリに移動します。
  2. config.json ファイルを config ディレクトリに移動します。
  3. README.md ファイルを docs ディレクトリに移動します。

要件

  • 移動操作を行う前に、~/project/phoenix_project ディレクトリにいることを確認してください。
  • 各ファイルの移動には mv コマンドを使用してください。

ファイルを移動した後、プロジェクト構造は以下のように整理されているはずです:

~/project/phoenix_project/
├── config/
│ └── config.json
├── docs/
│ └── README.md
└── src/
└── main_app.py

ルートの ~/project/phoenix_project ディレクトリで ls -F を実行すると、ディレクトリのみが表示されるはずです:

config/  docs/  src/

各ファイルが適切なサブディレクトリに配置されていることを確認してください:

  • ls src/main_app.py
  • ls config/config.json
  • ls docs/README.md

ヒント

  • mv コマンドは、ファイルやディレクトリの移動または名前の変更に使用されます。
  • 基本的な構文は mv [移動元] [移動先] です。
  • 例えば、file.txtdocuments という名前のディレクトリに移動するには、mv file.txt documents/ と入力します。
✨ 解答を確認して練習

重要な設定ファイルのバックアップ

config.json ファイルには、プロジェクト・フェニックスの重要な設定が含まれています。変更を加える前に、バックアップを作成しておくことは極めて重要な安全策です。次のタスクでは、このファイルのコピーを作成します。

タスク

  1. config.json ファイルのバックアップコピーを作成してください。

要件

  • バックアップファイルは ~/project/phoenix_project/config/ ディレクトリ内に作成すること。
  • バックアップファイル名は正確に config.json.bak とすること。

バックアップ作成後、config ディレクトリには両方のファイルが含まれているはずです:

~/project/phoenix_project/config/
├── config.json
└── config.json.bak

~/project/phoenix_project/config/ ディレクトリで ls を実行すると、以下のように表示されるはずです:

config.json  config.json.bak

.bak ファイルはオリジナルの正確なコピーであるため、両方のファイルの内容は同一である必要があります:

## これらのコマンドは同一の出力を表示するはずです
cat config.json
cat config.json.bak

ヒント

  • cp コマンドは、ファイルやディレクトリのコピーに使用されます。
  • 構文は cp [コピー元] [コピー先] です。
  • コピー元ファイルのフルパスと、新しいバックアップファイルのフルパスを指定する必要があります。
✨ 解答を確認して練習

チーム共有リソースの再編成

パズルのもう一つのピースが見つかりました。~/project/shared_docs にある shared_docs というディレクトリです。このディレクトリには、プロジェクトの他のドキュメントと一緒に保管すべき重要なチームガイドラインや API 仕様書が含まれています。あなたのタスクは、これをメインのプロジェクト構造に統合することです。

タスク

  1. shared_docs ディレクトリ全体とその中身すべてを、~/project/phoenix_project/docs/ ディレクトリに移動してください。

要件

  • 移動元ディレクトリは ~/project/shared_docs です。
  • 移動先パスは ~/project/phoenix_project/docs/ です。
  • 中身だけでなく、ディレクトリごと移動させる必要があります。

shared_docs ディレクトリを移動した後、ドキュメントの構造は以下のようになるはずです:

~/project/phoenix_project/docs/
├── README.md
└── shared_docs/
├── api_spec.doc
└── team_guidelines.txt

~/project/phoenix_project/docs/ ディレクトリで ls を実行すると、以下のように表示されるはずです:

README.md  shared_docs/

shared_docs ディレクトリには、元のファイルがすべて含まれている必要があります:

ls ~/project/phoenix_project/docs/shared_docs/
api_spec.doc  team_guidelines.txt

元の場所である ~/project/shared_docs は存在しなくなっているはずです。

ヒント

  • mv コマンドは、ファイルと同様にディレクトリに対しても機能します。
  • ディレクトリを移動すると、その中身もすべて自動的に一緒に移動します。
  • コマンドは mv [移動元ディレクトリ] [移動先ディレクトリ] のようになります。
✨ 解答を確認して練習

古いログファイルのアーカイブと削除

最後のタスクは、ちょっとした整理整頓です。~/project/logs ディレクトリにログファイルが溜まってきており、2023 年のものは日常業務にはもう必要ありません。スペースを節約し、整理された状態を保つために、これらの古いログを 1 つのアーカイブファイルに圧縮し、元のファイルを削除する必要があります。

tar コマンドについて

tar コマンドは、アーカイブファイルを作成・操作するための強力な Linux ツールです。「Tar」はもともと磁気テープにデータを書き込むために設計されたため「Tape Archive」の略でしたが、今日では主にディスク上で圧縮アーカイブファイルを作成するために使用されます。

tar を使用すると、基本的に複数のファイルを 1 つのファイル(アーカイブと呼びます)にまとめ、オプションでそのアーカイブを圧縮してスペースを節約できます。最も一般的な圧縮形式は gzip で、ファイル名に .gz 拡張子が付きます。

tar コマンドは、動作を制御するためにさまざまなオプション(フラグ)を使用します:

  • c: 新しいアーカイブを作成する (Create)
  • z: gzip を使用してアーカイブを圧縮する
  • f: アーカイブのファイル名を指定する (Filename)

したがって、tar -czf archive.tar.gz file1 file2 は、file1file2 を含む archive.tar.gz という名前の新しい圧縮アーカイブを作成します。

タスク

  1. ~/project/logs ディレクトリに移動します。
  2. 2023 年のすべてのログファイルを含む、old_logs.tar.gz という名前の圧縮 tar アーカイブを作成してください。
  3. アーカイブが正常に作成されたら、今アーカイブした元の 2023 年のログファイルを削除してください。

要件

  • 最終的なアーカイブ名は正確に old_logs.tar.gz とすること。
  • アーカイブは ~/project/logs ディレクトリ内に配置すること。
  • ファイル名に 2023 が含まれるログファイルのみをアーカイブし、その後削除すること。
  • 2024 年のログファイル(app_2024-05-01.log)はアーカイブに含めず、削除もしないこと。

アーカイブ前のログディレクトリの内容:

~/project/logs/
├── app_2023-01-15.log
├── app_2024-05-01.log
└── db_2023-02-20.log

アーカイブタスク完了後のログディレクトリの状態:

~/project/logs/
├── app_2024-05-01.log
└── old_logs.tar.gz

~/project/logs/ ディレクトリで ls を実行すると、以下のように表示されるはずです:

app_2024-05-01.log  old_logs.tar.gz

ヒント

  • アーカイブの作成には tar コマンドを使用します。-czf オプションは強力な組み合わせです:c(作成)、z(gzip で圧縮)、f(ファイル名指定)。
  • ワイルドカード(*)を使用すると、パターンに一致する複数のファイルを選択できます。例えば、*_2023-*.log は、.log で終わり、名前に _2023- が含まれるすべてのファイルに一致します。
  • rm コマンドは、ファイルを取り除く(削除する)ために使用されます。ワイルドカードと一緒に使用する場合は注意してください!
✨ 解答を確認して練習

まとめ

素晴らしい仕事です、デジタル・アーキテクト!あなたはプロジェクト・フェニックスを混乱状態から、整理整頓された開発環境へと見事に変貌させました。Sarah Chen と開発チーム全体があなたの仕事振りに感激しています。論理的なディレクトリ構造を構築し、重要なファイルを整理し、バックアップで設定を保護し、古いログをアーカイブしてシステムリソースをクリーンアップしました。

これらの基本的な Linux コマンドラインスキル(mkdirmvcptarrm)は、プロフェッショナルなシステム管理の根幹を成すものです。今日のあなたの組織化作業は、プロジェクト・フェニックスの開発ライフサイクル全体を支える強固な基盤となりました。

これで開発チームは、適切に構造化された環境で効率的に作業を進めることができます。明日は、チームが最初の技術的問題に直面した際の「ログ捜査官(Log Investigator)」として、新たなチャレンジに挑んでいただきます。あなたの体系的な整理へのアプローチは、トラブルシューティングにおいても大いに役立つはずです!