お菓子をあげようイタズラなしで: デベロッパーが抱えがちな問題を解決する 6 つの方法

10月 30, 2023

多くの人は、ハロウィーンにかこつけて悩みごとまでも飾り付けてお祝いをします。Google for Developers はこのハロウィーン精神の一環として、ソフトウェア デベロッパーやエンジニアが恐れる背筋の凍るようなトラブルに切り込んでいきます。続きを読んで、潜んでいるこれらの恐怖を明るみに出し、役に立つトリック(とお菓子)を発見して、恐怖を克服しましょう。

コードの墓場

レジリエントなコードを維持するには定期的なアップデートが必要です。そしてバグの解決に関して言えば、コードが短い方がはるかに簡単にバグを発見できます。レガシーコードや、長ったらしいコードを見つけたら、コードをシンプルにして管理しやすくすることを検討しましょう。骨董品のコードベースやあまりに複雑なコードベースが好きな人間などいません。おすすめの方法をいくつかご紹介します。

細かく分けて: 一度にコードベース全体をアップデートしようとはしないでください。それより、コードベースを小さく分けて、それぞれ順番にアップデートを始めましょう。新しいバグが発生するリスクを最小限に抑えることができます。

バージョン管理システムを使用: 変更履歴を記録すれば、必要に応じて以前のバージョンに簡単に戻せます。

リファクタリング ツールを検討: リファクタリング ツールであれば、コードを壊さずに変更を加えることができます。

徹底的なテスト: 本番環境で稼働させる前に、変更部分を徹底的にテストしましょう。変更部分のみのテストも、コードベース全体でのテストも行ないましょう。テストをするべき理由について詳しくは、以下をご覧ください。

変更点を文書化: 新しいツール、更新された API、その他の変更を含めて記録し、あなたが何をしたのか、なぜしたのかを他のデベロッパーが理解できるようにしましょう。

テストという恐怖

迅速に開発してリリースしたいときは、短期的に見れば遅れる可能性があるので、テストコードを書きくのが億劫になります。しかし注意してください。テストされていないコードは、後でとんでもない厄介者に化けて戻ってきます。テストは、長期的に見れば時間、お金、不安を節約できる最善策です。テストを実行する必要があるのはわかっていても、テストがしたいという訳ではありませんよね。以下のヒントを活用して、ライティング テストを簡単にしましょう。

テストをゲーム化: テスト ライティングをゲームにしてしまいましょう。同僚が「コード カバレッジ」と言うより先にテストコードを書くというチャレンジです。

ペア プログラミング: 同僚と一緒にテストコードを書きましょう。友達と筋トレするようなもので、より楽しくモチベーションを高められます。

テストの自動化を設定: できるだけテストを自動化しましょう。この方が気が楽ですし、効率的です。

モンスター級の問題: 技術スタックを選べない

多くのデベロッパーは製品に対して強いこだわりを持っていますが、化石並みに古いシステムや組織のニーズによって選択肢が制限されることがあります。特に最新のツールを使用できないときは、肩を落とすこともあるでしょう。このような状況に直面しているのであれば、チームに助言をしてみる価値があります。やり方は次のとおりです。

変化のためのロビー活動: 現在の技術スタックが本当にうまくいっていない場合は、変化を訴えましょう。これには、一連のイベントを記録しなければならない場合もありますが、記録があなたの訴えに役立つこともあるでしょう。

メリットを伝える: あなたのこだわりを共有する準備ができたら、最適化されたコードがパフォーマンスを向上させるのと同じように、あなたが選択した技術スタックがプロジェクトにどのようなメリットをもたらすかを説明しましょう。

専門知識を共有: デモンストレーションでもプレゼンテーションでも良いので、好みの技術スタックに関してあなたの持っている知識を伝えましょう。

スキルアップ: 慣れていないトップダウンの技術スタックを習得する必要がある場合は、それを学習の機会と考えましょう。新しいプログラミング言語を習得するようなものです。

妥協も大事: まず、上記のすべての方法は試す価値があるということを頭に入れておいてください。しかし、ときには妥協しなければいけないこともあります。レガシーコードに携わる仕事をしていようなものです。理想的ではありませんが、不可能でもありません。ですから、思うように相手を説得できなくても、落ち込まないでください。

難しいことじゃありません: コードをよりスマートに修正

週末にプログラムのバグを修正するのは嫌なことです。そしてさらに最悪なことは、そんなときに限って他に予定がある場合です。問題への対応に使える時間は少なく、自分の時間は削られ、トラブルシューティングを手伝ってくれる人も少なく、十分なリソースがない。そのようなときにコードを修正するというのは、控えめに言ってもリスキーです。より良いスケジュールを組み、恐怖の週末を回避するために役立つおすすめの方法をいくつかご紹介します。

