たっくん奮闘記 その3
たっくんが奮闘しています。いや、たっくんがアプリ開発に覚醒しつつあります。ニュータイプです。僕から見ると正にニュータイプです。
どうも、こんにちはYas(うつぼ)です。club Torch会員むけにMakunouchiを作ろうと奮闘しております。たっくんの頑張りを褒めたたえるnoteでございます。
息子自慢
前回の記事を自分で見返してみて、1つのことに気づきました。
あれ!?、これ、もうたっくんのお父さんやなと
始めたころには、年の離れた弟ぐらいの感覚だったのですが、
我が子の成長を見つめる父親の眼で見ていることに気づいてしまいました。
いやぁ、出来のいい息子を持って、お父さんは大満足だよ!
そんな感じのワイワイしたアプリ開発になっています。
今週のたっくん
今週は、ログイン→プロフィール画面と開発が出来てきたので。いよいよ、少し難しい機能に取り掛かることにしました。Makunouchiはclub Torchに参加してくださっている天才のみなさまのためのステキなプラットフォームにならねばなりません。
現状、Facebook Groupなのもあり、少しずつ機能を拝借しながら。独自色を強めるという形で進んでいきたいものです。
なので、タイムラインを作ってみようぜ!という話になりました。
RDBMSを使っているわけではないのですが、たっくんは1つの壁にどうやらぶつかったようです。
負けるな、たっくん!いけるぞ、たっくん!
それは、投稿された記事とコメントの関係性です。
Cloud Firestoreと闘うたっくん
Firebaseを利用して開発をしているので、Cloud FirestoreをメインのDBに据えています。選定理由はシンプルで、画面の構成要素をオブジェクトに落とし込むことでデータが直感的に保存できる感覚をまずは理解してほしかったらからです。
Cloud Firestoreは、RDBMSほど柔軟で複雑な結合が出来るわけではありません。なので、オブジェクトをどのような形にするのか?どこで結合するのか?
取得時なのか?取得後なのか?
がとても大事になってきます。
たっくんの素朴な疑問
とても、聡明でインテリジェントな疑問を、たっくんから頂きました。
本当にエンジニアリングしたことないの?冗談だよね?というような、中々切れ味の鋭い質問で、Yas(うつぼ)先生も、内心タジタジだったことは、ここで白状しておきましょう。当然、涼しい顔で答えましたけどねw
その質問は、「正規化と非正規化どちらが良いのですか?」でした。
シャープすぎる質問に、変化球な回答
答えは、案の定、「場合によって使い分ける」なんが……。
これだけだと納得も出来ないだろうと思い、1つの例示をすることを求めました。
「正規化したとき※に書くべきコードと非正規化するときに書かれたコード、どちらがどれぐらい変わるのか、実際に書いて比べてごらん?」
※ここでの正規化は1つのオブジェクトにオブジェクトの責務を超えるものを持たさないという意味です。JSONで考えると。Userとか、Articleみたいにバシッと画面に呼応して決めていくスタイルを便宜的にそう呼称しています
計算量はしっかり!
結局、ループがどれだけ回さなきゃ、表示したいカタチに加工できないのかを考えてごらん。って話ではあります。RDBMSで、例えばOracleなどでオプティマイザーの仕組みを完全に理解するのは相当に骨がおれますが、実行計画を眺めてどれぐらいのループが回っているかをfor文とif文で想像することで計算量のオーダ感覚を実感してごらんという目論見がありました。
この感覚は見積もりをするときに役に立ちますし、パフォーマンスをチューニングせねばらならない状況でもとても役に立ちます。
カリカリにチューニングするときにはループを減らすことで、取得する量や走査する範囲を極限まで絞っていくことで速度を勝ち得ていくことをやらねばならないので。本当にいいトレーニングだなぁと我ながら感心しながらwお話をしました。
閃いたぜ!
天才たっくん的には、この話が分かりやすかったらしく。あ、今回はオブジェクトではなくて、コード側で結合処理をしてみるのでとりあえずやってみます!という風に納得していました。彼の天才である所以は、このとりあえずやってみると言って、すぐそれを実践してみるところですね。この感覚はエンジニアじゃなくなったとしても未来永劫大事にしてほしいなぁと思っています。お父さんはそう思うのですよ!
で、次はテストしながらリファクタリングです
たっくんは、ここまで壁という壁にあたらずにここまで来てしまいました。でも、次はUXという巨大な魔物と闘うことになります。そのために足場を固めておくことはとても大事で、再利用性があるコードを書きなさいとか、見通しの良いコードを書きなさいと色々な聖典と呼ばれる本でみかけるのは、この闘いを有利に進めるためです。屋台骨が揺らいでしまうと、なかなか思い切って変更するとか、エイや!と捨てるとかが出来ないですからね。
コードを見つめながら無駄なところをダイエットしていく作業が必要になってきているので、そこをやってみるのが次の課題だろうなぁとコッソリ思っています。(大々的に公開しているけどw)
けど、すべては魔物との闘いの前哨戦です。負けずに闘って欲しいなぁとお父さんは思うわけです。
今週の名言
Yas:「そろそろコード書くの楽しくなってきたでしょ?」
たっくん:「どんどん進めたくなってきていますね!」
頼もしすぎる、感動しかない!
club Torchで、たっくんの作品をサポートしてみませんか?
たっくんは、リアルなユーザからのフィードバックを受けていくという大いなる試練がこの先あります。2月の中旬ぐらいに、タイムラインまでの成果をWebで限定的に公開しようと思っているからです。たっくんの作品を使ってみたい方は、是非、こちらから、ご入会ください。入会・退会は自由です。club内配信や、他のプロジェクトのお話も聞けますよ。Makunouchiの開発に参画したい方は、こちらからお申込みくださいませ。未経験者の場合には、開発に貢献すること(要するに1機能を開発することをコミットすること)を条件にご指導さしあげます。Webエンジニアとして新たなキャリアを始めてみたい方、久しぶりにコードを書いて欲しい管理職のあなたのご参加をお待ちしております
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?