Flutterハンズオンでやったこと
2021/04/12
DevRel/Online #3
jiyuujin
- 複雑なUIを作るのが好きです
- Vue/Nuxt/React/Next/Scala/Swift
- スタッフとして色々と参画中
- JAWS DAYS 2021 個人スポンサー
- Flutter Japan User Group (Osaka)
- v-kansai / kansai.ts
- PWA night
- プロフィールサイト
- https://yuukit.me
- 技術ブログ
- https://webneko.dev
喋り相手
募集中
Flutter Japan User Group
東京・大阪
それぞれに運営スタッフ
主な活動内容
- 東京運営
- ミートアップを中心に開催
- 大阪運営
- ミートアップに限定していない
- もくもく会を毎月開催
- ハンズオン企画を 2-3 月おきに開催
- 最近では Twitter Spaces を使った活動など幅広く
ハンズオン企画
Flutter アプリを作る
Flutterとは
- Google社が開発・提供しているクラスプラットフォーム対応アプリ
- ネイティヴアプリのみならずWebやデスクトップアプリも製作可能
簡単にデモを
エミュレータ起動
- Android Studio を使うにしても VSCode を使うにしてもGUI操作を簡単に使える
- flutter run
- (必要に応じて) flutter pub get
こういう経緯から始めた
- バックボーンに自分自身が勤怠管理アプリ (ChangeNotifier) を製作していた経験
- 決め手は「フロントエンドカンファレンス関西2019」で登壇者だった大西優司さんとの出会い
- この詳細についてはブログをご確認ください
2019年11月下旬始動
これまでに重ねること計8回
リアタイ延べ70名
満足度平均8.64Pt
実際の様子って
初回に限りオフラインそして今のコロナ禍
辞書アプリを作る
- アプリは Firebase 周辺技術を使う
- Firestore に単語(英語・日本語)を保存する
- Firebase Extension のひとつ Translate Text を利用して入力した単語の翻訳を行う
- テーマは自ら当時 Firebase に触れていたのを理由に、Firebase をテーマに選定した
- 2回目以降はアンケートに基づいてテーマを選定した
辞書アプリ以外で
作る手段 | 周辺技術を学ぶ | アプリ / Web |
---|---|---|
辞書アプリを作る | Firebase | アプリ |
Instagramのようなアプリを作る | Stateful Widget | アプリ |
通話アプリを作る | WebRTC | アプリ |
ポータルサイトを作る | Atomic Design | Web |
人狼ゲームを作る | Riverpod | Web |
今の流行りに乗ったり
お誘いを受けたり
当初は不安を抱えるも
オンラインを武器に
具体的にやったことは
オンラインを進める上での武器
- オンライン形式の開催ルールを設定する
- ドキュメントサイトを製作する
- ターゲットを極力絞り定めた工程をこなす
オンライン形式の開催ルールを設定する
1️⃣
それぞれの役割は
- Zoomで音声のやりとりを補佐
- 配信用Zoom、YouTube連携もここで
- メンターと参加者はブレイクアウトルームを切って、3〜4名のチームごと動いてもらう
- Slackで文字情報のやりとりを補佐
- その日限りかつ各メンターさん専用のチャンネルを準備する
ドキュメントサイトを製作する
2️⃣
公式でも分かり易い
当企画のテーマにより合った解説があると
ドキュメントサイト
https://flutter-osaka.netlify.app/
VuePress + Netlify
VuePress をこう活かす
- そもそも VuePress とは
- Markdown ベースで書ける静的サイトジェネレータ
- ナビゲーションメニューが用意されている
- コードハイライトも書ける
- Vue Component を作ってカスタマイズしたい箇所のデザインを書ける
- ビルド・静的サイトジェネレートは vuepress build 一発かまして Netlify に上げる
色々と使えて便利
当サイトの主な用途は
- ハンズオンの事前準備に利用する
- 当日までに行うべき環境構築を記載
- Firestore をテーマにした回では、事前に Firebase アカウントの作成を済ませることなど
- 配信動画(あらかじめ収録しておいた動画を YouTube にアップ)のリンクを記載
- 成果物となるサンプルリポジトリのリンクを記載
- 解説書と称した用語集のリンクを記載
- 当日までに行うべき環境構築を記載
- ハンズオン当日に気持ち良くスタートできるようにする
配信動画について
- 当初はリアルタイム配信を行っていた
- その理由はハンズオン当日に起こる予期せぬエラー(その多くは環境依存に伴うエラー)でメンターの負担が増えた
- メンターだけで上記の課題が解決すればまだ良いのだが、先生の配信にも影響し全体として時間通りに物事が進まない場面が増えた
- 一部「事前収録」を取り入れたりその解消に努めた
それでも環境構築してこない方もいて
一週間前周知の他無し
💡
ターゲットを極力絞り定めた工程をこなす
3️⃣
あくまでアプリを動かす目的で余計なコストを払いたくない
Flutterアプリを動かすこと
- 実機による挙動の確認は行わない
- もし実機デバッグをしたい場合は、ハンズオン企画の後で #handson や #questions などで聞くようにお願いしている
-
Android エミュレータで挙動を確認する
- iOS エミュレータでは挙動を確認しない
- MacOS 利用者だけではなく Windows 利用者もいる
- 基本的には iOS エミュレータでも動作すると思うが動作保証していない
- エディタに Android Studio を使う
- 最近では VSCode を使う方が増えているので、今後変わる可能性も否定できない
Androidエミュレータに絞る
- アプリの挙動を確認する方法が参加者によってバラバラになるのを防げる
- 事前に準備するドキュメントの範囲を Android Studio のセットアップに限定できる
- メンター・スタッフの作成する手間を省ける
- 参加者の構築する手間を省ける
- 絞る代わりに、MacOS / Windows 双方の動作確認など念入りに準備を進める
それでもぶち当たる
Androidエミュレータが起動しない
その他色々あって
- 環境依存に伴うエラーが多かった
- HAXM / Hardware Accelerated Execution Manager のエラーに伴いエミュレータが起動しない
- エミュレータは起動している。しかしエミュレータ実行でコケる
- ローカルに落としてきたDartバージョンと、とあるFlutterプロジェクトに限って使っているDartバージョンの不一致に伴い、エミュレータが上手く動かない
- 環境構築が上手く行かない、ハンズオン当日このような類のエラーに出会してしまう
最後に自分なりのDevRelを簡単にまとめ
- コミュニティのプラットフォームにSlackを活用
- あくまで目的はアプリを動かすこと
- ドキュメントを一から作ること
- イベントのスタッフ・登壇者に潜り込もう
- カンファレンスに参加しよう、可能なら懇親会まで
今後の野望も
Thank you..🙇♀️
Flutterハンズオンでやったこと
By jiyuujin
Flutterハンズオンでやったこと
DevRel/Online #3 では Flutter Osaka を中心に
- 719