Flask Academy · レッスン

手作りJSONが破綻する理由

スキーマ層が必要な理由を学びます

レッスン 1/413 ステップ

「手作りJSONが破綻する理由」はCoddyKit上の無料Flask Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFlask Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Flask Academyコースには全4レッスンが含まれています。

手作業で構築する習慣

最初は、モデルの各フィールドを dict にコピーして、JSON を手作業で構築します。単純に感じますし、エンドポイントが1つだけなら実際に単純です。

return {"id": user.id, "name": user.name}

フィールドはすぐに増える

カラムをいくつか追加すると、dict は行ごとに大きくなります。やがて1つのモデルが、同期を保たなければならないキーと値の長大で壊れやすいブロックになってしまいます。

あらゆる場所で重複する

一覧エンドポイントと詳細エンドポイントは、どちらも同じ dict を作り直します。この重複により、名前を1つ変更するだけで、同じ形を多くの場所で編集しなければなりません。

日付は気付かないうちに壊れる

生の datetime は JSON と相性が悪いため、jsonify がエラーになったり、推測で処理したりします。手作業のコードでは、アプリ全体で日付の形式を毎回同じにするのが難しくなります。

{"created": user.created_at}

秘密情報が誤って漏れる

モデル全体を出力すると、password_hash や内部フラグまで送信してしまう可能性があります。手作業で JSON を構築すると、非公開フィールドを簡単に公開してしまいます。

ネストしたデータは見づらくなる

投稿を複数持つユーザー1人を扱うだけで、dict の中にループがあり、その中にリストがあります。ネストした構造によってシリアライズコードは複雑に絡み合い、誰にとっても読みにくくなります。

入力時のバリデーションがない

手作業で構築した JSON は出力のことしか考えません。入力されたペイロードはチェックされないまま届くため、バリデーションも手作業で大量の if 文を書くことになります。

スキーマ層を導入する

スキーマは、存在するフィールド、その型、ルールを一度に記述します。出力と入力の両方が、この1つの定義を通るようになります。

1行で使える Marshmallow

Marshmallow は Flask で広く使われているライブラリです。Schemaクラスを宣言するだけで、出力のシリアライズと入力のバリデーションを処理してくれます。

from marshmallow import Schema, fields

信頼できる唯一の情報源

スキーマを使うと、フィールド一覧を1か所で管理できます。そこでフィールド名を変更または削除すれば、すべてのエンドポイントが自動的に一貫した状態になります。

コードを減らし、バグを減らす

壊れやすい dict の行を何十行も書く代わりに、すっきりしたクラスを使えます。その結果、コードが減り、出力が安全になり、API の明確な契約を定義できます。

クイックチェック

スキーマ層が最も効果的に解決する問題はどれでしょうか。

まとめ

手作業で構築した JSON は作業を重複させ、日付を適切に扱えず、秘密情報を漏らします。Marshmallow のようなスキーマ層はデータの形を一元管理し、すっきりと安全な出力を実現します。

無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「手作りJSONが破綻する理由」レッスンは無料ですか?

はい。「手作りJSONが破綻する理由」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Flask Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Flask Academyコースには全4レッスンが含まれています。

「手作りJSONが破綻する理由」で何を学びますか?

スキーマ層が必要な理由を学びます ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Flask Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのFlask Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「手作りJSONが破綻する理由」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このFlask Academyレッスンでコードを書いて実行できますか?

はい。すべてのFlask Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 手作りJSONが破綻する理由
  2. モデルのスキーマを定義する
  3. オブジェクトをJSONにダンプする
  4. 入力ペイロードを読み込み検証する
← Flask Academyに戻る