もんりぃ is undefined.

育児ネタとか、技術ネタとか。

リモートワーク Rev.10 / ゾーン

はじめに

  • 2017/10/08 (水) はリモートワーク。
  • 普段は木曜にリモートワークしているが、今回はミーティングの関係などから水曜にした。
  • もはや何回目か分からなくなってきたので、記事のタイトルはインクリメントしてリモートワークの回数は数えないことにしたw

KPT

Keep

  • とても集中できた。
  • 妻と娘の姿を見ながら仕事できるので、癒やし効果が高い。

Problem

  • 娘もパパが昼に居ることに慣れてきたのか、妻がトイレに立ったときとかにちょいちょい「構って〜!」って感じで作業に割り込むようになってきた。
    • まぁ、タバコ休憩みたいなもんだと思えば、許容できる割り込みかな。
  • タスクの共有が漏れがち。
    • 何か作業を始めるときに、直ぐにゾーンに入っちゃってカンバンでタスクを作業中に移動させるのを忘れがち。
    • リモートの場合、「今何やってるのか?」をちゃんと共有しないとダメだと理解してはいるのだが…。

Try

  • タスク共有について何か考えなければなのだが…。
    • Toggl の状態変更とかのタイミングが一番望ましいとは思っているが…。
    • PullRequest を先に作るスタイルを確立できれば、解決できるかも?

iPhone X Tester for Unity を公開しました!

はじめに

  • 私が TechLead を務める 株式会社キッズスター のアプリ「 なりきり!!ごっこランド (iOS / Android) 」を iPhone X 対応する際に、都度ビルドするのも大変なので「Editor 上で iPhone X での見え方を確認できるようなアセット」を作りました。
    • 一応 Unity 公式でセーフエリアに対する対応が行われるそうですが、待っていられなかったので作りました。
  • 元々は社内で使うだけのつもりだったので、Private リポジトリで開発していましたが、需要がありそうだったので Public に切り替えて公開することにしました。

概要

  • iPhone X のベゼルとかセンサーハウジングとかホームインジケータを再現したフレーム画像を GameView 上で重ねます。
  • f:id:monry84:20171110102546p:plain
    • 開発中の画面なので、中身にはモザイクを掛けております。
    • (公開時点ではモザイク掛けてなかったので、 Twitter の OGP 画像が古いままなんだよなぁ…。1週間くらいしたらクリアされるらしいので、それまで待つしかなさそうだ…。)

導入

  • こちらのリポジトリ にて公開しています。
  • README に書かれている方法でプロジェクトにインストールすれば、即使えるようになるはずです。
    • npm コマンドを用いるため、Node.js のインストールが必要になります。

使い方

  • README に記載していますが、 シーンを再生していない状態で メニューの Assets > Install iPhone X Tester を選択してください。
    f:id:monry84:20171110101423p:plain
  • GameView のサイズを 2,436 × 1,125 などにすると実際の iPhone X の画角で確認できます。
    f:id:monry84:20171110101500p:plain
    • 正確に上記のサイズでなくとも、似たような比率であれば良いかと。

詳細

  • 既存のシーンには影響を与えないように、マルチシーンとして追加されます。
  • 現在のところ、Landscape (横向き) のみに対応しています。
  • センサーハウジング(端末上部の切り欠き)やホームインジケータ(画面下部のホームボタン代わりの横棒)の領域に当たり判定は設置していません。
    • あくまで見え方を確認するためのモノなので。
    • 当たり判定置きたい場合は、BoxCollider2D なり PolygonCollider2D なりを置くと良いでしょう。
  • シーンが再生されると iPhoneX_Tester シーン内の GameObject は DontDestroyOnLoad フラグが立てられて iPhoneX_Tester シーンそのものは UnloadScene されます。
    • DontDestroyOnLoad フラグが立つ GameObject の中には Camera も含まれるため、開発中のシーンでも Camera 付きの GameObject を DontDestroyOnLoad すると思わぬ挙動を示す可能性があります。(未検証)
  • iPhoneX_Tester シーンの Camera の depth は 10 に設定してあります。
    • フレームが奥に隠れてしまう場合はこの値を大きくすれば良いでしょう。
  • なお、インストールの際に npm を用いるのは、私が開発している umm: Unity Module Manager という仕組みで提供されるアセットとして作ったためです。
    • umm の詳細は近々記事にします。

おわりに

  • 「あー、対応しなきゃー」って時に、サッとフレーム画像を作ってくれた弊社のスーパーデザイナーさんに感謝です!
    • 「ブログで紹介しても良いっすか?」って聞いたら、「今、すごく需要ありそうだし、全然 OK!」的なリアクションで返してくれたのも嬉しかったです。
  • 公開のきっかけを与えてくださった @lycoris102 さんにも感謝です!

娘の心理的成長

今日は、近くのデパートに昼食と買い物を兼ねて家族3人でお出掛けしました。

