テクノロジー

同じ5行のコードが全く違って見える12の瞬間、なぜ私たちは学ぶのか?

1: kenzy_n 2025/08/22 20:23

五行思想

2: mushus 2025/08/22 20:36

良い話

3: Nyoho 2025/08/22 20:52

これは素晴らしい。

4: naka-06_18 2025/08/22 21:00

落ちに、これは大変なのでFW使います、あたりにして欲しい

5: newforms 2025/08/22 21:20

ちょっと感動しました

6: yarumato 2025/08/22 21:20

“APIからユーザー名を取得するTypeScript関数。エラーハンドリングを学んだら、意図した通りに動いてくれない野放図なコードだとわかる。パフォーマンスを学んだら、このコードが典型的なN+1問題だと即座に認識”

7: fuji_haruka 2025/08/22 21:29

よい話

8: Kanasansoft 2025/08/22 22:18

氏名取得のための処理、五行無限の気付きあり/良い記事。

9: lainof 2025/08/22 22:39

クライアント側のコードだけ変えても指摘されてる問題の本質は解決されてなくない?ってのがあるように見える。

10: ustam 2025/08/22 22:42

copilotってここまでやってくれないよね。相当詰めないと。

11: doko 2025/08/22 23:16

極端な例って書いてあるのにー

12: mojimojikun 2025/08/22 23:17

良い話

13: hogetax 2025/08/22 23:20

“N+1問題”この例ってニュアンスが違う気がする。リストとってきてそのリストを元に再度一つづつ問い合わせを行う事だと思うんだけど...

14: FreeCatWork 2025/08/22 23:23

ふむふむ、コードって奥深いのにゃ。ボクにはおやつの方がもっと違って見えるにゃ!

15: seal2501 2025/08/22 23:29

これは良記事

16: chiroruxx 2025/08/22 23:44

さすがに妄想が過ぎるので、責務の範囲を設計するということを学んだほうがいい。/「もしも」プログラミングを卒業して、現実を見たコードを書いたほうがいい。

17: diveintounlimit 2025/08/22 23:45

良記事。結局AI使ったところで、エンジニアがこの辺のジャッジができる必要があるから、そんなに速度上がらんのよ。できないレベル感のエンジニアは逆にAIに主導権を握られて高速でジェンガタワーを作ってしまう。

18: hokkey 2025/08/23 00:21

いい記事だしなんか悔しいな

19: sudow 2025/08/23 00:24

教材として良さそう

20: hkdn 2025/08/23 00:33

いいね、コーディング忘れたおじさんは癒されるね

21: aji0gou 2025/08/23 00:42

深いね。確かに学び続けることの重要性が伝わる

22: Phenomenon 2025/08/23 00:50

そんなにいろいろ想定して結局意味ないパターンの方がおおいので特にスケーラビリティとかはほんとうに必要になってから対応しろ…とかおもってたら最後に「トレードオフを学んだら」がでてきてぐうの音もでないな?

23: otation 2025/08/23 01:03

コードを見ながら設計するな。非機能はプロジェクト共通で設計しろ

24: cive 2025/08/23 01:46

これはいいな

25: odakaho 2025/08/23 01:49

まとめて取るにはuserId50件を保持してないといけないけど、、、全然典型的ではないような。 “典型的なN+1問題”

26: junorag 2025/08/23 01:56

ユーザ名を取得するサンプルコードだなと見えるし、それ以上は何も見ない。まさかこれが実運用で使われるとは露とも思わないからだ。

27: hirata_yasuyuki 2025/08/23 02:09

admin/1 にアクセスされて困るなら、バックエンドが悪い。(フロントエンドで対処するのは無意味)

28: lbtmplz 2025/08/23 02:20

バックエンドでやって…

29: dette 2025/08/23 03:07

とっても最初の疑問として fetch つかってるから get は不適切だなーとは思った (アクセスに時間がかかる関数に即座に値が帰りそうな get は微妙というニュアンス)。それ以外はまあ用途別なのでなんとも…

30: monorod 2025/08/23 03:27

個人的には非同期関数がgetなのが一番嫌かも セキュリティ周りはBEで担保しろよと思うので、後はエラーハンドリングとパフォーマンス周りどこまで拘るかなと思った。それによってテストの必要性も変わってくるし

31: hfdth 2025/08/23 04:02

フロントエンドでしょ。 別に最初のコードで問題ない案件が大半だと思う。

32: circled 2025/08/23 05:20

