katsu-coach1215

Java

【Java】JavaのCollectionsユーティリティクラスの活用方法

こんにちは、かつコーチです。「Listをソートしたいけど、毎回forループでアルゴリズムを書くのは面倒」と感じたことはありませんか。今回は、そんな定番処理をまとめて解決してくれるCollectionsユーティリティクラスの使い方を紹介します...
Java

【Java】JavaのDeque・Stack・Queueの使い方を比較しながら解説

こんにちは、かつコーチです。「スタックとキューって結局何が違うの?」「Stackクラスは使わない方がいいって聞いたけど本当?」という質問をよくもらいます。今回はJava 21時点でのDeque・Stack・Queueの使い分けを、実際に手を...
JavaScript

【React】Redux・Zustand・Context APIを同じアプリで実際に使い比べてみた

こんにちは、かつコーチです。前回はAPI連携ありのTODOアプリを、useStateとカスタムフックだけで実装しました。今回はReact編の最終回として、「同じ簡単なアプリを、状態管理の主要な選択肢それぞれで実装したらどう違うのか」を実際に...
JavaScript

【React】ReactとAPI連携で簡単なTODOアプリを作ってみる

こんにちは、かつコーチです。ここまでディレクトリ構成・Atomic Design・カスタムフックの設計パターンと、React設計の考え方を積み上げてきました。今回はいよいよ実践編として、それらを組み合わせながらAPI連携ありのTODOアプリ...
JavaScript

【React】カスタムフックの設計パターン集

こんにちは、かつコーチです。前回はAtomic Designで、コンポーネントの「見た目」の粒度を整理する考え方を解説しました。今回は、その裏側にある「ロジック」の整理方法、つまりカスタムフックの設計パターンを扱います。カスタムフックはus...
React

【React】Atomic Design入門:コンポーネントを整理する考え方

こんにちは、かつコーチです。前回はディレクトリ構成のベストプラクティスとして、種類別構成・機能別構成・Atomic Design構成の3つを比較しました。その中でも「粒度ごとにコンポーネントを分類する」という考え方であるAtomic Des...
JavaScript

【React】Reactプロジェクトのディレクトリ構成のベストプラクティス

こんにちは、かつコーチです。前回は「太らせないコンポーネント設計の考え方」というテーマで、1つのコンポーネントが責務を抱えすぎないようにする考え方を解説しました。今回はその一歩手前、そもそもファイルをどこに置くかという話です。コンポーネント...
JavaScript

【React】太らせないコンポーネント設計の考え方

こんにちは、かつコーチです。前回まで4回にわたって「エラー解決編」をお届けしてきました。今回からは「設計・アーキテクチャ編」に入ります。1本目のテーマは、Reactを書いていると誰もが一度は経験する「気づいたら1つのコンポーネントが数百行に...
JavaScript

【React】Reactアプリのパフォーマンスチューニング入門

こんにちは、かつコーチです。前回は「React DevToolsでコンポーネントの状態を確認する方法」を解説しました。今回は、DevToolsのProfilerタブで見つけた「重い箇所」を実際にどう改善していくか、パフォーマンスチューニング...
JavaScript

【React】React DevToolsでコンポーネントの状態を確認する方法

こんにちは、かつコーチです。前回は「無限re-renderが起きる原因と対処法」を解説しました。console.logを無限ループの中に埋め込んで原因を追う方法もありますが、正直かなり効率が悪いです。今回は、そういったバグ調査を格段に楽にし...
JavaScript

【React】無限re-renderが起きる原因と対処法

こんにちは、かつコーチです。前回は「keyがありません」警告を取り上げました。今回は、React学習者の多くが一度は通る「画面がフリーズする」「コンソールが真っ赤になる」という無限re-renderを扱います。Maximum update ...
JavaScript

【React】「keyがありません」警告の意味と対処法

こんにちは、かつコーチです。前回は「Reactでよく出るエラーと解決法まとめ」で、代表的なエラーを一通り見てきました。今回からは、個別のつまずきポイントをひとつずつ深掘りしていきます。1本目のテーマは、リストを表示するコードを書くとほぼ必ず...
Django

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

こんにちは、かつコーチです。これでDjango編は30本目、最終回です。「Pythonでウェブアプリを作りたいけど、DjangoとFlaskどちらから始めればいいですか」これは、Django編を通じて最もよく寄せられた質問です。どちらもPy...
Django

【Django】Django REST FrameworkでシンプルなTodo APIを作ってみる

こんにちは、かつコーチです。設計・アーキテクチャ編で扱った考え方を、ここで実際に手を動かして確認します。この記事では、DRF(Django REST Framework)でシンプルなTodo APIを最短ルートで組み立てます。モデル定義から...
Django

【Django】Djangoプロジェクトのアプリ分割のベストプラクティス

こんにちは、かつコーチです。Djangoはstartappでいくらでもアプリを追加できますが、「何を1つのアプリにまとめるか」の基準を持たずに開発を進めると、後から手がつけられなくなります。この記事では、Djangoプロジェクトのアプリ分割...
Django

【Django】Django REST Frameworkでシリアライザとアーキテクチャを設計する

こんにちは、かつコーチです。前回はFat Model・Skinny Viewの考え方を扱いましたが、DRFでAPIを組むと今度は「シリアライザに何を書くか」で同じ問題に突き当たります。シリアライザはバリデーションもデータ変換もできてしまうた...
Django

【Django】Fat Model・Skinny Viewの考え方とビジネスロジックの置き場所

こんにちは、かつコーチです。Djangoでアプリを育てていくと、いつの間にかviews.pyが数百行になり、条件分岐だらけで読めなくなる瞬間が来ます。原因の多くは、ビジネスロジックの置き場所が決まっていないことです。この記事では、Djang...
Django

【Django】shell_plusを使いこなすデバッグ術

こんにちは、かつコーチです。Djangoには標準でpython manage.py shellというコマンドがありますが、実際に使ってみると「モデルを毎回importするのが面倒」と感じたことはないでしょうか。筆者もこの手間が地味にストレス...
Django

【Django】DoesNotExist例外で落ちる画面を防ぐ方法

こんにちは、かつコーチです。「開発中は普通に動いていたのに、本番で存在しないIDにアクセスされたら500エラー画面になった」という経験はありませんか。筆者も実際に、URLの数字を適当に書き換えてアクセスされただけでサーバーエラーになるサイト...
Django

【Django】makemigrationsが競合して困った話と対処法

こんにちは、かつコーチです。チーム開発でDjangoを使っていると、ある日突然マイグレーションが動かなくなることがあります。筆者はチームで開発していたとき、自分のブランチでgit pullした直後にmigrateを実行したら、見たことのない...