営業時間とユーザーへの影響を考慮: 影響を受けるユーザーが少なくなるオフピークのときにデプロイのスケジュールを組みましょう。B2B 企業の場合、金曜日の午後なら顧客への影響を最小限に抑えることができますが、小規模企業の場合、デプロイを金曜日に行うと重大な問題を解決するために週末が潰れる羽目になる可能性があります。自分にとって都合のよいスケジュールを選びましょう。

テストを自動化: 開発プロセスに自動テストを実装して、問題を早期に発見しましょう。

ステージング環境を確認: 本番環境を反映したステージング環境で変更部分を徹底的にテストし、間違いがないことを確認しましょう。

ロールバックを準備: 問題が発生した際、すぐに元に戻すためのロールバックのプランを用意しておきましょう。

モニタリングとアラート: モニタリングとアラートを設定すれば、24 時間年中無休で問題を検出できます。

コミュニケーション: デプロイのスケジュールと手順に関して、チームメンバー間でしっかりとコミュニケーションが行われていることを確認しましょう。

デプロイのスケジュール: 週末に定期的にデプロイしないチームであれば、金曜日はコードを読むだけの日にすることを検討してみましょう。または、必要に応じて、金曜日のデプロイを午前または早めの午後にスケジュールしましょう。

週末の緊急対応: 重大な問題に対処するために、週末の当直を順番に回すことを検討しましょう。

デプロイ後のレビュー: プロセスを改善するために、各デプロイの課題を分析し、学習しましょう。

徹底的に計画: デプロイのプロセスがきちんと文書化されており、チームやステーク ホルダーの間でしっかりコミュニケーションが取れていることを確認しましょう。

リスクを評価: 起こりうるビジネスやユーザーへの影響を見極めて、デプロイの頻度と期日を決定しましょう。

悪夢が現実に: ハッキングされる

ハッキングされたことに気づいたときは心臓が止まるかもしれませんが、最もテクノロジーに精通したデベロッパーですら、こうした攻撃に対しては脆弱です。実際に起きる前に、以下の対応策を実行しておきましょう。

システムとソフトウェアを最新の状態に維持: プログラムの脆弱性にパッチを適用するようなものと考えましょう。

強力なパスワードを使用: 強力な暗号化と同様に、強固なパスワードを使用しましょう。

二段階認証を使用: 常に 2 枚目のセキュリティ レイヤを追加しましょう。

フィッシングに気をつけて: 餌に飛びついてはいけません。不審なメールには、テストされていないコードと同じぐらい注意してください。

セキュリティ監査の実行: サイバー セキュリティのためにコードレビューを実行するように、システムを定期的に監査し、脆弱性がないかチェックしましょう。

バックアップ プラン: バージョン管理と同様に、バックアップも維持しましょう。ホラーな状況が現実になったときのためのセーフティ ネットです。

まさにホラー: サードパーティのデータ漏洩

データ侵害が、デベロッパーの平穏を脅かす最も恐ろしい脅威であることは間違いありません。そのサービスや API を選択したデベロッパーは言うまでもなく、どの企業も望まないトラブルです。このシナリオを回避するために、サードパーティ ベンダーとの問題を最小限に抑えるためのヒントをいくつかご紹介します。

サードパーティ ベンダーにデュー デリジェンスを実施: サードパーティ ベンダーと協業する前に、セキュリティ プラクティスとポリシーを入念に確認してください。セキュリティ認定、脆弱性管理の実践、インシデント対応計画について尋ねましょう。

ベンダーにセキュリティ要件を遵守するよう要求: 各サードパーティ ベンダーが満たす必要があるセキュリティ要件をまとめて、契約書を作成するか既存の契約書に追加し、各サードパーティ ベンダーと契約を結びましょう。具体的には、データ暗号化、アクセス制御、およびインシデント レポートの要件などです。

ベンダーの活動を監視: 監査ログを確認し、セキュリティ評価を実施することにより、契約で規定されているセキュリティ要件をベンダーが遵守しているか確認しましょう。ベンダー側に事案が発生した場合のデータ侵害の被害を最小限に抑えるため、ベンダーが職務を遂行するのに必要なデータのみへアクセスを許可しましょう。

強力なセキュリティ制御を実装: ファイアウォール、侵入検知システム、データ暗号化を実装して、自分が管理するシステム内のデータを不正アクセスから保護しましょう。

サードパーティの API に注意: すべてのセキュリティ リスクを精査する必要があります。API ドキュメントを入念に確認して必要な権限を理解し、API が強力なセキュリティ プラクティスに従っていることを確認しましょう。

安全なプログラミング方法を採用: 入力チェック、出力のエスケープ処理、そして強固な暗号化を使用しましょう。

ソフトウェアを最新の状態に維持: 既知の脆弱性から保護するために、常に最新のセキュリティ パッチを適用しましょう。

本当にあった怖い話

何かがうまくいかないかもしれないと怯えるのは簡単ですが、これらの対応策を実行すれば仕事でトラブルが起きる可能性は大幅に下がるでしょう。

デベロッパーのみなさんは、他にどのような背筋の凍るトラブルを経験しましたか?コミュニティで共有しましょう。