【新技術】開発未経験の新卒社員がFlutterでスマホアプリを開発できるようになるまで②
こんにちは!インテック 金融事業企画部1年目のモモです。
今回は私の記事の2回目として、開発未経験新卒が、Flutterアプリを開発できるようになるまでを、以下の3回↓に紹介していきます。
第1回:Flutterとは?メリットは?デメリットは?
第2回:開発未経験がFlutterをやってみてわからなかったこと
第3回:効率よくFlutterを習得する方法
この記事を読んで、
「Flutterが気になっていたけれど、なかなか手を出せずにいた・・・」
「アプリ開発したいけど、プログラミングやったことない・・・」
といった方が、少しでもアプリ開発を始めるきっかけを作ることが出来たら幸いです✨
それでは、今回は第2回として、開発未経験がFlutterをやってみてわからなかったことについて、紹介していきます!!
自分のスペック
開発経験:無し
学習したことのある言語:C,C++,Java
(と言っても、Hello Worldができるぐらい)
壁その① ~「Flutter」が何なのかわからない~
まず、そもそもFlutterとは?という状態でした。
wikipediaを参照してみると、以下のように記述されています。
Flutter は、Googleによって開発されたフリーかつオープンソースのモバイルアプリケーションフレームワークである。
・・・???🤔
フレームワーク??
フレームワークは、Javaのような言語とは違うの?
でも、基本言語としてはDartが相当するようだし・・・
といったように、学習しはじめの私は、Flutterが位置するフレームワークというものがよくわからず、ただ「Flutter=スマホアプリを便利に作れる何か」程度の理解しかありませんでした。
現在なら、
Flutterはアプリケーションの画面部分を作成するための雛形(=フレームワーク)で、基本はDartという言語で記述されている
と、理解がつくのですが、当時はFlutterとDartを混同していました。
こちらの問題の解消については、フレームワークやSDKの意味について、突き詰めて検索することもアリです。
しかし私個人としては、Flutterを実際に触ってみて、身体で覚えるのがいいと思います!
壁その② ~非同期処理がわからない~
Flutterでアプリケーションを作成するとき、asyncやawaitといった非同期処理の記法は避けられないです。
JavaScriptなどを触った方はお馴染みかもしれませんが、当時の私は非同期処理とは何か、という地点で止まっていました…
まず非同期処理について、同期処理と対比してざっくりと説明致します。
複数の処理A,Bがあった時を考えてみましょう。
同期処理:Aの開始→Aの完了→Bの開始→Bの完了
非同期処理:Aの開始→Bの開始→・・・
このように、一つ一つ処理を進めて完了させて、それからまた進めて…、と行うのが同期処理です。
逆に、Aを開始してAの完了を待たずに、Bの処理を並列して進めるのが、非同期処理です。
適当なwebページを開いた時、テキストは先に表示されて、画像が遅れて表示されるのも、この非同期処理のおかげです。
もし、webページ中の画像を全部表示するのを待っていたら、webページ自体開くのが遅くて、ストレスがたまりますもんね…
と、ここまで、非同期処理の説明をしましたが、概観はなんとなく分かっても、実際にコードで実装するとなると難しいことです。
私も、非同期処理の意味は比較的すぐにわかりましたが、Dart内で非同期処理のために用意された、
・Futureクラス
・async,await記法
・Streamクラス
などはなかなか使いこなすのに時間がかかりました…
この問題の(私なりの)解消法としては、Dartの記事だけでなく、JavaScriptの記事も目を通してみることが良いと思います。
まず、基本DartのFuture≒JavaScriptのPromiseです。
そして、DartとJavaScriptでは、知名度や人口はJavaScriptの方が多いため、記事の量もJavaScriptの方が圧倒的に多いです。
したがって、Dartだけに調べるのではなく、JavaScriptの記事も調べてみると、自分の腑に落ちるような説明をしてくれる記事に出会えるのではないでしょうか。
まとめ
Flutterを学習していて困ったこと & 自分なりの解消法
①「Flutter」が何なのかわからない
→ とにかくアプリを作ってみて、Dartとの違いを体で覚える
②非同期処理がわからない
→ Dartだけでなく、JavaScriptの記事の調査対象にいれる
いかがだったでしょうか?
次回は、「Flutterの効率的な習得方法」を紹介します!!
ここまで読んでいただき、ありがとうございました!
※ 記載されている会社名、製品名は、各社の登録商標または商標です。