userId指定してユーザデータ取ってくるAPIに見えるのに、仮に大量のユーザ返して来たらAPI側が頭おかしいか、叩くAPI間違えてるのか?みたいな話になると思うんだよね。リーダブルコードにならない国語破綻コードなの?

33: kkobayashi 2025/08/23 05:22

いろいろ突っ込まれてるけど良い記事だと思う。フロントエンドでそこまでやるか?という心のツッコミも含めて

34: poTracy 2025/08/23 05:50

全く関係ない業務してるけど勉強になった。実務に関係ないから興味ないは好奇心の死だと思う。そこがないと勉強も頭打ちやん。「バックエンドでやれよ」で終わりは違うと思う。

35: ya--mada 2025/08/23 06:12

エクセプションを誰にオーバーライドさせるかは、アーキテクトの設計次第では?

36: thongirl 2025/08/23 06:21

「正解」を示したつもりでも文句の付け所はあるんだから、つくづくコードレビューって好き嫌いの問題だと思う

37: nilab 2025/08/23 06:31

“初心者は「他に方法を知らないから」 これを書きます。熟練者は「すべての選択肢を知った上で、今回はこれで十分だ」 と判断して書きます。見えている世界がまったく違います。”

38: cropy 2025/08/23 06:58

プログラミングに限らず、どんな仕事でもそうだ。様々な場面を想定できないと、適切な選択をすることはできない。

39: sh2 2025/08/23 07:02

どこまでを想定してfunctionを設計するか

40: bellonieta 2025/08/23 07:33

問題は「動くコードが書ければ十分」と感じているエンジニアはこの記事を目にすることがないことだ

41: tockri 2025/08/23 07:33

いい記事だと思う!知ってて書かないのと知らなくて書かないの、たしかに違うねー。

42: sametashark 2025/08/23 07:37

それほどスキルの高くないメンバーがいる社内勉強会の導入にもってこいの良記事だと思う。とてもわかりやすい。完璧にやるにもやらないにも理由が必要なことを、突っ込まれる前に考えるようになりそう

43: kakei-akihiko 2025/08/23 07:42

見えていることと頭で思い浮かべたことは区別するべき。

44: coziro 2025/08/23 07:43

“野放図”

45: aki_asap 2025/08/23 08:03

感動。

46: otoan52 2025/08/23 08:06

いい記事。ケースバイケースではあるけど、たぶんtypescript化と、定数に切り出し、responseの結果判定だけ入れるかな。useridはもっと手前でチェックするし、テストの必要があるコードではない/確かに名前はfetchにしないと

47: Lamit 2025/08/23 08:16

プログラミングの9割は異常系でできている

48: srng 2025/08/23 08:30

良い話。知識が生きる場所

49: ch1248 2025/08/23 08:35

良い記事だ。

50: oh_157 2025/08/23 08:37

良い記事だったわ

51: Caligari 2025/08/23 08:49

constで関数定義していいんか?それで実際動くの?以外の感想は出てこない。

52: nmcli 2025/08/23 08:54

今年の技術系エントリで一番いい記事。対象読者も広そう。

53: hihi01 2025/08/23 08:56

試しにここに書いてある「観点」を指示してChatGPT5に食わせたら素人目にはここにあるのと似たコードが出てきました。

54: TriQ 2025/08/23 08:59

めちゃくちゃ良い記事だ。これが解像度の違いってヤツだと思う。

55: aimux 2025/08/23 09:02

めっちゃ良い記事!非エンジニアなのでコードの妥当性は分からないけれど、視点と視座、デリバリーと要件とのトレードオフなど考えされられたし、なにより学習の必要性ってこういうことだよなと理解させられた。

56: kazuph1986 2025/08/23 09:04

この方にはてなオブ・ザ・イヤーを

57: otihateten3510 2025/08/23 09:05

そうして、動けばいいだけだったはずのコードが、このような重いコードになって、後任者を苦しめるのであった。トレードオフを学ばない人が圧倒的に多い、人は基本的に気になったところだけやる。

58: masa8aurum 2025/08/23 09:09

良記事。学んできた内容によって、ソースコードを見た時の気づきが異なってくる。学ぶ理由のひとつ

59: a96neko 2025/08/23 09:27

指摘事項を全部取り込んだら可読性が悪いソースコードが出来上がるよな

60: Vincent2077 2025/08/23 09:59

とてもよい!!ありがたい!!

61: noname774300 2025/08/23 10:01

学べば学ぶほど、いろいろな選択肢や例外が見えてしまって、判断が遅くなるフェーズってありますよね。無学者からすると「何をそんなに考えてるの? 意味あるの? 心配しすぎじゃない?」みたいになりがち。

