1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

処理は書けるのに「どこに書けばいいか」が分からない人へ

1
Last updated at Posted at 2026-05-15

はじめに

・処理内容は分かる
・コードも書ける

でも、

👉 「これ、どこに書けばいいの?」

で止まる人へ

例えば、

・とりあえず今触っているクラスに書く
・近くに似た処理があったのでそこへ書く
・動いたからそのままにする

👉 こんな経験ありませんか?

実務では、

・UI開発
・Web開発
・組み込み
・ミドル層
・ドライバ
・AI関連

など、

担当する層や言語が違っても、

👉 「どこに処理を書くべきか」

で悩むことがよくあります。

この記事の位置づけ(シリーズ)

この記事はシリーズの続きです。

① 新人・初級PGが最初につまずくポイント5選
② なぜ仕様書とコードは繋がらないのか
③ 仕様書は読めるのにコードにできない人へ
④ ソースは読めるのに処理が追えないのはなぜ?
⑤ どのソースを見ればいいか分からない人へ
⑥ 処理は追えるのに 「中で何してるか」が分からない人へ
⑦ 処理は追えるのに「なぜそれをしているのか」が分からない人へ

これまで、

👉 「理解できない原因」

を整理してきました。

今回はその中でも、

👉 「処理を書く場所」

について整理します。

なぜ「どこに書くか」で迷うのか

理由はシンプルです。

👉 “誰の仕事か”が整理できていないから

例えば、

SaveUser(user);

この保存処理を書くとして、

・画面側へ書く?
・Serviceへ書く?
・Repositoryへ書く?

👉 判断できない

よくある状態

初心者の頃は、

👉 「動けばOK」

になりやすいです。

例えば、

private void Button_Click(...)
{
    db.Save(user);
}

これでも動きます。

でも実務では、

👉 後からどんどん辛くなる

なぜ辛くなるのか

例えば、

・別画面でも使いたい
・APIからも呼びたい
・テストしたい
・処理変更したい

となったとき、

👉 UIに処理が埋まっている

すると、

👉 修正箇所が分散する

実は「役割分け」が重要

ここが重要です。

コードは、

👉 「役割ごと」に分ける

必要があります。

この「役割」のことを、

👉 責務

と呼びます。

難しく聞こえますが、

👉 「その処理の担当」

という意味です。

例えば、

画面表示の担当
通信の担当
データ保存の担当

のように、

👉 “誰の仕事か”

を分ける考え方です。

WPFだとこう分かれる

例えばWPFでは、

View
→ 画面表示

ViewModel
→ 画面の状態・操作

Service
→ 外部連携・業務処理

Model
→ データ

という形で分けることが多いです。

これはWPF特有の話ではない

この考え方は、

👉 WPFだけの話ではありません

例えば、

・Web開発なら
→ Controller / Service / Repository

・組み込みなら
→ UI層 / ミドル層 / ドライバ層

・AI系なら
→ 前処理 / 推論 / 後処理

のように分かれることがあります。


👉 呼び方や構造は違います

でも共通しているのは、

👉 「役割ごとに分ける」

という考え方です。

つまり、

画面のことは画面側
通信は通信側
保存は保存側

のように、

👉 “似た役割の処理をまとめる”

ことが重要になります。

じゃあ、どう判断するのか

ここで重要なのは、

👉 「その処理は何のためか」

を見ることです。

例① 画面表示制御

IsButtonEnabled = false;

これは、

👉 UI状態の制御

なので、

👉 ViewModel寄り

例② DB保存

repository.Save(user);

これは、

👉 データ保存処理

なので、

👉 Service側寄り

例③ API通信

await apiClient.SendAsync();

これは、

👉 外部連携

なので、

👉 Service側

ありがちなミス

ここかなり多いです。

❌ とりあえず今いる場所へ書く

人は、

👉 「今見えている場所」

へ処理を書きたくなります。

初心者〜中級でかなり多いです。

UI開発なら

・画面コードに全部書く
・ViewModelへ集約する
・近くのクラスへ追加する

ミドル層なら

・共通Utilityへ追加する
・Managerクラスへ集約する
・既存制御処理へ混ぜ込む

AI開発なら

・推論処理へ直接書く
・データ加工を全部同じ場所へ書く
・後処理へロジックを混ぜ込む

👉 「今見えている場所」に寄せてしまう

すると👇

・どこに何があるか分からない
・修正箇所が散らばる
・同じような処理が増える

状態になりやすい。


なぜそうなる?

理由は簡単。

👉 “一番見つけやすい場所”

だから。


でも実際には、

👉 「書きやすい場所」

👉 「その処理の担当として正しい場所」

は違います。

判断に迷ったら見るポイント

重要なのはこれです。

✔ その処理は誰の担当?

例えば、

画面表示?
業務処理?
外部通信?
データ管理?


👉 まずこれを考える


✔ 他からも使う?

ここかなり重要。

例えば、

別画面
API
バッチ

からも使うなら、

👉 UIに閉じ込めない


✔ UIがなくても必要?

これも重要。

例えば、

「画面なくても必要?」


YESなら、

👉 Service寄り

可能性高い。


「動く」と「設計が良い」は別

ここかなり重要。

初心者の頃は、

👉 「動けば正解」

と思いやすい。

でも実務では、

👉 後から変更される

👉 再利用される

👉 他人が触る


つまり、

👉 “未来の修正”

まで考える必要があります。


正解は1つじゃない

ここも重要です。

実務では、

👉 絶対の正解

はありません。


でも、

👉 「なぜそこに置くか」

を説明できること

が重要です。


実際の現場ではこう考える

例えば、

画面専用?
共通処理?
業務ルール?

を整理して、

👉 “誰の仕事か”

で分ける


まとめ

「どこに書けばいいか」で迷う原因は、

👉 “誰の仕事か”が整理できていないこと

です。

そのため、

・画面の仕事?
・業務処理?
・外部連携?
・データ管理?

を意識することが重要です。

そしてこれは、

👉 WPFだけではなく

👉 言語や担当層が変わっても共通する考え方

です。


✔ 1つだけ意識するなら

👉 「その処理は誰の仕事?」

これを考えるだけで、

👉 コード配置はかなり整理しやすくなります

おわりに

実務では、

👉 「何を書くか」

だけでなく、

👉 「どこに置くか」

もかなり重要です。

最初は難しく感じますが、

👉 「その処理の役割は何か?」

を考えることで、

少しずつ整理できるようになります。

もし、

「これはどこに置くべき?」
「この役割分けで迷った」

などあれば、ぜひ教えてください。

今後の記事で取り上げていきます。


■ シリーズ記事

新人・初級PGが最初につまずくポイント5選
→ 初心者が現場で止まりやすいポイントを整理

なぜ仕様書とコードは繋がらないのか
→ なぜ「仕様」と「コード」が繋がらないのかを解説

仕様書は読めるのにコードにできない人へ
→ 「線で理解する」具体的な手順を解説

ソースは読めるのに処理が追えないのはなぜ?
→ 処理を追っていて迷子になる原因を解説

どのソースを見ればいいか分からない人へ
→ 起点からコードを追う方法を解説

処理は追えるのに「中で何してるか」が分からない人へ
→ コードの意味を理解するための「データの見方」を解説

処理は追えるのに「なぜそれをしているのか」が分からない人へ
→ 「なぜその処理が必要なのか」をコードから読み解く考え方を解説

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?