Flask

【Flask】Flask-Migrateでマイグレーションを管理する

こんにちは、かつコーチです。前回の記事で、db.create_all()にはテーブル構造の変更を反映できないという弱点を紹介しました。今回は、その弱点を解消するFlask-Migrateを使って、モデルの変更を安全にデータベースへ反映する方...
Flask

【Flask】Flask-SQLAlchemyでモデルを定義しCRUD操作をする

こんにちは、かつコーチです。ここまでの記事でルーティングとテンプレートを扱ってきましたが、実際のアプリではデータを保存・取得する仕組みが欠かせません。この記事では、Flaskでデータベースを扱うための定番ライブラリFlask-SQLAlch...
Flask

【Flask】Jinja2テンプレートでHTMLを動的に生成する

こんにちは、かつコーチです。これまでの記事では、return "文字列"で画面を表示してきましたが、実際のWebアプリでは装飾されたHTMLを表示したいはずです。この記事では、Flaskに標準搭載されているJinja2というテンプレートエン...
Flask

【Flask】@app.routeでルーティングを設定する基本

こんにちは、かつコーチです。前回、最小構成のFlaskアプリを動かしましたが、実際のWebアプリには複数のページやURLが必要です。この記事では、Flaskの心臓部とも言える@app.routeの使い方を、パターン別に整理して解説します。ル...
Flask

【Flask】pip install flaskで最小構成のアプリを動かす

こんにちは、かつコーチです。前回の記事でFlaskがどんなフレームワークか紹介しました。今回は実際に手を動かして、環境構築から最小構成のアプリを動かすところまでを一気に進めます。コピペで動かせる完全なコードを用意したので、ぜひ手元で試してみ...
Flask

【Flask】Flaskとは?軽量なPython Webフレームワークを初心者向けに解説

こんにちは、かつコーチです。「Pythonでウェブアプリを作りたいけど、Flaskって何ができるの?」「Djangoとどう違うの?」と気になっている方向けに、この記事ではFlaskの正体と学ぶメリットを分かりやすく解説します。読み終わる頃に...
Laravel

【Laravel】Seederでテストデータを入れる3つの方法と使い分け方〜 DB::table() と updateOrCreate() の違いを徹底解説〜

こんにちは、かつコーチです。Laravelで開発していると、テストデータや初期データを登録したい場面は多くあります。そんなときに便利なのが「Seeder」です。本記事では、Seederでデータを登録する3つの方法と、それぞれの使いどころをわ...
Java

【Spring Boot】比較検証 : Spring BootとDjango、初心者に向いているのはどちらか

こんにちは、かつコーチです。これでSpring Boot編は40本目、最終回です。「バックエンドを本格的に学ぶなら、Spring BootとDjangoどちらがいいですか」これは、Java基礎編・Spring Boot編を読み進めてくれた読...
Java

【Spring Boot】Spring BootでシンプルなREST APIを作ってみる【実践】タスク管理APIを一気通貫で実装

こんにちは、かつコーチです。これまでのSpring Boot編では、DI・JPA・Security・テストと、個別のテーマを1本ずつ掘り下げてきました。今回はその集大成として、タスク管理REST APIを最初から最後まで一気通貫で実装します...
Java

【Spring Boot】Spring Bootプロジェクトのベストプラクティス

こんにちは、かつコーチです。ここまでレイヤードアーキテクチャや例外ハンドリングの一元化など、個別のトピックを扱ってきましたが、今回はそれらを踏まえた上で「新しいSpring Bootプロジェクトをどう構成すべきか」を一段俯瞰して整理します。...
Java

【Spring Boot】@ControllerAdviceで例外ハンドリングを一元化する

こんにちは、かつコーチです。すべての@RestControllerにtry-catchを書き並べ、同じようなエラーレスポンス生成コードがコピペで増殖していく。レイヤードアーキテクチャの記事でControllerを薄く保つ設計を扱いましたが、...
Java

【Spring Boot】Spring Bootにおけるレイヤードアーキテクチャの考え方

こんにちは、かつコーチです。Controllerに直接SQLを書いてしまう、Serviceが肥大化して1000行を超える、DTOとEntityが混在して依存が絡み合う。こうした問題の多くは、レイヤードアーキテクチャ(責務ごとに層を分け、上位...
Java

【Spring Boot】Spring BootでSLF4Jのログ出力を整える方法を中級者向けに解説

こんにちは、かつコーチです。Spring Bootは標準でSLF4J(Simple Logging Facade for Java、複数のログ実装を統一的なAPIで扱えるファサード)とLogbackの組み合わせを内蔵しています。そのためbu...
Java

【Spring Boot】Lombokで冗長なコードを減らす使い方を初心者向けに解説

こんにちは、かつコーチです。EntityやDTOを作るたびに、getter・setter・コンストラクタを手打ちしていて「これ絶対もっと楽にできるはず」と感じたことはありませんか。Lombokとは、アノテーションを付けるだけでgetter・...
Java

【Spring Boot】Spring Bootの循環参照エラーの原因と解決法を中級者向けに解説

こんにちは、かつコーチです。サービスクラスを増やしていくと、ある日突然アプリが起動しなくなり、BeanCurrentlyInCreationExceptionという見慣れないエラーに出会うことがあります。これは循環参照(AがBに依存し、Bが...
Java

【Spring Boot】よくあるSpring Bootのエラーまとめ(BeanCreationException等)を初心者向けに解説

こんにちは、かつコーチです。Spring Bootを始めたばかりの頃は、mvn spring-boot:runや./gradlew bootRunを叩いた瞬間に真っ赤なスタックトレースが流れてきて、心が折れそうになった経験がある人も多いと思...
Java

【Spring Boot】Dockerでコンテナ化する基本

こんにちは、かつコーチです。「自分のPCでは動くのに、サーバーだとJavaのバージョンが違って動かない」という経験はないでしょうか。筆者も過去、ローカルはJava 21なのに本番サーバーはJava 17のままで、起動時に原因不明のエラーに何...
Java

【Spring Boot】環境ごとにapplication.propertiesを切り替える

こんにちは、かつコーチです。前回の記事でjarファイルをサーバーにデプロイする方法を紹介しましたが、開発環境と本番環境でDBの接続先やログレベルが同じというアプリはまずありません。かといって、デプロイのたびにapplication.prop...
Java

【Spring Boot】jarファイルにビルドしてデプロイする方法

こんにちは、かつコーチです。ローカル環境で./gradlew bootRunを使って動作確認できるようになると、次に気になるのが「このアプリをどうやって本番のサーバーで動かすのか」という疑問です。筆者も最初は、Spring Bootのアプリ...
Java

【Spring Boot】Mockitoを使ったサービス層のテスト

こんにちは、かつコーチです。@SpringBootTestや@DataJpaTestは便利ですが、サービス層のビジネスロジックだけを検証したいときにDIコンテナやDBを毎回起動するのは、テストの速度と焦点の両面で無駄が出やすいです。筆者が担...