62: ch3cooh393 2025/08/23 10:35

この内容を言語化できるのすごいなぁ

63: aike 2025/08/23 10:48

人生で一番大切なのはトレードオフ。

64: hiroshe 2025/08/23 10:49

別に違って見えはしないだろ。動きは見た通りなんだから。なんか違う意味があるのかと思ったわ。

65: sakidatsumono 2025/08/23 10:58

一関数に詰め込みすぎで、適切な隠蔽をすべき

66: ArcCosine 2025/08/23 11:06

良記事。こちらが感じた違和感は最後でちゃんと回収されている。

67: myr 2025/08/23 11:13

どこで使うか次第じゃないん? なんか皆がそこまで良記事って呼んでいるのがよくわからないです..

68: yuno001 2025/08/23 11:23

Excelのヘルプ機能の開発者に読ませたい

69: ToTheEndOfTime 2025/08/23 11:25

分かりやすい良記事。でもシステムプロンプトにそれらを書いておけばいいんじゃないでしょうか。

70: tyosuke2011 2025/08/23 11:27

役に立たない記事どうも

71: newbluesky 2025/08/23 11:29

これさ「人間に対して、もっと勉強しなさい」なのよ。たった一言「AI」と入れただけでトップコメみたいに、AIを引き合いに出す。AI関係ないんだって。言葉も、ちゃんと学べ!だな。

72: chaoschk 2025/08/23 12:01

すばらしい。リスクとコストのトレードオフと,「時間」稀少価値に触れてる。要求の仕様化で各観点を定量的制約条件として定義し,それに一貫性持たせ,制約含めて検証できるかが鍵。スキル程度と見え方の相違も同意

73: erya 2025/08/23 12:03

このフォーマット面白いな

74: frkw2004 2025/08/23 12:16

これらって、ほとんどネット上に作っていることが原因だよな。インフラが変わったときに、その世界では何が影響するのか想像できる知識が必要になる。

75: gratt 2025/08/23 12:19

ただ動けばいいコードの10倍大変なんだよな。

76: umaemong 2025/08/23 12:31

"同じものを見ていても、○○と××では見えている世界がまったく違っている"をメタに体感できるブコメ欄。

77: mit3280 2025/08/23 12:53

“野放図”

78: remonoil 2025/08/23 12:57

知っててやらないと決断したのと、知らないしやってないのとでは大違い

79: ku-kai27 2025/08/23 13:20

面白そう、読む。

80: Itisango 2025/08/23 13:26

難しい

81: kiyo_hiko 2025/08/23 13:26

型に始まり型に終わる、達人の型はときに初心者のそれに近く見えるが、実は見てきた世界が違う…世阿弥元清の風姿花伝/花鏡が浮かんだ。かっこいいな

82: syu-m-5151 2025/08/23 13:32

学び続ける人生は新たな発見と共に世界を広げ、日々を豊かに彩る。一方、学びを止めれば単調な繰り返しに陥り、生きる喜びも色褪せ、心は枯れていく。

83: narukami 2025/08/23 14:26

でもココナラさんて「えっこの機能ないの?」みたいなことあるからな……技術者側じゃなくてサービス設計の問題かもしれんけど……

84: imash 2025/08/23 14:28

エラー処理しないとと、apiは無認証で使えるの?、とは最初に思ったが、色々考えることあるよね…

85: syukit 2025/08/23 14:37

こういうのは座学で学ばなくていいと思う。実践で指摘されたり、失敗していくうちに身につければいい。それと早すぎる最適化はいらない。

86: auto_chan 2025/08/23 14:45

すこ。最後に必要な機能を取捨選択したうえで、最初のコードくらい透明に実装できるようにいかに隠蔽かって腕やフレームワークの見せどころ、だったけどもうAIにそれも含めてちゃんと伝えれば出来上ちゃうの、神。

88: shoh8 2025/08/23 15:00

面白い。見えたうえでやらないのと、見えないは世界が違う。

89: sakuro 2025/08/23 15:09

本文中にも書いてあるけど、実際にはgetName自体でこんなにいっぱい書くんじゃなくて生fetch自体をもっとロバストにラップして使うと思うよ。

90: at_yasu 2025/08/23 15:15

良い話

91: s17er 2025/08/23 15:34

新人教育に良さげ

93: aiya000 2025/08/23 15:46

とりあえず言えるのは、テストのためにdepsを受け取るのは悪手だと思う。 個人的には、最終手段かな⋯。 普通なら、fetchをスタブ化するのがいいよ〜。