PHPなどWeb系フリーランス歴20年を超える私ですが、これまで以下の様なことが何度かありました。
- Webシステムと併せてスマホアプリも作りたいんだけれど
- エンジニアだからスマホアプリも作れるんでしょ!?
- あっ作れないの!?そこは外注?ふーん
もちろん、露骨に嫌がられたり、残念がられたりすることは多くありません。
しかしエンジニアとして、なんだか引け目を感じることはあります。また、同時に受注できればより受注確度は上がるでしょうし、利益を逃していることは間違いありません。
実際相手にとっても、一緒に頼めたら嬉しいだろうなーというのも分かります。
しかし、Java・Kotlin・Swift等など、新たに学ぶことがたくさんです。
PHPやWeb周辺技術だけでも追ってくのが大変なのに、そんなの無理だから仕方ない。
……と何年か前の私は考えていました。しかし、今ならFlutterという手があります。
本ページでは、最近私が「Flutterを学び直すぞ!」と決めたこともあり、PHPエンジニアがFlutterを学ぶ意味・メリット・デメリット等をまとめました。
フリーランスの方など、私と似たような環境にある方に、少しでも参考になれば幸いです。
Flutterってなんだ!?
Flutter(フラッター)は、Googleが開発したオープンソースのUIフレームワークです。Dart(ダート/ダーツ)という言語を使用します。
Android、iOSのアプリケーションを作れる
Flutter/Dartを使えば、Android、iOSのアプリケーションを1つのコードで作ることができます。
現在、ネイティブのアプリを作るには、
- Android→Kotlin(Java)
- iOS→Swift(Objective-C)
が使われます。※カッコ内は、以前の主流だった言語。
PHPerがそれぞれ2個の言語を実務レベルまで学ぶのはハードルが高すぎます。また、常に最先端を追ってくのは現実的ではありませんよね。
Flutterなら1個の言語で済むので、それならなんとかできそうな気がしてくるものです。
JSに似た言語
Flutter/Dartは、普段Webで使用しているJavaScriptやTypeScriptとそう変わらない感じで書けます。
Web系のエンジニアであれば、JavaScript/TypeScriptは多かれ少なかれ経験がある方が多いですよね。つまり、比較的導入のハードルが低いと言えます。
私もそれがあったからこそ、気軽に始めることができました。
日本語の文献が少なかったけれど今なら……
Flutterが正式リリースされたのが2018年12月4日とのこと。そしてその後数年は、まだ日本の文献は多くなかったようで、学習のハードルがあったと考えられます。
実際、私もFlutteを知ったのはそのずっと後ですし。
私が学びだした2022年ごろには、日本語の文献が増えてきました。Youtubeチャンネルなどもいくつかありましたね。
2024年現在では、さらに増えていることでしょう。つまり今日では、学びやすい環境が整いつつあるはずです。
人気(将来性)がある
言語を学ぶからには、将来性も考えて学びたいものです。Flutterと類似するフレームワークとして、React Nativeというものもあります。
Reactと言えば、Next.jsと併せてフロントエンドの花形的存在です。Reactを学べばReact Nativeに活きる……という説明がされていることもあるようです。
が、実際のところ、2024年現在では、Flutterの方が圧倒的に人気です。
実際に2019年からの検索数を、Google トレンドで見てみましょう。
React Nativeと比べても、Flutterの方が人気&将来性が高いと言えそうです。
もちろん、Web技術は変遷していくので将来のことは分かりませんが、今のところは問題無さそうです。
有名企業のアプリもFlutterを使っている!?
開発元であるGoogleはもちろん、NTTドコモやBMW、トヨタ等の有名企業も採用していると言われます。詳しくはFlutter公式サイトに、Flutterを利用している企業のロゴがありますので確認してみてください。
「Flutter 事例」で検索すると、他にもいろいろ出てきますので、気になる方は調べてみてはいかがでしょうか。
ちなみに私も毎日使っている外国語学習アプリ「Duolingo」も、Flutterで作られているとのこと。自分が使っているアプリが採用していると、見る目が変わってきますね。
PHPWeb系フリーランスがFlutterを学ぶメリット
すでにここまでの解説の時点で、Flutter自体のメリットは挙げてしまっていました。
もっと視点を変えて、Web系PHPフリーランスエンジニアがFlutterを学ぶメリットを考えてみたいと思います。
取りこぼし減少
これは冒頭にも書いた通りです。これまで、Webサイト(Webシステム)とスマホアプリをセットでお願いしたいという案件を取りこぼしたことがありました。
それらはセットで考えると、少なくとも数百万の損失です。
あまりお金を使わない独り身フリーランスであれば、1年くらい暮らせる金額かもしれません。これはもったいないです。
提案力&ブランド力上昇
「取りこぼし」を防ぐということを別の視点で見ると、自ら提案ができるようになります。
スマホアプリも対応可能です!
当たり前に思われるでしょうか?しかしこれは実際には大きいと感じます。
特に私の場合、付き合いの長いお客さんも多いので、「この業務はスマホアプリにすれば効率化できるのでは!?」などと提案ができるようになりました。
これまでスマホアプリは避けていましたが、自ら提案ができるようになります。そしてスマホアプリも作れる=個人のブランド力の上昇にも繋がります。
スマホアプリは単価が高い(と思ってもらいやすい)
WebデザインやHTML/CSSコーディングにはお金を出さない中小企業の経営者は実際多いです。「1サイト10万で作って」などという依頼も世の中にはザラにあり、狂気としか思えません。
しかし、Webシステムに関しては「比較的高額なもの」として認知されています。
さらにスマホアプリは「より高額なもの」という認識を持つ方も多いようです。実際、「スマホアプリ・開発」で検索すると、最低でも数百万~という情報が当たり前だからでしょう。
そのため、より高単価な仕事として受けやすいと感じます。
PHPerとしての知見が広がる
ご存じの通り、他の言語を学ぶことで、知見が広がります。エンジニアとして技術の相乗効果が見込める可能性があるでしょう。
ちょっと抽象的でしょうか!?
例えば自分で作ったPHPのWebシステムへ、Flutterアプリから認証が必要な場合を想定してみてください。その場合、PHP側はどう実装すれば良いでしょうか?
- 独自のAPI認証を実装する?
- Laravel Sanctumを使う?
- Laravel Passportを使う?
その答えは案件によるでしょうが、PHPと全くの無関係というわけではないのは分かりますよね。
Flutter/Dartに取り組むことは、PHPerとしてのスキルアップ・底上げにも繋がるはずです。
モバイル開発でよく使われるFirebaseとPHPの連携も、Flutterを機に試してみる方もいらっしゃると思います。
デメリット・注意点
散々良い面ばかりをご紹介したので、ここでは逆にデメリットを考えてみましょう。
最先端の機能は無理なことも
各OSは随時アップデートを行っており、最新機能も増え続けています。しかしFlutterがその最新機能にする対応するとは限りません。
そのため、最新・最先端の機能は使えない可能性があります。
その点を考えると、KotolinやSwiftのようなネイティブ言語の方が有利だと言えるでしょう。
何でもかんでも1コードで作れるわけではない
クロスプラットフォームに対応するアプリが作れるのがFlutterの良いところとして紹介しました。
しかし、何でもかんでも、何も考えずに1コードで作れる・実装できるわけではありません。
iOSとAndroidなどOSの違いに起因することはあります。つまり、Flutterで作っているから万事OKというわけではなく、iOS, Androidの違いを制作者が理解する必要があります。
ゲームには向いていない
ゲーム用のライブラリは多くないようですので、コアなゲームを作るには向いていません。
これは私の専門外ですが、たぶんUnityとか?のゲーム開発エンジン等を使うのでしょうか。
いずれにしても、私のようなWeb系フリーランスには最初からやってこない案件と思うので無視して良いとは思いますが。
それなりの学習時間を要する可能性
PHPなどのバックエンドエンジニアが、Flutterを学ぶのはやはりそれなりの時間を要する可能性があります。
当然のことですが、仕事で通用するレベルに達するまでには、一朝一夕では行かないでしょう。
何を学ぶかはひとそれぞれです。Web系フリーランス=事業者にとって、もっと優先すべき技術があるかもしれません。当たり前のことではありますが、よく考えて学ぶ技術を決めたいですね。
Macが必要(に近い)
iOS用のシミュレーターを利用したり、アプリをビルド(ストアで配布できるように)したりするにはXcodeが必要なので、Macで行います。
Windowsのみしか持っていないエンジニアの割合がどれくらいなのかは分かりませんが、そういった方は出費を要するので注意が必要です(私も天邪鬼なのでWindows開発メインです)。
また、Xcodeやエミュレーター関連のデータは非常に重いので、ストレージの余裕も必要です。
Macはストレージのアップグレードが高い&自分で換装できないモデルが多いので、足りなくなることもあるかもしれません。
最重要:なんでも対応できるようにはならない
PHPエンジニアの僕も、Flutter学べばWebシステム+スマホアプリに対応出来るようになるんだぜぃ!
……とは思わないでください。実際、スマホアプリは簡単なものだけではありません。
スマホアプリは様々な実装方法・固有の設計手法・難易度のものがあります。
- Firebaseを使ったリアルタイムデータベースアプリ
- カメラ、センサー、GPS、デバイス固有の機能を多用するアプリ
- アニメーションが多用されたアプリ、カスタムUIを多く含むアプリ
- 大規模なデータを扱うアプリ
- 高いセキュリティ要件を持つアプリ
などなど、その道の専門家でなければ対応できないようなアプリはたくさんあります。
そもそも、OSと深い連携が求められるアプリの場合は、KotolinやSwiftで開発する方が相応しいこともあるでしょう。
あくまでPHPエンジニアをベースとして考えるのであれば、ライトなスマホアプリがカバーできるようになる、程度に考えておくのが良いかもしれません。
自分で対応できそうもない場合は、潔く出来ないと伝えるか、専門家に外注を提案する勇気が必要かもです。
まとめ
PHP/Laravelエンジニアが、Flutter/Dartを学ぶ意味は(私は)あると思います。
もちろん誰も彼もというわけではありませんが、新たな技術スタックとして、フリーランス活動に幅を広げてくれるのは間違いないでしょう。
当サイトでも今後少しずつ取り扱っていきますので、PHP以外にも知識を広めたい方は参考にしていただければと思います。
なかなか更新する時間が取れないのですが、学びたい欲&熱が冷めないうちにがんばっていきます。
コメント