前回の記事で、「そろそろTodoListアプリくらいは作れるかな」なんて言ってましたが、
挫折しました。
できあがったのはこんなダサいもの。しかもリストの要素を3つ以上に増やすことはできません。
敗因ははっきりしています。
私は構造体の作り方も知らないまま、自作アプリにチャレンジしていたんです、、、
昨日の時点では構造体の重要性すら把握していない始末でした。
結局、相当遠回りした結果、やはり技術書の進行に従って進めていこう、という結論に至った次第です。。
View構造体の使い方はある程度覚えたけど、自作の構造体を作る方法はまだ学んでいなかった
前回の記事を書いた後、調子に乗った私はTodoアプリ開発に取り掛かりました。
そして意気揚々と仕様書、クラス図を作ったはいいものの、深刻な問題に気づきます。
このクラス、View構造体の中でどうやって使うんだ、、?
いやそもそもContentsView構造体でクラスって使えるのか、、?
実はSwiftUIは構造体を前提としたフレームワークになっています。(これは後で知りました。)
クラスを作るのではなく、Viewプロトコルを採用した構造体を作りさえすれば良いのですが、この時点の私はそんなことすら知りません。
私は今まで(基本的には)ContentsView構造体の中でしかコーディングしてこなかったので、新たな構造体を作るという発想がありませんでした。
それに加えて、私はオブジェクト指向の基本的な知識しか持ち合わせていません。
構造体なんてクラスの変種でしょ、というふうに構造体を軽視していたんです。
当然、構造体になんて眼もくれず、クラスでの実装に取り掛かることになります。
そんなわけで、クラスでの実装が終わったはいいものの、これをどうやって画面に表示すればいいかわかりません。
今まで勉強した知識では太刀打ちできない問題にぶち当たったんです。
ググって独習できるレベルには(一応)なっていた!
しかし今の私は、以前とは違います。
まだ少ないとはいえ、一応Swiftの基礎的な言語仕様は身につけました。
ググることができるくらいにはなっていたんです。
そこで手始めにとにかくググりまくります。
良さそうな情報を見つけ、わからないところを検索し、そして更に情報を見つけては検索する、、
これの繰り返しで、やっとこさ、
どうやらSwiftUIは構造体を基本として汲み上げていくものらしい、
ということに気づきます。
後から振り返れば、どうしてそれを知らなかったのか不思議になりますが、、
今までstruct ContentsView{}と数え切れないほどコーディングしてきたんですから(汗)
なんやかんやありましたが、ここで全てがつながります。
なるほど、あのデフォルトで書かれているContentsViewというものこそが構造体なのだ、と!
そして画面に表示できる部品を作るには、Viewプロトコルを採用した構造体を作れば良いのだ!
これでようやく道筋が見えてきました。
構造体のつくり方を覚えよう!
(遅い)
結局私は構造体を何一つ理解していなかったんです。
ただそこに気づけたというだけでも、まあまあな収穫だったのではないか、と思うようにしています。(汗)
技術書というのはよくできているんだなぁ、、
構造体の重要性に気づいた私は、いや待てよ、と思い、手元にある技術書を見返してみました。
するとどうでしょう、
構造体の作り方がしっかり書かれているではないですか!
実は、必要ないと思って飛ばしていた部分が、まさにViewプロトコルを採用した構造体に関するものだったんです!!
何も知らない私は、キモ中のキモとなる部分を自己判断で飛ばしてしまっていたんですね、、
私には、技術書をある程度進めると、自分がやりたいことをやりはじめて暴走してしまうところがあります。
これには、モチベーションを保てる・自分に必要なスキルがピンポイントで伸びる等のメリットがあるんですが、
今回のように必要のない時間を食うリスクもあるんですよね、、
暴走しすぎるのも考えものかもしれません。(汗)
ともあれ、今の自分に足りないもの、必要なものも見えてきました。
構造体のつくり方を覚えれば、きっといい感じのアプリが作れるようになるはずです!
まだみえていないものがあるような気もしますが、、
とりあえず、手元の技術書を完走しようと思います。
(最初からそうしようよ、、)
おしまい
コメント