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..🙇♀️
Made with Slides.com