ログの蓄積によるメリット | オリジナル、AI翻訳

Home 2025.07.10

銀行のコンサルタントとして働いていた頃、マイクロサービスを提供するためのマルチクラウドアプリケーションプラットフォームを使用していました。その時、会社で働きながらログを蓄積し始めました。

何年も経ちましたが、それでもそれはソフトウェアエンジニアリングや仕事をする上で最も良い方法の一つだと思っています。時間が経つにつれて、私のログディレクトリには数百のログファイルが存在します。

それらには特定のサブディレクトリやフォーマルなログファイル名がありません。時には、JIRAのタスク名やその機能をログファイル名の接頭辞として使用し、その後に数字を付け加えます。例えば、mutual-fund-1.log、mutual-fund-2.logなどです。これは、ミューチュアルファンドマイクロサービスを実行した際のログであることを意味します。

時には、複数の地域を対象としたプロジェクトで作業している場合、国名を接尾辞として追加します。例えば、mutual-fund-cn-1.log、mutual-fund-sg-1.logなどです。ログのファイル名はかなりカジュアルです。当時は、エラーステックや周辺の関数呼び出しに集中する必要があったからです。

プログラムのログは重要です。誰もが知っています。しかし、私はコンソールでログを見てそのまま放置するのではなく、ログを蓄積することの重要性を強調したいと思います。プロジェクトが進行するにつれて、より便利になるでしょう。過去のログを探す時間が増えます。過去に同じデータベースストアドプロシージャの呼び出しがあったかどうかを知る必要があるかもしれません。過去に同じエラーが発生したかどうかを知る必要があるかもしれません。過去にこの問題をどう修正したかを思い出す必要があるかもしれません。

大きなプロジェクトや数十のマイクロサービスには、数多くの詳細があります。そして、エラー、例外、問題は繰り返し発生します。ログはプログラムの実行ドキュメントのようなものです。そして、それらはプログラムによって自動的に生成され、人間がタイプする必要はありません。そして、開発者にとって、これらのログは読み取れます。そのため、新しいタスクを開始したり、新しいバグを修正したりする際には、数百のログを手に入れてその新しいバグを修正できます。あなたは一人ではありません。

なぜ私たちはそれらを蓄積するのでしょうか? それは、物事や知識が簡単に忘れられるからです。

紙が発明された時、人間の文明は進歩しました。そして、コンピュータが発明された時、人間の文明はさらに別のレベルに達しました。紙にメモを取ることは、コンピュータ上でログを蓄積することと同じです。

人間だけでなく、AIチャットボットやLLMツールにとっても、これらのログはますます重要になっています。2022年に設立されたGreptimeDBは、観測可能性データ(メトリクス、ログ、トレース)の統一的な収集と分析のためのデータベースです。これは偶然ではありません。

なぜ私は以前それをしなかったのでしょうか? 大銀行のコンサルタントとして働いた後、より多くの協力と大きなプロジェクトに取り組む必要がありました。それ以前は、スタートアップや私のスタートアップ期間のほとんどの時間を一人で働いていました。LeanCloudで働いていた頃、私はIMアプリのLeanChatに半分近くの時間を費やしていました。

そして、よりフォーマルな企業の世界に入ると、プロジェクトの開発は個人のプロジェクトやスタートアッププロジェクトとは異なりました。彼らはSIT、UATテスト環境を持っています。そして、プロダクション環境はしばしば特定の小さなチームの同僚だけに開かれています。彼らからログを取得して問題を修正するのは長くてやや面倒です。そして、プロジェクトを実行するには時間がかかり、Jenkinsパイプラインはしばしば30分かかります。

そのため、私はプログラムをフライのように実行したり、個人のコンピュータでコマンドをタイプしてコードをサーバーにアップロードして実行することはできません。

そのため、私はより多くのコンテキストを持ってタスクを処理できるようにログを蓄積するようになりました。私たちは最初の試みで問題を修正したいです。私たちは修正を数回で確認したいです。私たちはクラウドや会社のサーバー上で実行されているプログラムのログを簡単に取得できません。そのため、ローカルのノートパソコンにコピーして保存し、分析する必要があります。

そして今、私の個人プロジェクトでもログを蓄積しています。それは習慣になりました。大きな企業で何年か働いた後、私はプロジェクトをより大きく、長くするためのより多くの忍耐や戦略を持つようになりました。そのため、時間が経つにつれてこれらのログが必要になることを知っています。

誰かが言うかもしれません。あなたは優雅なコードと動作するプロジェクトさえあればよいのです。ログやエラーステックトレースを蓄積する必要はありません。大丈夫です。バグや新しい機能がある場合、プログラムを実行して現在のログを取得できます。開発プロセスのログは必要ありません。彼らは科学実験の詳細な記録のようなものです。最初は大丈夫に見えます。しかし、長期的には、ある日それを再び作業したい場合、またはそれを共有したい場合、または他の人に引き継ぎたい場合、それは良くないかもしれません。

私はここで良い機会があると思います。企業では、なぜ開発者全員に蓄積したログを共有することを奨励しないのでしょうか? オープンソースプロジェクトでもそれを持つべきです。私たちは他人のログが魅力的ではないと感じます。それはログを保存する際にコンテキストを失うからです。そしてその中には、無関係または些細なメッセージが数多く存在するように見えます。

しかし、ログを蓄積する努力は些細なものです。それは、特にエラーログを見るたびに、コピー&ペーストするだけです。そして、それを自動的に行うのはどうでしょうか? プロジェクトを実行するたびにログをディレクトリに記録するのは良いアイデアです。例えば、Spring Bootプロジェクトのようなものです。

世界はますますデジタル化されています。そのため、デジタルプログラムのログを蓄積することは、物理的な世界で本を蓄積することと同じです。


Back Donate