kugi's notebook

やったこと、思ったことなどつらつらと書きます

Flutter build for iOS ~SDKは更新すべし~

はじめに

Cammelでは4月からFlutterを用いた新プロダクトを開発しています。 クロスプラットフォームReactNativeFlutterとなったときに、どちらとも誰も経験がなかったのでルーレットで決まりました。

f:id:kugi_masa:20200715110246p:plain
Flutterに決まったぞ!🎉

コロナの影響でフルリモートです。

👨‍💻 ))))) (((((👨‍💻

私はMacユーザなので、今回はiOSビルドで困ったことについて書きます。

Simulatorと実機

Simulatorビルド後に実機ビルド(逆もしかり)をしようとすると、 以下のようなエラーが出ていました。

error: Building for iOS, but the linked and embedded framework 'App.framework' was built for iOS Simulator. 
(in target 'Runner' from project 'Runner')

先に結論からいいます。

SDKは更新しましょう!

以下のリンクにもあるように、v1.15.4以降のFlutterプロジェクトであれば、切り替えてビルドをしてもエラーは出なくなっています。 Xcode 11.4 Support - Flutter

何をしたか

ここからは、私が行った手順に沿って書いていきます。

前振り

私たちは開発スタート時Flutter SDKv1.12.13.hotfix+9を使っていました。

Flutter SDKのアップグレード

flutter upgrade

SDKを更新します。

Flutter is already up to date on channel stable
Flutter 1.17.5 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 8af6b2f038 (11 days ago) • 2020-06-30 12:53:55 -0700
Engine • revision ee76268252
Tools • Dart 2.8.4

現在の最新は

  • Flutter SDK : v1.17.5
  • Dart : 2.8.4

でした。

エラーの確認

上記の公式のドキュメントや以下のIssueにもあるように、v1.15.4以前のFlutter SDKではSimulatorと実機を切り替えたとき私と同じようにエラーが出ていたようです。 https://github.com/flutter/flutter/issues/50568

App.framework、Flutter.frameworkを一度取り除く

公式ドキュメントの手順にそって、App.frameworkFlutter.frameworkを削除します。

コマンドラインから

rm -rf ios/Flutter/App.framework
rm -rf ios/Flutter/Flutter.framework

コマンドラインから削除した場合はios/Runner.xcworkspaceでもReferenceが消えているか確認

Xcodeから

f:id:kugi_masa:20200715112703p:plain
Referenceは残さず完全に削除

ドキュメント通りの設定がされているか念のため確認

Simulatorにビルド

私はAndroid Studioを使っているので、Android Studioでビルドしました。

Embed Frameworksの確認

再度ios/Runner.xcworkspaceを開き以下のようにチェックをつける

f:id:kugi_masa:20200715113258p:plain
Runner.xcworkspace

実機にビルド->Simulatorにビルド-> and so on ...

この後、AndroidStudioに戻り、 iOS実機 -> Simulator -> iOS実機の順で3回ビルドしました。

これで実機からSimulator、Simulatorから実機での切り替えを確認できました。

まとめ

実は開発が始まって1ヶ月がたったぐらいでSDK更新の話は出ました。 (そのときはv1.17.1 or v1.12.13+hotfix.9でした)

しかし、そのときの最新(v1.17.1)ではなぜかiOSで画面遷移後にWidgetが一部表示されないという問題があり、最新SDKに合わせて実装し直すか、チームで統一した現在のバージョン(v1.12.13+hotfix.9)の実装のままでいくかで議論しました。

そのときは開発序盤だったので機能追加を優先して手戻りをせずにv1.12.13+hotfix.9で統一することとしました。

今回ビルドで問題が起きたことでSDKはあげることになりましたが、 v1.17.1時点でのチームの結論はそれはそれでよかったのかなと思います。

何はともあれ、スムーズにアップグレードに移行できてよかったです👍 (現在の実装ではv1.17.1時点でのWidgetのバグも解消されていた...!!)

github.com

やったこと

  • FlutterのSDKを更新してスムーズにiOSビルドできるようにした

わかったこと

  • SDKは積極的に更新していこう!!

次やりたいこと

  • そろそろ右上のDebugラベル取りたい

Scrum Fest Osaka 2020 参加レポート

はじめに

f:id:kugi_masa:20200627155523p:plain

Scrum Fest Osaka 2020に参加してきました!! www.scrumosaka.org

今回はオンライン開催ということもあり、地方スクラム/アジャイルコミュニティの100以上のセッションに参加することができるイベントでした。

今回はenPiTで大変お世話になったmiholoveさんにいただいたアトラクタさんのスポンサーチケットで参加しました。学生のうちにこんなBIGなイベントにできるのは本当にありがたいです...

miholoveさん、アトラクタさんありがとうございます✨

www.attractor.co.jp

ざっと書いているので個人的な主観や間違った認識もあるかもしれません...💦

miholoveさん基調講演「今あえてのスクラム

今回オンラインでの開催と聞き3、4秒程度「うっ」となったそうです。

でも、あえて「うっ」と思うことに取り組んでいこう! そういう機会にこそ成長がある。

確かに...!!

アジャイルマインドセットをもって非秩序な問題に取り組んでいく。

自分とは違う考え方、感性を持つ人とたくさん触れ合って、 ぶつかって、話し合って革命を起こす。

いい話...!!

Zoomの背景をスライドにした発表でした。 (ビールを想起させるスライドによるサブリミナル効果笑)

ご本人のスライドもこちらに載っています。

miholovesq.hatenablog.com

Agile Wars -アジャイルチームの夜明け-

kyon_mmさん、neno nenoさん、Gota Miyazakiさん、Takao Oyobeさんによるセッションでした。

内製開発チームの及部さん、受託開発チームのkyonさん

別々の環境でアジャイルに触れたお二人がどういった経緯でコミュニティに参加したのか、どのように出会ったのかというお話を聞くことができました。

対極かのように思える「内製」と「受託」のお二人もアジャイルコミュニティーでの関わりから見るともはやチームだった。 (CEDECやRSGTでは偶然にもリンクしたお話をされていたらしいです)

STAR WARS要素も満載で

MAY THE TEAM BE WITH YOU

がとても刺さりました。

Episode 9「Agile Wars -アジャイルチームの夜明け-」としてのセッションを受け、最後には「もし来年Episode 10を自分がするならなんというタイトルをつけるか」を参加者全員で考えました。

私は自分のチームであるCammelのことを思い、卒業で一足先にチームを離れたとしても心、気持ちとしてはチームの一員でありたいという思いを込めて、

「チームを離れてもチーム」

をあげました。

演奏付きの講演でもはや「映画」でした笑

アジャイル & プログラムマネジメント

せっかく広島にいるので広島テーブルのセッションに参加しました。

広島修道大学の佐藤達男先生によるセッションで、 プロジェクトマネジメントの歴史からアジャイルの考え方への移行やユーザー参加型のデザイン、ユーザーを巻き込んでいくプロジェクトマネジメントについて聞くことができました。

ユーザーを巻き込んだデザインのところで講義で学んだ 「誰のためのデザイン」を思い出しました。

www.amazon.co.jp

エッセンシャル モブプログラミング 〜実践者が考えるモブの価値,原則,プラクティス〜

モブチームの成長についての話でした。

モブチームのレベル感を図式化、そのレベルでのプラクティスについて聞けました。

ちょうどCammelでもオンラインモブプロで開発をしているので、参考にしたいです!!

上級モブ:One is all, All is one 「僕はチーム、チームは僕」

speakerdeck.com

エクストリームプログラミング」から読み解く現代ソフトウェア開発~「ストーリーポイント」と「自動テスト」の功罪~

アジャイルスクラムについてはこれまで学んできましたが、XPについてのお話を聞く機会はあまりなかったので参加しました。

XPでは工数の見積もりにおいてストーリポイントの使用は外され、時間での見積もりにシフトしているようです。

以下のような話も👀

poohsunny.hatenablog.com

ストーリーポイントやチェックリストといったツールを使用する際に、 なんでこのツール使ってるんだっけ??と忘れたころに再確認することが大事だよねという話もありました。

プランニングポーカーをするのは見積もりをしてコミットメントを確約するためではなく、チームのコミュニケーションを通じて合意をとるためにする

なるほど...

まとめ

今回このような貴重なイベントに参加できて本当によかったです。アトラクタさん、miholoveさんありがとうございました!!

DiscordとZoomを使ったイベントだったので気になるセッションに気軽に参加できるのはとてもよかったです。

学びの場が湯水のように溢れていたので整理して実践までとなるとかなり骨が折れそうですが、自分のペース、チームのペースで成長していきたいです。

オフラインのコミュニティイベントも参加できる日ができたら参加したいです。

運営のみなさんもありがとうございました!お疲れ様でした🎉

(余談:Discordの廊下チャンネルがよかった。オンラインなのにトイレもあった安心🚽。)

やったこと

  • Scrum Fest Osaka 2020でワイワイした

わかったこと

  • コミュニティイベントに参加するのは楽しい

次やりたいこと

  • 今回得た学びをCammelに共有、実践したい

レッドハッカソンオンライン2020振り返り

はじめに

レッドハッカソンオンライン2020に参加しました!

www.pref.hiroshima.lg.jp

レッドハッカソンとは

広島県HMCN(Hiroshima Motion Control Network)さんが主催するハッカソンイベントで、エンジニアだけでなくデザイナーやプランナーとしても参加ができます。

今回はコロナの影響でオンランでの開催でした。 今後ハッカソンはオンラインが主流になっていくのでしょうか...

オンラインでの開催ということもあり、広島以外からも参加する方が多く参加者約40人となかなかな規模のイベントでした。

アイディア出し

テーマは

「人々が安心して外出できて集うことができる日」が来たときに始めたいサービス・プロダクト

オンラインということで、以下のようにアイディア出しが行われました。

  • 参加者がGoogleSlideの自分のスライド(1枚)にアイディアを書いていく
  • 1分間のピッチ
  • 各自3票投票
  • 上位のアイディアを選出し作りたいプロダクトのチームに参加 or どうしても作りたい場合は新しくチームメンバーを募集

私は大学の先輩で今年新社会人のみやぎさんのピッチで「あ、これ作りたい!!」と思いました。 もともと投票では上位アイディアとして選出されませんでしたが、 私からみやぎさんを逆指名してチームに参加しました。

(あとあと、みやぎさんが自分の逆指名メッセージを見たのではなく、 みやぎさん自身もどうしても作りたくメンバーを募集したことがわかりました笑)

f:id:kugi_masa:20200603202627p:plain
みやぎさんのピッチ資料

顔バト

メンバー

みやぎさん(@daking1756)と去年広島エンジニアハッカソンで知り合ったたぞえくん(@jdkfx)と自分の3人でチームを組みました。 お互い顔馴染みではありましたが、開発をともにするのは初めてでした。

ツール

今回のハッカソンではプロダクトの中間発表の時間以外は開発スタイルやつかうコミュニケーションツールなどの指定はありませんでした。 Cammel🐫でも4月からフルリモートでの開発が始まり、コミュニケーションツールとしてDiscordを使っています。 (Cammelでの話は別の機会にでも書けたらと思います)

私たちのチームでもDiscordを活用することにしました。

モブプロ導入

今回のプロダクトはみやぎさんがおうちハッカソンで開発されたものを発展させて制作しました。 根幹の部分は既にみやぎさんが実装されていましたが、以下の点で問題が残っていたようです。

  • 通信をして写真を撮り結果を表示する際、「撮影」をした側でしか画像とその評価結果が表示されない。

まずは、システムの構成を理解することも踏まえ簡単なタスクをモブプロでこなし、開発環境になれてきたら分業する方針を提案しました。

モブプロ(モブプログラミング)とは、

実際に手を動かし実装をするドライバーとその後ろから実装のアドバイスや先回りをして調べたりバグを仕込まないようにドライバーを助ける複数人のナビゲーターに分かれて開発をする手法です。

(モブプロのワークショップに参加したときの内容をコチラに書いています。ご参照ください)

オンラインでも画面共有をすればモブプロはできます👍

「招待URLをクリップボードにコピーする」を最初のタスクにし、

  • ドライバー:たぞえくん
  • ナビゲーター:みやぎさん、kugi

で開発スタートしました。

Firebaseの導入でつまる

たぞえくんはバイトがあったので初日の中間発表以降はみやぎさんと二人で開発しました。

次のタスクは、「お題の情報を通信者間で共有する」です。

現状のシステムとして、撮影を押した側でお題の表情が決まりそのお題が共有されていませんでした。 hostingにFirebaseをつかっていたこと、またお互いFirebaseを使うことが多かったことから、 データベースにはCloud Storeを使うことにしました。

しかし...

なぜか以下のエラーが

The Cloud Firestore API is not enabled for the project

プロジェクトを最初から立て直してみたり、以下の記事を参考にCloud API Managerを確認しににっても有効にはなっている qiita.com

1度はデータを送信できてもまた同じエラーが出てしまいました。

この時点で深夜1時で進展がなくお互い疲弊していました。 とりあえず見栄えや体裁を整えることにしようとFirebaseは一晩寝かせることにしてUIやアニメーションに取り掛かりました。

最終日

初日?は3時に手を止め残ったタスクから逆算して7時に起きればなんとかなりそうとわかったので7時から再スタートすることにしました。

朝起きて試しに寝かせておいたFirestoreにデータをプッシュしてみると...

なんか動いた!!!🙌

昨日の心配はなんだったんだと言わんばかり普通に動いてくれたので安心しました。

Firebaseについて深堀できたので良しとします。

逆算して見積もりをしたおかげか、なんとか動く状態で割と余裕を持ってプレゼン準備をすることができました。

docs.google.com

各チーム本当にいろんなプロダクトを開発されていました! 特に自分が気に入ったのは最優秀賞とオーディエンス賞を獲得された「ガヤ人形」です。 プロダクトもスライドも発表も素晴らしかったです!!

チームリーダーのtantanさんが参加レポートを書かれているのでご参照ください。 tantan.work

私たちのチームは賞を受賞することはできませんでしたが、久しぶりのウェブ開発であったり、新しいチームでの開発はとても楽しかったです!

まさかの(時差)受賞

ようやく2日間のハッカソンが終わり、ちょうどスプラ2のフェスがやっていたので友人と遊んでいるとみやぎさんからDiscordで報告がありました。

f:id:kugi_masa:20200603213902p:plain
まさかの受賞!!

まさかの特別審査員賞を受賞することができました。 月刊アスキーの遠藤様ありがとうございました!!

まとめ

広島に来て5年目ですが、レッドハッカソンは初参戦でした。 オンラインのハッカソンということで運営の方々もかなり大変だったと思います。 運営のみなさま本当にありがとうございました!

オフラインでのハッカソンに越したことはありませんが、これからのハッカソンやイベントのあり方そのものが変わっていくのかもしれないなと感じました。

ハッカソンが終わったあとも実は開発を継続しています!

github.com

やったこと

  • レッドハッカソンオンライン2020に参加
  • 顔馴染みのメンバーで開発
  • 久しぶりのWeb開発
  • モブプロ導入

わかったこと

  • ハッカソンなのでどこで折り合いをつけるかがとても重要
  • タスクの逆算ダイジ
  • モブプロたのしー

次やりたいこと

  • CIの導入
  • 再戦ができない状態なので改善

unity1week「密」振り返り

はじめに

Unity1週間ゲームジャムお題「密」に参加しました! 今回は制作の1週間を振り返ろうと思います。

(少々長くなりますがお付き合いいただけると幸いです。)

f:id:kugi_masa:20200510184344p:plain
蜜蜂~Cluster Bee~

ゲームはこちらから遊べます!!

unityroom.com

Unity1週間ゲームジャム

1週間でUnityを使ってゲームを作り、次の1週間でお互いのゲームをプレイして評価し合いランキングが決まります。

(詳しくはUnity1週間ゲームジャムのサイトを参照)

投稿したゲームはunityroomから遊ぶことができます。

私にとっては今回が2回目の参加でした。

kugi's 1week

Day1

お題が初日の0:00に公開されました。

今回のお題は...

とりあえずアイディア出しをして寝ます。

f:id:kugi_masa:20200510170425j:plain
アイディア出し

蜜蜂の「蜜(Honey)」を「密(Cluster)」に文字って

「密蜂〜Cluster Bee〜」というタイトルで作ることにしました。

ハチを動かして仲間のハチを集め、目標の数が集まったら巣に帰るゲームです。 前回は2Dで参加したので今回は3Dで挑戦です!

初日はUnityプロジェクトを立ち上げて終わりました。

Day2

とりあえずフィールドをおかないとやる気が出ないのでアセットストアでアセットを探します。 GGJでも使用したローポリアセットを使うことにしました!

LowPoly Vegetation Season Pack Lite

2日目はまだデフォルトのCapsuleオブジェクトですが、フィールド上を動くようにしました。 あまりに広すぎると大変なので、動ける範囲を限定して出そうになったらポップアップでお知らせするようにしました。

Day3

ツイートでの宣言通りこの日はBlenderでモデルを作っていました。

f:id:kugi_masa:20200510172409p:plain
Blenderでモデル作成

マテリアルはある程度Blenderで作ってしまし、Unityにインポートした後に調整しました。

羽はTransparentに、花弁の色は青・ピンク・白にしました。

ちなみに、Day2までの領域外に出たときのポップアップは廃止して、半透明な壁を設置することにしました。

Day4

この日は他のハチをフィールドに生成しゲームの核となるCluster処理と時間制限を実装しました。

また、虫取り少年とハチの巣モデルも追加しました。

このときまでは少年が網を振ってハチの妨害をしてくるギミックを考えていました。 まさか、彼があんなことになるとは...。

Day5

ハチをさらに増やし、ある距離直進したら反対方向に振り返って進むようにしました。

しかし、ツイートからもわかるように、たくさんのハチを同時に動かしているのでかなり動きが遅くなってしまいました...。 どうしたものか...

Day6

残すところあと2日!! 処理おもおも問題もありますが、UIやルール画面、スコアを実装してある程度ゲームとして成り立つようにしました。 naichiさんのランキングパッケージも活用してランキング機能をつけました。 naichiさんありがとうございます!!!

とりあえず、処理が重い問題を解決したいのでLightingを調整することにしました。 UnityでLightingをいじるのは初めてでしたが、ドキュメントを読んだりチュートリアル動画を見て調整することができました。

最終的にMixed Lightingを使うことにしました。 CGの研究しててよかった...!!

参考にした動画

今回は1週間の制限があったので深追いはしませんでしたが、もう少し詳しく勉強したいと思います。

Day7

さて、ライティングも調整でき最終日はレベル調整をして提出しよう!と思い寝ようとしたところ、 彼の存在を思い出しました。

あ...虫取り少年のギミック作れてない...!!

もう1日しかないから置物ってことにしようかな...

でもせっかく網を振るアニメーションもつくったしなー...

まてよ、ハチ取りのゲームにしちゃえばよくない??

気付いたら夜が明けてました。

完成🎉

BeeHunterの方は急ピッチで作ったためランキングスコアのところでバグを作ってしまいましたが、 なんとか1週間で完成することができました!! (バグは修正済みです)

まとめ

2回目として参加したunity1weekでしたが、1回目より学びのある1週間でした。 また、前回よりも多くの方にプレイしていただきコメントをもらいました。 プレイしていただいたみなさん、ありがとうございました!!

実況していただいたPAFUさん、さまシロさんありがとうございます!!!

そして運営されてるnaichiさんもこの素晴らしいイベントを開催していただきありがとうございます!!! 他の方からのコメントや他の方のゲームをプレイすることでたくさん刺激をうけることができました。

何よりうれしかったのは高校の頃の同期がたくさん遊んでくれたことと、 そのうちの一人が全てのランキングで1位をとるまでプレイしてくれたことです。 まだまだ、不十分な点はたくさんありますが1週間で頑張って作ってよかったなと感じました。

次回のunity1weekもできたら参加したいと思います。

最後まで読んでいただきありがとうございました!!

やったこと

  • unity1weekに2回目の参加
  • UnityでLightingをいじってみた

わかったこと

  • すごい人はほんとうにたくさんいる
  • ゲーム制作は楽しい!!!
  • 遊んでもらって反応を聞くともっと楽しい!!!

次やりたいこと

  • UnityのLightingの勉強

Cammel-LT会🐫⚡️

はじめに

久しぶりの投稿です。

最近はリモート研究したり、Cammelの新プロジェクトのミーティングしたり、高校の同期とZoomでオンライン飲みや「こんい島」で虫取りや魚釣りしています。

(本当は「こんぺい島」にしたつもりだったんですが、入力ミスで「こんべい島」になってしまいました...。)

f:id:kugi_masa:20200422163216j:plain
イースターイベントを満喫した図

今回は3月から月1で開催するようになったCammel-LT会についてお話したいと思います。

f:id:kugi_masa:20200422163205p:plain
Cammel-LT会

LT (Lightning Talk⚡️🗣)

LTはLightning Talk の略称で5分程度の短いプレゼンテーションです。

Wikipediaによると、ピッツバーグカーネギーメロン大学で行われたYAPC(Yet Another Perl Conference) 19100 Conference が発祥のようです。

私は昨年のenPiTの夏合宿で初のLTを経験しました。

Cammel-LT会

プレゼンの練習とお互いが取り組んでいることを共有する、そしてなによりCammelというチームで何かをする機会を増やすという目的で3月から月1でCammel-LT会を開催することにしました。

テーマは特に決めず話したい人が話したい内容を話すという形式で行いました。また、Cammelを知ってもらう機会にもなるのでチームメンバー以外の参加者も募りました。

まだ、チーム外からの発表者はいませんでしたが、次回のLT会ではメンバー以外の発表も聞けると嬉しいです...!!

また、第1回はDiscordで第2回はZoomを使ってオンラインで開催しました。チームとして主催する初のイベントなのでまだまだ手探りです。

第1回登壇資料

第2回登壇資料

まとめ

短い時間で伝えたい内容を端的に発表することは改めて難しいことだなと感じました。

また、発表後の質問タイムが白熱してディスカッションになっていったのはとても楽しかったです。

だいぶゆるくですが、3月4月と無事2回開催することができてよかったです。

参加してくださったみなさん、ありがとうございました! 次回は5月のどこかで開催予定です。 情報はCammelのTwitterアカウントで発信します🐫

やったこと

  • チームでLT会を開催
  • LT登壇

わかったこと

  • 交流の場になった
  • 意外と人来てくれた!嬉しい
  • 発表後のフィードバック!嬉しい

次やりたいこと

  • もっとたくさんの人に参加してもらいたい
  • 「こんべい島」の博物館の充実化
  • 次もLT登壇

enPiT2019成果発表会

はじめに

筑波大学で行われたenPiT2019の成果発表会に広大チームのメンターとして参加してきました。

チームmomi & チームじぃ🍁

enPiT2019に広島大学からは2チームが参加しました。両チームとも夏のアジャイルキャンプ後、約3ヵ月間で1つのプロダクトを作りました。

1週間1スプリントの開発で九工大チームを加えた3チームで筑波の先生方とのオンラインレビューがあり、その後スプリントの振り返りや次のスプリントのスプリントプランニングを行いました。

チームmomiのプロダクトは、掃除がめんどくさい人のためのお掃除通知アプリケーション「お掃除管理くん

チームじぃのプロダクトは、記録した物が買える場所が近くにあるときに自動で通知してくれる、お買い物忘れ防止アプリケーション「CanBuy!」でした。

メンターとして

私は今年度メンターとしてenPiTに参加しました。夏の合宿では他の社会人メンターの皆さんと一緒に参加者をサポートし、たくさん刺激と学びをいただきました。

また、CammelのメンバーをenPiT2019に誘うことでメンバーのチーム開発への理解の向上につながりよかったと思います。

ただ、広島に戻ってのメンターの自分を振り返ると、メンターとしてうまく立ち回れていたとは言えない気がします。

  • メンターとしてどこまで口を出すべきなのかが難しかった
  • 研究や就活でそもそも後半のレビューに顔を出せなかった(申し訳ない...)
  • 両チームを満遍なく見ることが出来なかった

momiチームへサポートする機会は多くメンターとして関わることはできました。

逆にじぃチームの2人はCammelでシステムを担当していて、私の技術的に「できること」と「できないこと」はわかっていたので私を頼ることはほとんどありませんでした。 また、Cammelの2人がチームをリードしてくれていたので開発もスムーズにいっていました。

成果発表会

成果発表会では8分間のプレゼンとその後デモを行い、参加者からの投票を踏まえた審査員の審査によって受賞が決まりました。

今年のプロダクトは昨年と比べても凄いプロダクトがたくさんありプレゼンもデモも見てて楽しかったです。

デモを見に行きたくなるプレゼンをしたかがとても重要だったと思います。

また、いかに共感出来るユーザーストーリーを見据えたプロダクト作るかが大事だと感じました。

振り返り(FUN/DONE/LEARN)

表彰式の後はチームごとにFUN、DONE、LEARNでの振り返りが行われました。

フリカエリダイジ

私も一人で今年度の振り返りをしました(笑)

まとめ

広大チームからの受賞はありませんでしたが、両プロダクトとも本当にいいモノに出来あがっていました。チーム、メンバーとしてもみんな昨年の私を遥かに上回っていて、開発しているみんなが羨ましかったです。

ただ、メンターとして今年度もenPiTに関わることができ新しい学びもたくさんありました! これからもチーム開発頑張るぞぉお💪

やったこと

  • enPiT2019のメンター
  • 成果発表会へ参加

わかったこと

  • デモに行きたくなるようなプレゼンをする

次やりたいこと

Blender to Unity Part2 ~Unityへのインポートで困った話~

はじめに

こちらの記事は広島大学ITエンジニアアドベントカレンダー2019の21日目です。

Cammelでは現在iOSAndroid向けのゲームを制作していて、 私はシェーダー周りやアニメーション処理を担当しています。

今回はBlenderで作ったモデルのアニメーションをインポートする際に困った話をします。

f:id:kugi_masa:20191220220524p:plain
こいつは一体...

モデルのインポートについては Blender to Unity Part1で簡単に紹介しています。

環境について

作業環境は以下の通りです。

  • Unity : 2018.3.8f1
  • Blender : ver 2.8

BlenderでFBX形式でエクスポート

まずメンバーがBlenderで作ってくれたアニメーションをUnityにインポートします。1つのモデルに対して複数のアニメーションを使うのでアニメーションごとにFBXファイルを分けてもらいました。 エクスポートの設定は以下のように指定します。

f:id:kugi_masa:20191220171814p:plain
fbxのエクスポート設定

Unityへアニメーションをインポート

今回のように1つのモデルに対して複数のアニメーションをインポートする際 ファイル名を以下の形式にすることで自動でモデルのアーマチュアがアタッチされるようです。

[model_name]@[animation_name].fbx

ソースはこちら

モデルがなんかおかしい...!?!?

早速FBXをインポートすると...

f:id:kugi_masa:20191220173452p:plain
なんか変な線が....
f:id:kugi_masa:20191220173634p:plain
Blenderでのモデル

アニメーションは動いてくれましたが、Blenderでのモデルでは明らかにないはずの変な線がついています。ただマテリアルがはげているというわけでもなさそうです。

いろいろ見てみると...

Blenderでは問題なく表示されているはずのメッシュがぺちゃんこになっていました。

f:id:kugi_masa:20191220174208p:plain
なぜかメッシュがぺちゃんこに...!?

Blendファイルに戻り、オブジェクトモードのクリアオプションでコマの位置や拡大縮小をクリアしてみるとぺちゃんこモデルが現れました...!!

f:id:kugi_masa:20191220175004p:plain
どうやらスケーリングなどの変換が適応されていなかった

Apply(適応)オプションで位置、拡大縮小の変換を適応してからFBXを再度Unityにインポートしてみました!

f:id:kugi_masa:20191220220255p:plain
無事Unityにモデルとアニメーションをインポートすることができました!

まとめ

今回の不具合の解決に2日ほど時間を溶かしてしまいました。

Blenderで作成したモデルを扱うときは注意が必要ですね...

やったこと

  • Blenderで作成したモデルとアニメーションをUnityにインポート

わかったこと

  • 何かが変だったらクリアオプションや適応オプションで確認してみる

次やりたいこと

  • アニメーションのUnityでの処理について書きたいです