昼食後にお昼寝するかなぁ?と思ったら寝なかったので、無料のキッズスペースに娘(2歳3ヶ月)を連れて行き、しばし遊ばせました。

その時に、娘の心理的成長を感じる出来事があったので記録する次第です。

今日はちょっと年上の男の子が多く居て、バタバタと走り回っている感じでした。

普段なら物怖じして端っこで私と遊ぶ展開になるのですが、今日は男の子達の後ろを追い回したり、他の子が遊んでいるクッションを借りようとしたり、と普段と異なる行動パターンをとっていたので、私としてはかなり衝撃的な展開でした。

妻に何かキッカケとなるような出来事があったのか?と聞いても、特にそれらしい出来事はなかったらしく、最近になって子育て支援センターとかでそういう感じになったんだとか。

単純に月齢が進んだことにより心理的な発達がみられたというコトかな…?

まぁ、何にしても程よく友達を作って、娘なりの交友関係を築いていって欲しいなぁとか思った土曜の昼下がりでした。

特にオチもない記事になってしまったが、寝かしつけもつつがなく済ませてビールを飲みながらダラダラ書くのもまた一興ということで。

Unity Case-Study / uGUI の当たり判定が効かない!?

はじめに

  • ちゃんと画像が描画されていて、RaycastTarget のチェックも付いていて、Canvas に GraphicRaycaster がアタッチされているのに、EventSystem が反応してくれない!という事案に遭遇。
  • 1時間くらいドハマリしたので、同じ事案でドハマリする人が一人でも減るように、恥を忍んで記録にしたためる。

前提

  • 実装としては以下の通り。
    • ランタイムで Texture2D から Sprite を生成して UnityEngine.UI.Image コンポーネントの sprite プロパティにセット。
    • RectTransform の anchoredPosition や localScale を変更。
    • 同じく RectTransform の SetSiblingIndex() で前後関係も変更。
  • 対象の Image コンポーネントの raycastTarget は true に設定されている。(デフォルトのまま)
  • Canvas には GraphicRaycaster をアタッチ済み。
    • 厳密には overwriteSorting を用いているので、ネストした子 Canvas にアタッチしている。
  • もちろん EventSystem コンポーネントと StandaloneInputModule コンポーネントもシーン内に存在している。

現象

  • 当たり判定がウンともスンとも反応しない。

原因

  • RectTransform.localScale 設定時に Vector2 な値をセットしていた。
  • RectTransform.localScale は Vector3 のプロパティであり、Vector2 を渡すと暗黙的変換により、 new Vector3(vector2.x, vector2.y, 0.0f) 的な値がセットされるコトになる。
  • この所為で、スケールの Z 値(すなわちオブジェクトの奥行き)がゼロになってしまい、「描画は行われるが当たり判定としては無視される」という状態になってしまった。

対応

  • 横着せずに Vector3 を渡しましょう。

所感

  • 暗黙的変換は便利なんだけど、警告も出ないからこの手のドハマリを引き起こす原因にもなったりするんだなぁ…。
  • 今回は割と直ぐに「ん…?ひょっとして…!?」と気付けたから良かったけど、気付けない時は全く気付けなかったりするから困る。

Unity 2017.1 の Timeline で気になるコト

はじめに

  • 今担当しているプロジェクトで Timeline を使う機会があったので、色々と調べてみた。
  • かなり便利な機能なので、積極的に使っていきたい所存。
  • だが、ちょっと気になる点があるので、纏めてみる。
  • Timeline の使い方とかを纏めた記事ではないので悪しからず。

現状の理解

  • 元々 Timeline は Animator の上位に位置する概念だと理解している。
    • Animator だけでは不可能な複数の GameObject に跨がるシーケンシャルな操作ができる。
  • UnityEngine.Timeline.ITimeControl というインタフェースを実装することで、Timeline からのイベントを受け取れる。
    • Control Track を追加して、そこに Clip として Control Playable Asset を追加すれば送られてくる。

気になる点

Animator との共存

  • Animation Track による個別のアニメーションについては、あくまで AnimationClip を再生するモノなので Animator が居ないと再生できない。
  • じゃあ、 Animation Track により再生されるアニメーションと、Animator 自身により再生されるアニメーションはどちらが強いのか?
  • 軽く実験してみたところ、並列で動かせるっぽいが果たして仕様だと信じて良いものか…?
    • 「Sprite 差し替えでコマアニメを行うループアニメーション」を Animator の Default State にセットし、「フェードインするアニメーション」を Timeline から発火させたところ、問題無く動きはした。

ITimeControl のイベント登録タイミング

  • はじめから Control Playable Asset の Source Game Object のコンポーネントとしてアタッチ済のスクリプトITimeControl を実装したところ問題無く動いた。
  • が、「よーし、じゃあオヂサン UniRx 用の Wrapper 作っちゃうぞー」とか思って「 OnControlTimeStartAsObservable() 的なメソッドが呼び出されたときにはじめて ITimeControlスクリプトを AddComponent する」といった実装をしたところ、一切イベントが発火しなかった。
  • これがバグなのか仕様なのか…?
    • メンドイので、まだ Issue Tracker は調べてない。

