toplogo
登入
洞見 - ソフトウェア開発 - # バックエンド開発

モバイルエンジニアが経験するバックエンド開発の学びと課題


核心概念
長年のモバイルエンジニアとしての経験を持つ筆者が、新規プロダクトのバックエンド開発に携わった経験を通して、フロントエンド開発とは異なるバックエンド開発の概念や注意点、学びについて解説する。
摘要

モバイルエンジニアが経験するバックエンド開発の学びと課題

この記事では、長年のモバイルエンジニアとしての経験を持つ筆者が、新規プロダクトのバックエンド開発に携わった経験を通して得られた学びと課題について解説しています。

パラダイムシフト

フロントエンド開発とバックエンド開発の間には大きなパラダイムシフトが存在します。バックエンド開発では、無数のクライアントに長期間にわたってサービスを提供するサーバーで動作するコードを記述する必要があるため、パフォーマンスやスケーラビリティ、データベースの知識などが重要となります。

データベースの再学習

フロントエンドエンジニアはAPI経由でデータのやり取りを行うことが多いため、データベースの知識が希薄になりがちです。しかし、バックエンド開発では、インデックス、正規化、制約、リレーションシップなどの基本的なデータベースの概念に加え、シャーディング、トリガー、デッドロック処理、トランザクション、スケジューリングなどの高度な概念を理解する必要があります。

HTTPステータスコードの標準化

フロントエンド開発では、ユーザーエクスペリエンスを重視してHTTPステータスコードを処理することが多いですが、バックエンド開発では、標準化されたJSONレスポンスとともに正しいステータスコードを返す必要があります。

ソフトウェアサイドカーの概念

マイクロサービスアーキテクチャにおいて、既存のコードを変更することなく、デプロイされたコードに機能を追加/拡張するために使用されるソフトウェアサイドカーの概念について解説しています。

バックエンド間の呼び出し

大規模なプロダクト開発では、他のマイクロサービスからデータを取得する必要があり、バックエンド間の呼び出しが発生します。この際、呼び出し先のサービスの障害や停止などを考慮した処理が必要となります。

デプロイ

バックエンド開発では、修正を即座にデプロイできるという利点があります。しかし、本番環境へのデプロイ時には、グラフやダッシュボードを監視し、問題が発生していないか、ユーザーエクスペリエンスに影響が出ていないかを確認する必要があります。

異常がないかグラフを監視する

サービスのパフォーマンスやエラー発生率などを監視するために、レスポンスタイム、エラー、スループット、負荷などのグラフを常にチェックする必要があります。

異なる技術スタックへの挑戦

筆者は、ソフトウェア開発に携わるすべての人々が、新しい技術スタックに挑戦し、これまで経験したことのない開発を経験することを推奨しています。

まとめ

この記事は、モバイルエンジニアがバックエンド開発に携わる際に直面する課題や学びについて、筆者の経験に基づいて解説しています。データベース、HTTPステータスコード、ソフトウェアサイドカー、バックエンド間の呼び出し、デプロイ、監視など、バックエンド開発において重要な概念や注意点について学ぶことができます。

edit_icon

客製化摘要

edit_icon

使用 AI 重寫

edit_icon

產生引用格式

translate_icon

翻譯原文

visual_icon

產生心智圖

visit_icon

前往原文

