Q. 開発でAIエージェントをどう活用していますか?
回答準備中
回答準備中
回答準備中
大きく3点あります。①関心事の分離:各層の役割が分離され、密結合が起きにくくなります。関心事が分離されることで並列での開発も楽になります。②テスト容易性:インターフェースを用いた依存性の注入になるため、テストコードが書きやすくなります。③柔軟性:外部フレームワークやライブラリへの依存を最小限に抑えることで、別の技術に乗り換える際のコストを最小限に抑えられます。実際に個人開発のGoプロジェクトでORMをgorm・Bun・GENと試しましたが、変更はinfrastructure層のrepositoryだけで済み、最小のコストで比較検証できました。
回答準備中
回答準備中
例えばGoとTypeScriptであれば、パフォーマンスや並行処理・分散システムが重要な場合はGo、Webフロントエンド開発や既存のJavaScript/Node.jsプロジェクトの改善、フルスタック開発で言語を統一したい場合はTypeScriptを選びます。マイクロサービスやシステムプログラミングの領域もGoが向いていると考えています。
回答準備中
主に3つの軸でチューニングしています。①クエリの最適化:遅くなる原因は大半がDBのクエリなので、まずアプリケーションの実装とクエリを見直します。②インデックスの最適化。③正規化と非正規化のバランス:必要に応じてデータを非正規化してJOINの数を減らし、クエリのパフォーマンスを向上させることがあります。アプリケーション側では、高負荷な処理の非同期・並列化、不要なループや計算の回避、できるだけ軽量なツール・ライブラリの選定を意識しています。
回答準備中
WAFやCORSの設定、クラウドリソースの権限設定を行うほか、セキュリティ診断を外部に委託するなどの対応を行ってきました。コンプライアンス面では、所属先のポリシーに則り、機密性の高い資料やデータは指定されたストレージで管理するなど情報漏洩の防止を徹底しています。
シンプルであるか、他人が理解できるコードかを軸に見ています。パフォーマンス面では、不要なループや計算、不要なレンダリングを行っていないか、効率的なクエリになっているかを重点的に確認します。
2点あります。①相手をリスペクトすること:自分の意見を押し付けるのではなく、意見が食い違う場合は折衷案を探したり、論理的に議論を進めるようにしています。②話の本筋を意識すること:結論を先に話し、ディスカッションでは何を話すのかを明確にしながら進めることを心がけています。
Nuxt2から3へのバージョンアッププロジェクトです。破壊的変更が多いうえ、当時のNuxt3自体にバグが多く、情報も少ない状態でした。例えばuseAsyncDataを他のリアクティブな変数と組み合わせるとリアクティビティが失われる問題などがあり、Nuxt3のコアのソースを読んで回避策を考えたり、GitHubのissueを常に確認しながら修正バージョンを待つなどして、限られたスケジュールの中でリリースまでやり切りました。
公式ドキュメントやハンズオンで実際に手を動かしながらキャッチアップすることが多いです。実業務であれば、小さいタスクから取り組んで理解を段階的に深めていきます。個人開発を継続しているため、新しい技術は実際にデプロイ・運用まで試してインプットとアウトプットを両立させています。
回答準備中