Webアプリケーション)を構築する際のさまざまなニーズに応えるには少し機能が足りず、いろいろと自前で実装しなければいけません。Framework」(以降「DRF」と表記)です。提供する際に必要となる機能や便利な機能を補完・拡充してくれる拡張パックのような役割を果たします。利用する、といった使い方をします。Django」よりも「DRF」の方が使われているようにも感じています。圧倒的に不足しています。日本語書籍については現在どこを探しても見つかりません。商業誌を待っていてもあと何年かは出ないだろうから、もし技術書典6に当選したら30ページくらいの本当に薄い本を書いてみようかなと思い立ったのが昨年末。これが地獄の始まりでした。それからどうなったか?技術書典4から3回連続で技術同人誌を頒布していますが、今回が一番辛かったです。管理していて今回からコミットコメントに執筆時間を加えることにしてみたのですが、今回の合計執筆時間は333時間になりました(会場価格は1,000円なので私の作業1時間あたり「3円」で買えてしまうということですね・・)。内容には満足しているものの、3月は生活のすべてを投げ打って執筆に没頭してしまいました。ご迷惑をお掛けした関係各所の皆さま、本当に申し訳ありませんでした。最後に、家族のサポートがなければこの本は世に出ていなかったということも付け加えさせてください。ついての解説は一切ありませんのでご注意ください。概要や全体像、コンポーネントごとの仕組みや使い方、セキュリティや認証などの基礎知識を座学で進めていきます。いう構成になっています。サンプルプロジェクトを2つ、簡単なものと少し難しめなものを用意しました。Webアプリケーションの仕組みが何となく掴めるでしょう。さんからお墨付きをいただけました。勉強会ではお世話になりました。レビューありがとうございました。さんにもレビューをしていただきました。使いたい方を想定しています。仕組みが何となく理解できていること」です。ひと通り終えたくらいであれば、何とか理解できるレベルになっているかと思います。レベルの知識は不要でしょう。当日のお品書きを作りました。お釣りがなるべく出ないように考慮した「会場特別価格」です。電子版とペーパー版が絶賛販売中です。「か63」の「あきよこブログ」です。見本誌を置いてますので、立ち読みだけでもお気軽にどうぞ。今回は、会場2時間は有料入場券(1,000円)が必要になっています。それでも午前中は混雑すると思いますのでご注意ください。(紙の本)を会場特別価格からさらに500円引きさせていただきます(1,500円→1,000円)。(後払いアプリだと対応できないかもしれないので)現金払いのみでの割引とさせてください。最後にウチの奥さんに「そんなに寝てないと死ぬよ?」と何度も言われながら、ようやく今週の火曜にすべり込み入稿できました。表紙がモノクロだったので標準価格からのアップは免れましたが、カラーだったらアウトというギリギリっぷりでした。そんな感じで今回の執筆で気力体力ともに尽き果てました。今日の技術書典が終わったら昇天しているかもしれません。出してから数ヶ月経ちました。電子版の販売を開始したり、年末のコミケに初参加してサークル「あきよこブログ」として本を再販したりするなど、いろいろとイベントが目白押しでした。本格的に使っている/使おうとしている開発者に向けた本です。必携の一冊にすべく、様々なノウハウをこれでもかと詰め込みました。《実践編》をひと言で表すと、「基礎のちょっと先に手を伸ばしてみようと考えている開発者に向けたステップアップ本」になっています。仕事の現場で本格的にDjangoを使いたい方を想定しています。物足りなかった方や、実践的な開発に不安のある方にも十分満足できる一冊になっているはずです。基礎(全体像、コンポーネントごとの仕組みや基本的な実装方法など)については説明していません。それらについては、前作《基礎編》でベストプラクティスを交えて詳しく解説しています。組み込みの認証システムを使うと、認証まわりの機能をサクッと実装することができます。yourself)」の原則に反します。認証まわりのノウハウについてまるっと解説した本は(少なくとも日本語の書籍では)ありませんでした。実際の現場では、サクッと実装しただけでは問題がある場合があります。それは「仕様変更」です。デフォルトの認証の仕組みをそのまま利用できる場合はよいのですが、ちょっとカスタマイズしたいとなった場合に難易度が途端に跳ね上がるという点には注意が必要でしょう。「ユーザー名ではなくメールアドレスとパスワードで認証できるようにしたい」といったニーズは日常茶飯事に発生します。このような場合にどのように改修すればよいのか、その改修ポイントや具体的なコードを載せています。本章の最後ではさらに実践的なニーズのひとつである「ソーシャル連携認証」について解説をしています。サイトが実装できるようになります。Webサイトのスタイルを下支えする味覇である」というブログ記事を見て思わず吹き出してしまったことがありました。CSSフレームワークをとりあえず入れてスタイルを「それ」っぽく整えておくのは常套手段ではないでしょうか。CSSフレームワークはデザインセンスの乏しいエンジニアの強い味方です。導入方法」について書いています。特化した話はほとんどありません。4」の適用をサポートする方法について解説しています。ビューでは通常のレスポンス以外に、JSONレスポンスを返すことができます。Web画面を制作することができます。framework」と呼ばれる有名なパッケージを使う方法があります。アプリのバックエンドとしてよく利用されています。レスポンスが返せることがお分かりいただけると思います。JSONレスポンスを返す際にそれぞれちょっとした注意点があります。第4章の中盤ではそれらの注意点について具体的なコード例を交えて解説をしています。章の終盤では、AjaxとJSONレスポンスを応用すればこんなアプリが作れるぞ!というちょっとしたアプリのコードを紹介しています。処理するというサンプルになっています。PDF、画像などのファイルを「メディアファイル」と呼んでいます。前作《基礎編》では「STATIC_ROOT」「STATICFILES_DIRS」「STATIC_URL」などの静的ファイル関連の設定について詳しく説明しましたが、本作では、メディアファイル(およびファイルアップロード)について、設定から実装、注意点に至るまで詳しく解説しています。発展的な内容として、「django-storages」を使ってクラウドストレージにファイルアップロードする方法とその設定について記載しています。パッケージをいくつか紹介しています。章の最後は、不正なファイルがアップロードされないためのセキュリティ対策について。ユーザーがアップロードしたファイルを他のユーザーに配信する場合は、ファイルの不正チェックが必須になるでしょう。ハマりがちなポイントといえば「静的ファイル」でしょう。メディアファイルは静的ファイルと混同しやすく、ファイルアップロードの実装は簡単ですが仕様に少し癖があります。Webアプリではよく利用されるので一度全体を整理して把握しておきたいところです。第6章:ユニットテスト動くコードも大事ですが、現場においてはテストも同じくらい重要です。以下に示すようなユニットテストのサポートが最初から用意されており、非常に充実しています。ユニットテストで押さえておくべき知識は、次の3点です。テストの実行方法まず、慣例と命名ルールを押さえておかないと、テストランナーが自動で収集してくれなくなります。テスト用のデータベース作成および削除、フィクスチャと呼ばれるファイルからのテストデータ生成、登録および変更したテストデータのロールバックなどの機能が追加されています。それらを含めた各種メソッドの実行フローや拡張ポイントを把握しないと、効率の良いテストケースを書くことはできません。コマンドから実行できますが、その実行方法についても押さえておく必要があるでしょう。導入してカバレッジを計測します。カバレッジ・レポートを品質指標として利用できるほか、実際に実行されたコード行を可視化することでテストケースに抜け漏れがないか、あるいはテスト条件や実装方法に誤りがなかったかどうかを把握できるといったメリットもあります。Webアプリを配備(deployment)して、ユーザーから利用できる状態にすることを指します。本番環境へのデプロイは「本番デプロイ」などと呼ばれます。デプロイの工程には、サーバの調達から必要なソフトウェアのインストールやその設定、データベースの構築や初期データの投入、セキュリティの設定など、ありとあらゆる作業が含まれます。本章では、インフラエンジニアでない方にもできるだけ分かりやすいように、デプロイ手順を最初から最後まで一気通貫に説明していきます。SSL化の設定まで、かなーり詳しく書いています。デプロイ解説書を目指しました。本章で構築するサーバ構成は、サーバ1台でリバースプロキシサーバ、アプリケーションサーバ、データベース、ファイルサーバなど全てをまかなうオールインワン構成です。シンプルで安上がりになる反面、可用性(冗⻑化)やスケールを考慮していない点には注意が必要です。2.1なお、各ソフトウェアのバージョンはできる限り最新のものを利用しています。いざ本番リリースしようとしたときに「これって公開しちゃって大丈夫なの?」と怖くなってしまうことはないでしょうか?Djangoはフルスタック(全部入り)が大きな特徴のひとつですが、セキュリティ対策もその中にちゃんと含まれています。「適切に利用していれば」という条件付きです。提供しているセキュリティ対策についてのおさらいです。後半では、本番デプロイを想定したオリジナルの「セキュリティ・チェックリスト」を用意しました。本番リリース時にお役立てください。遅い」なんてもう言わせない!最終章の9章では、簡単に実現できる高速化の具体策について解説しています。悪く言えば重厚長大で、パフォーマンスは二の次であると言わざるを得ません。ここで高速化の対策として解説しているのは二点です。一点目は、データベースのクエリ実行について。特定の画面のレスポンスが異常に遅い場合、クエリ実行に問題がある(クエリの本数が想定以上に多くなってしまう、いわゆる「N+1」問題が発生している)場合がありますが、その対策について解説します。デフォルトで含まれている「キャッシュ」機能について、その使いどころをいくつか具体的に挙げています。アプリ次第では劇的に応答時間が短くなることもあるでしょう。評価を勝手に掲載させていただきます。現場で使えるDjangoの教科書実践編読みました。認証周りやパフォーマンス出ない話がつらぽよなので、そこらへんをカバーしてて嬉しい。2018年10月16日まだ軽く全体に目を通した程度ですが基礎編に続き「もっと早くほしかった!」と思えるすばらしい内容です。デプロイの部分が手厚いのもよいですね。会社で布教したらよいものだということで《基礎編》+《実践編》紙の本2冊セットを今日会社で買いました。2,500冊を超えています。プロジェクトの現場にあると嬉しい一冊ではありますが、どちらかというと、現場に入った新規参画者や新人に読んでほしい初心者・初級者向けの一冊になっていると思います。何かで詰まって半日無駄にするくらいなら、《実践編》を一冊買う方が絶対安いです。役に立つ情報がたくさん載っていると思います。デプロイや高速化、セキュリティ、認証、ユニットテストに関しては、これほどまとまった情報を提供しているところは他にはまだないと自負しています。気になった方はこの機会に《実践編》をぜひどうぞ。二冊セット販売も用意しています。振り返りその他Tweet明けましておめでとうございます。今年も、毎年恒例となっている昨年のブログの振り返りからスタートです。ちなみに一昨年(2017年)の振り返りはこんな感じでした。激減してしまいました。執筆をしていたからです。技術同人誌」一色となったのでした。実は密かに昨年から、勉強会の参加ログを記事として残さないようにしていました。)に何度も行くようになったのと、単に忙しくて記録を残す時間が取れなかったのが主な理由です。2018年)記事ごとのアクセス数ランキングです。30本をリストアップしています。ランクインしています。系の記事が強いなぁという印象です。バージョンを記事の中に明記していなかったりして不親切なものも多いなと感じます(書き換えたいけど時間がない・・)。目標は特にありません。盛り上げていくのが、個人的な今年の目標です。今年もよろしくお願いします。PV数ではなく、作成日からの日数で割ったポイントで算出しています。*2:作成日のところを黄色く塗っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。