見出し画像

(第27回)「プログラミングやりたくない!」〜下から目線のコーディング武者修行〜

〜Objectが必要になったのは◯◯◯◯を扱うためなのか、の巻〜

前回、object.propertyとドットでつなぐ書き方をするobject、アレ、そもそもなにするものなの?という。

言ってるだけでは仕方ないのでちょこちょこ調べてみると、やっと「Objectが使われるようになった背景」が見えてきた。

割とすぐにヒントが見つかったのが嬉しく、そそくさとnoteで書いてみることにした( ´ ▽ ` )ノ

[Objectが使われるようになった3つの背景]

(1) 複数人で開発をするようになったから

どーもこれが1番の理由みたい。個人個人が勝手にコーディングしてる時は別に困らなかったことも、多人数でコーディングするようになったらトラブルのタネに、という。

Aさんだけが作ってるなら、作った本人であるAさんだけがわかってればいい。

ところがAさんだけでなく、Bさん、Cさん…と関わる人が増えていくと、「特定の人にしかわからないルール」があるのは困り物。

そこで、一定のルールに則って、できること・できないことの切り分け、最悪やらかしても最小単位で被害がおさまるなどなど、そうした「多人数でひとつのものを作る」時の必要からObjectが重視されるようになった様子。

これで自分が「Objectって、なにするものかなー」と飲み込めない理由もわかった。一人で作業してる限り、Objectはマストじゃないのね。複数人の作業に関わってなければ、Objectが「なんだこれ」なのも自然なことなんだ。

(2) 「状態が変化する」のを表現したかったから

同じDataを扱うものでも、ArrayとObjectの違いはこの「Statusが変化するよ」ということなんだろう。

『ドラクエ』とかやってると、「どく」とか「マホトーン」など、「いつもと違う状態」が用意されてる。

読んだ本では「ショッピングカート」が取り上げられてたけど、「カートに商品が入った」「カートは空です」など、カートひとつとっても状態が変わる。

そういう、状態が変化するものはarrayでは扱いにくいらしく、それで考え出されたのがobjectみたい。

なんだろ、Array = 冷蔵庫、みたいなもんかな? 買ってきた食材をボーンと入れておく、料理するときに取り出す、食べきれなかったものをしまっておく、という。

一方のObjectは「食材」そのものという感じ。「うわー、昨日の半額セールで買ってきたマグロの刺身、もーダメになってるよ!」など、ちょいちょい状態が変化する。

いきのいいマグロなら刺身にしよう、賞味期限ギリギリなのは焼けば食べられるんじゃないか、などなど、「その時の状態」で「やることが変わる」というのもObject的だと思うが、どうだろう。

(3) コーディングの世界で「時間を扱う」必要が出てきたから

これはもう、上の(2)を言い換えたようなもんだけど、結局、WEBの世界で「時間を扱わなくてはいけなくなった」からなんだろう。

さっきのショッピングで言えば、カートは「空っぽ」からスタートして、「商品をカートに入れて」、やっぱり気が変わって「カートから商品を削除」し、その後本当に欲しい商品あったので「カートに入れて」「支払い」をする、とか。

インナーネットの歴史を調べてみると、そういう「状態が変わる」なんてことを想定せずに作ったそうだから、それをみんなで「なんとかして」いるのが現状だそうな。

さっきのカートに入れて削除して、なんてのは日常的な動作だけど、あれ、一個でも前の状態が残ってたら大変なことに。買ったはずなのにカートに残ったままだとか、削除したはずの商品が削除されてないので3個分の代金出ちゃったとか。

そうやって考えてくると、JavaScript関連でObjectの表現が多用されるかっていうと、この「もともとはWEBの世界になかった”時間経過”をなんとかする」ために生まれたのがJavaScriptな以上、「状態変化を扱うObject」が必須なのね。

前々から「フロントエンドJavaScriptは読みにくいなぁ」と思ってきたけど、あれ、結局「もともと扱う予定がなかったものを、どーにかきて扱えるようにした」手前、仕方ないのかもしれない。

そしてまた、自分が「Objectってなにするためのもの?」と合点が行かなかったのも無理はない。だって「状態が変わる」ようなプロダクトを作ってないんだから。

自分で作った真っ黒画面用のツールはPythonしか使ってないから、「自分一人で作って」「自分一人で使って」さらには「状態変化が生じない」ものな以上、objectの必要性がなにもない。

裏を返せば、多人数でコーディングするプロジェクトに参加すると、Objectは避けて通れないんだろう。

あとは今回、Objectについてしらべてたら、OMG(Object Management Group)という団体があるとわかったから、たぶんこの「中の人」が”constructor(super)”とかも策定したんじゃないかと思うけど( ´ ▽ ` )ノ

https://www.omg.org

でも、このOMGの人たちも大変だったろうなー。「それまでは必要なかった」ことを「今あるもので、どうにか扱えるようにした」わけだから。

Object Orientedなんとかを整理したのは、この団体関連の3人だそうだから、まずその人たちを調べてみよ( ´ ▽ ` )ノ

#プログラミング
#学習法
#インターネット
#JavaScript


この記事が気に入ったらサポートをしてみませんか?