今回のBaas学習では提出課題が2つもあり、何度も再提出することになりました。
間違いなく一番の難問で、これまでのようにショートカットしてマスターできるような類ではありません。ここまでくると本格的なWebアプリケーション開発という感じがしてきて、Baasそのものよりもこれまでの学習(HTML/CSS/Javascript/jQuery/Bootstrap)の総決算です。
1.Baasとは何か?
Webサイトを開発していると、ユーザーから入力された情報を保存したり、認証したい時がありますよね。例えば会員ログインやチャットのようなコメント情報が該当します。
Webのようなフロントエンドではデータの認証や保存処理のような重い処理には適しておらず、従来サーバリッチなバックエンドで処理していました。
バックエンドの開発は大変なので、この部分をクラウドで提供する形態をBaas(Backend as a Service)と呼びます。
2.Firebaseとは
その中でもGoogleが提供しているFirebaseが有名で、比較的簡単にWebアプリケーションへの組み込みが容易です。Firebaseではバックグラウンドで必要な『認証』・『DB操作』・『データ保存』等の機能を提供しており、これらにアクセスするWebAPIを組み込むだけでWebアプリケーションが開発できます。
前置きが長くなりましたがTechAcademyはFirebaseを使って、Webアプリケーション開発を学習していきます。
3.バックエンド処理と連携する難しさ
TechAcademyでのカリキュラムの流れは、『ログイン認証』ー>『データ保存』ー>『DB操作』という流れで機能毎に学習していき、最後に課題(本屋サイト、チャットルーム)をこなします。
Firebaseはたしかに便利で、認証ー保存ーDBは簡単に実装できます。
但し、Webアプリケーションでは、いちいちFirebaseにアクセスせずにキャッシュ保存するので、キャッシュ情報をFirebaseと同期更新しないといけません。これが難しい。。。
当然ながら情報更新となるトリガーを補足しなければならず、イベントハンドラと呼びます。このイベントハンドラがどこなのかはソースコード上でしっかり把握する必要があります。
4.ソースコードを読む
残念ながらカリキュラムをしっかりこなしていたとしても、課題は解けませんでした。
- 既に98%完了しているサンプルコードに必要機能を追加
- サンプルコードは1kstepを超える
- サンプルコードの処理フローが追いにくい(またはイメージしてたのと違う)
まず、課題のなかでは実装しなければならない機能は1つなのですが、ソースコード全体を読み込まないと、ソースコードのどこに記載すればよいのかすら分からない状態になります。
こんな感じで平気で4、5時間ソースコードを追いかけては、結局どう処理していいのか分からずにGoogleで検索しまくる日々が続きます。
5.ホワイトボードに書き込む
はじめの1週間はソースコードとにらめっこしつつ、ソースコードの分析にあたりましたが、さすがに1kstep以上あると記憶できるレベルでなく、早々に諦めます。
ソースコードは紙に印刷して書き込むか、書いては消せるホワイトボードをオススメします。
Amazonで壁に貼り付けるホワイトボードを購入しましたが、思ってたより全然安くて使いまわし効くから気に入ってます。
ホワイトボード シート マグネット 40×80cm 磁石がくっつく メモ 子供落書き 掲示板 メニューボード カット可能 取り付け簡単【磁力弱い場合は全額払い戻す】
ソースコードを分析するときは、関数を一つのまとまりとして、どういう順番で関数が呼び出されているのかを追っかけると格段に理解が深まります。
よく考えると開発の現場では、全くの新規でプログラムをコーディングすることは少なくて、基本的には誰かが作成したコードを読まなきゃいけません。また、規模によっては設計書もないと思うので、結局ソースコードを自力で解読して構造分析する力はマストじゃないかと思います。
6.それにしても不親切
なんとかして2,3日費やして何とかソースコードは読めるようにはなり、コードを書き込む場所と処理内容はイメージできるようになりました。
しかし、TechAcademyのカリキュラムと課題が連動してなくて、どう実装していいのかわかりません。データの削除はremoveで良いのか、nullを代入するのかも分からないし、どこにも書いてません。ここはさすがにGoogleでは調べようがなく、Slackチャットで質問投げないと分かりません。(何度か素っ頓狂な回答が返ってきて、都度イラッとしましたが)
ソースコードを最初から最後まで分析できたのは確かに力になったと思いますが、正直カリキュラムは必要か?と思いますね。これなら参考サイトだけにして、課題の数を増やした方が良いかと思います。
まぁ最後は場数を踏まないとスキルが定着しないので、カリキュラムは”どこに何が書かれていたか?”くらいを理解しておいて、あとで見直すくらいの感じで良いかと思います。
(あとで調べると卒業後もカリキュラムは参照できるようです)
7.まとめ
今回はさすがに心折れそうでしたが、なんとか踏ん張って乗り越えることができました。
プログラム初心者は大変苦労するかと思いますが、一度はソースコードを全部読み切ってもらうことをオススメします。
自分で関数(処理)の流れを書いてみると、このソースコードは何をしようとしているのかがだんだん分かるようになってきます。そうやって、自分が実装しないといけない範囲と処理を言語化できるようになれば人に質問したり、Google検索できるようになります。これが大事。
2週間掛かってなんとか課題をクリアすることができました。。明日以降はVue.jsと最後はオリジナルサイトの開発となります。
明日からまた頑張ります。
コメント