ITimeControlOnControlTimeStop() が呼ばれないことがある

  • Timeline 自体の終端フレームと Clip の終端フレームが一致している場合に、 OnControlTimeStop() が呼ばれない。
  • Clip の終端を1フレーム手前に動かしたところ、問題無く動いた。
  • これは…バグ…だよね…?
    • メンドイので、まだ Issue Tracker は調べてない。

所感

  • まぁ、まだリリースされて日が浅いので、多少のバグはあるのかな?という感想。
  • それを差し置いても、とても便利なので、社内に展開してみんなが使いこなせるようになりたい!
    • 表現の幅がメッチャ広がる!!!
  • 何か情報お持ちの方は教えてくださいませ。

リモートワーク Rev.9 / リモートで良かった🚃

はじめに

  • 2017/10/19 (Thu) は木曜恒例のリモート。
  • いつもの KPT を綴る。
  • そろそろ技術ネタもポストせねば…。

KPT

Keep

  • 物凄く集中できた。
    • やっぱ今のところリビングルームが最適解だな。
    • 妻と娘が遊ぶ声やテレビの音が程良い環境音になっていた感じがする。
  • Toggl Desktop 使い始めた。ヨサソウ。
    • 週の頭くらいから使い始めているが、結構ヨサソウ。
    • 「正確に記録できなくてもいいや。」くらいの気持ちで使ってるから良いのかも。
    • あと、「誰かに見られるワケではない。」ってのも大きいな。
    • 直前にやっていた作業に戻りやすくなった気がする。
  • 東急田園都市線が停電による長時間の運転見合わせを起こしていたが、巻き込まれずに済んだ。
    • ニュースにも取り上げられるレベルだったもんなぁ…。
  • 娘がテレビとか玩具とかの音楽に合わせて踊る姿を見ながら開発できた。
    • マジ可愛い😍

Problem

  • 席を立ち忘れる。
    • 元々トイレが遠い人なので、意識的に席を立って伸びとかしないと全身強張ってヤバい。
    • 書斎でのリモートで腰痛悪化したのもそれが原因の一つだったのかも?
  • Slack が静かすぎて逆に不安になったw
    • 電車遅延の影響でみんなリモートに切り替えたりしていたようで、とても静かだった。
    • メンション通知にも気付けないコトがあるので、「ひょっとして見落としてる通知あるかも!?」とか不安になった。
    • メンションがある場合にはバッヂに数字出してくれるとありがたいんだがなぁ。
      • macOS はバッヂに数字出せないんだっけか?

Try

  • 引き続き Toggl Desktop 使い続ける。
  • 技術ネタ書く。
    • 技術ネタのアウトプットも続けないと書き方忘れてしまうので、再開せねば!

所感

  • やっぱ、リモートの日に限って何かトラブルが起きている気がする…。
    • そして、その規模がだんだん大きくなってきている…w
  • 家族的にもリモートは好意的に受け止めて貰っているので、QoL 高まる!

リモートワーク Rev.8 / リビング開発継続

はじめに

  • 2017/10/12 (Thu) は毎週恒例のリモートワークだったので、恒例の KPT
  • 前週に引き続き、リビングルームでの作業
  • 最近、リモートワークの話しか投稿していない気がするw

KPT

Keep

  • やはりリビングルームの方が集中できる
    • ちょっとした家事の手伝いがし易いという家庭的な意味での副次的効果もあるし
  • 業務的にも余裕が出てきたこともあり、スパッと定時で終われた
  • 娘が可愛い😍

Problem

  • まだタスクの切り替えに問題が残る
    • 集中出来てしまうが故に、どんどん深掘りしそうになる
  • ごく稀に娘が「遊べー!」ってな具合に、キーボード叩こうとする
    • 特殊な操作しないと解除できないフルスクリーンアプリ作ろうかな?w
    • ユーザへのフィードバックとしては、キーボードの文字を出すだけとかなら簡単だし
  • 奥さん的に「監視されてる感じがして嫌」という事例があるとも聞くので、その辺がちと不安

Try

  • タスクの記録に Toggl 試してみる
    • 続けられるかどうかは分からないけど、スッと記録できるのはヨサソウ
  • 奥さんに迷惑じゃないか?を改めて聞く
    • 娘的には、ママだけの時よりもちょっとだけ聞き分けが良くなるらしいが…?

所感

*お風呂デーが増えることになってヨイ * いつの間にか「パパが居る日は、パパとお風呂」というルールが設定されていたらしいw * 暑かったので、エアコンつけようとしたら水漏れ起こすというトラブルが😢 * リモート日に何かしらトラブル起きるんだよなぁ…。