統計資料
引述
The code you write has to run on a server which runs for eternity. It’s not just a success & failure only now, it’s a lot more than that. When there is an issue on production, it is mostly a backend thing! (:

深入探究

バックエンド開発の経験を積むことで、フロントエンド開発のスキルや視点にどのような影響を与えるでしょうか?

バックエンド開発の経験は、フロントエンド開発のスキルや視点に以下の様な良い影響を与えます。 APIの設計と連携に関する理解が深まる: バックエンド開発の経験を通して、APIの設計思想、データ構造、エンドポイント、HTTPステータスコードなどを深く理解することで、より効率的で効果的なAPI連携を実装できるようになります。これは、フロントエンド開発においてAPIとの連携は不可欠であり、その品質がユーザー体験に直結するからです。 データフローと処理の全体像を把握できるようになる: フロントエンドはユーザーインターフェースを扱う一方で、バックエンドはデータ処理やビジネスロジックを担当します。バックエンドの経験を通して、データがどのように処理され、保存され、フロントエンドに提供されるのかを理解することで、アプリケーション全体のデータフローを把握できるようになり、より適切な設計や実装が可能になります。 パフォーマンス最適化の意識が高まる: バックエンド開発では、大量のデータ処理やリクエストを効率的に処理する必要があり、パフォーマンス最適化は重要な課題です。バックエンド開発の経験を通して、データベースのクエリ最適化、キャッシュの利用、非同期処理などのパフォーマンス最適化手法を学ぶことで、フロントエンド開発においてもパフォーマンスを意識した設計や実装ができるようになります。 セキュリティに関する意識が高まる: バックエンド開発では、認証認可、データの保護など、セキュリティ対策が非常に重要になります。バックエンド開発の経験を通して、セキュリティの重要性を認識し、フロントエンド開発においてもクロスサイトスクリプティング(XSS)やクロスサイトリクエストフォージェリ(CSRF)などの脆弱性対策を意識した実装ができるようになります。 デバッグスキルが向上する: バックエンド開発では、ログ解析やデバッグツールを用いて問題解決を行うことが多く、その経験を通してデバッグスキルが向上します。これは、フロントエンド開発においても複雑な問題が発生した場合に、原因を特定し解決する能力を高めることに繋がります。 このように、バックエンド開発の経験は、フロントエンド開発のスキルや視点を大きく向上させ、より質の高いアプリケーション開発に貢献することができます。

フロントエンドエンジニアがバックエンド開発に携わることのデメリットにはどのようなものがあるでしょうか?

フロントエンドエンジニアがバックエンド開発に携わることには、多くのメリットがある一方で、以下のようなデメリットも考えられます。 学習コスト: フロントエンドとバックエンドでは、使用する技術や開発手法が大きく異なるため、新たに学習する必要がある技術や知識が多く、習得に時間がかかる可能性があります。特に、サーバーサイドプログラミング、データベース、セキュリティ、API設計などの分野は、フロントエンド開発とは異なる知識や経験が必要となります。 開発効率の低下: フロントエンドとバックエンドの両方に精通していない場合、開発初期段階では、慣れない技術や開発環境によって開発効率が低下する可能性があります。特に、大規模なプロジェクトや複雑なシステム開発では、専門知識を持つエンジニアと連携して開発を進めることが重要になります。 専門性の低下: フロントエンドとバックエンドの両方に手を出すことで、どちらの分野においても中途半端な知識やスキルになってしまう可能性があります。専門性を高めるためには、どちらかの分野に特化して集中的に学習し、経験を積むことが重要です。 これらのデメリットを踏まえ、フロントエンドエンジニアがバックエンド開発に携わる場合は、以下の様な点に注意する必要があります。 学習時間: 新しい技術や知識を習得するために、十分な学習時間を確保することが重要です。オンライン学習プラットフォームや技術書などを活用し、計画的に学習を進めましょう。 専門家との連携: わからないことや困ったことがあれば、積極的に専門家に質問したり、アドバイスを求めるようにしましょう。 得意分野の深堀り: フロントエンドとバックエンドの両方を経験することで、どちらの分野に興味があるのか、どちらの分野で活躍したいのかが明確になる場合があります。得意分野を深堀りすることで、より専門性の高いエンジニアを目指しましょう。

ソフトウェア開発における専門性の深さと広さのバランスをどのように保つべきでしょうか?

ソフトウェア開発において、専門性の深さと広さのバランスを保つことは、常に議論の的となる難しい課題です。 専門性を深めることは、特定の技術や分野に特化することで、深い知識と経験を積み重ね、その道のエキスパートを目指すことを意味します。特定の技術領域において高度な専門性を身につけることで、競争の激しいソフトウェア開発業界においても、独自の市場価値を確立することができます。 一方、専門性を広げることは、様々な技術や分野に触れることで、幅広い知識と経験を積み重ね、応用力の高いエンジニアを目指すことを意味します。変化の激しいIT業界においては、新しい技術やトレンドに柔軟に対応できる、幅広い知識と応用力を持つことが求められます。 理想的なバランスは、個々のキャリア目標、置かれている状況、市場のニーズによって異なり、一概に断言することはできません。 しかし、以下のようなアプローチでバランスを模索していくことは有効です。 T型スキルの習得: 特定の専門分野を深掘りしつつ(深さ)、関連する周辺分野についても幅広く学習する(広さ)ことで、T字型のスキルセットを構築します。 キャリアステージに合わせた調整: キャリア初期は、様々な技術や分野に触れて経験を積み、専門性を広げることに重点を置く。ある程度の経験を積んだら、自分の強みや興味に基づいて専門分野を絞り込み、深掘りしていく。 市場のトレンドを注視: 特定の技術や分野に特化しすぎることは、市場の変化に対応できなくなるリスクも孕んでいます。常に市場のトレンドを注視し、必要に応じてスキルセットをアップデートしていく柔軟性も必要です。 重要なのは、深さと広さのどちらかに偏るのではなく、常に学習し続ける意欲と変化を恐れずに柔軟に対応する姿勢を持つことです。
0
star