やらなイカ?

たぶん、iOS/Androidアプリの開発・テスト関係。

メソッド分割の意義とTips

この記事は DeNA Advent Calendar 2021 16日目の記事です。 ユニットテストを書こうとしたとき、テスト対象のクラスやメソッドが大きく複雑なため断念した経験は誰しもあるのではないでしょうか。 ひとつのメソッドや関数に様々な処理・責務を持たせてしまう…

Unityにおけるインライン化

テスタビリティ*1など内部品質の文脈で、クラスやメソッドの責務を分けるべし、メソッド分割すべし、という話をよくします。 メソッド分割には、メソッド呼び出しが増えることによる実行時オーバーヘッド増加という問題があります。 これに対しては、 本当に…

カスタムRoslyn AnalyzerをUPMパッケージとして配布する

Unity 2020.2でRoslynアナライザによる静的解析を行えるようになりましたが*1、NuPkgやDLLで配布してUnityプロジェクトに導入するのはやや面倒です。 そこで、アナライザをUnity Package Manager (UPM) パッケージとして配布する方法を紹介します。アナライ…

Unity Test Framework完全攻略ガイド

[2022/8/10] コミックマーケット100で第2版を頒布します。こちらの記事を参照してください www.nowsprinting.com Unityの標準テストフレームワークであるUnity Test Frameworkパッケージ*1の解説本を技術書典11向けに上梓しました。 ギリギリ審査が通って閉…

#PLATEAU 3D都市モデルの水ぜんぶ抜く大作戦

国土交通省 Project PLATEAU で、横浜市の3D都市モデルが公開されました。 このデータを使用する際、水面にあたる部分に面が張られており使いづらかったので*1、Blenderで水面をすべて削除して、改めて水面用のメッシュを用意しました。 本記事はこの手順メ…

Unity Automated QAのRecorded Testing機能 トラブルシュート

Unity Automated QA パッケージのRecorded Testing機能を試していて遭遇したトラブルと解消方法をまとめます。 バージョンは 0.2.0-preview.3 および 0.3.0-preview.8*1 で確認しています。 Recorded Testing機能とは、UnityエディタのPlay modeでuGUIの操作…

Unity Automated QA雑感

Unity Automated QA パッケージが公開されました。 まだアルファリリース (0.2.0-preview.3) ですが、少し触ってみたメモ。 [12/26追記]v0.8.1対応の『Unity Automated QA攻略ガイド』をコミックマーケット99で頒布します。詳しくはこちらの記事を参照して…

Unity 2020.2時点のRoslyn Analyzerサポート状況まとめ

Unity 2020.2でRoslynアナライザによる静的解析が動作するようになりました。しかし、まだ色々と制限があるようなので現時点のサポート状況を検証してまとめてみました。 検証に使用したプロジェクト も公開していますので、認識違い等あれば教えていただる…

『ソフトウェア品質を高める開発者テスト アジャイル時代の実践的・効率的なテストのやり方』レビュー

昨日発売された『ソフトウェア品質を高める開発者テスト アジャイル時代の実践的・効率的なテストのやり方』、ざっくりと読んだので簡単にレビューします。 ソフトウェア品質を高める開発者テスト アジャイル時代の実践的・効率的なテストのやり方作者:高橋 …

ML-Agentsに入門するならUnity LearnのML-Agents: Penguinsがおすすめ

個人差があるとは思いますが、最初のチュートリアルとして良いサイズだと思うので(そしてUnity Learnの検索で出てこないので)紹介します。 おすすめポイントは、 ダウンロードするファイルはペンギン等のfbxのみ コードは説明付きで小分けに提示されていて…

#cluster 勉強会・イベント登壇Tips

yokohama.unity をはじめ、オンライン勉強会の会場として cluster が使われることも珍しくなくなりました。 つまり、clusterで登壇する機会も増えているということです。 clusterでの登壇には、リアル会場やZoomなどWeb会議サービスとは異なる特性があります…

UPMパッケージをunitypackage形式で配布する

Unityのエディタ拡張などは Unity Package Manager (UPM) で配布するのが便利です。 UPMのメリットとしては以下の点が挙げられます。 バージョン管理、アップデートが容易 依存関係を設定できるため、依存先もUPMであれば同梱・再配布を回避できる Assetsデ…

Blender 的なテンキー操作で視点操作できる Unityエディタ拡張

Blender 的なテンキー操作で視点操作できる Unityエディタ拡張 Blender-like SceneView Hotkeys を公開しました。 Unity 2018.3 以降で動くので VRChat SDK 向けの作業にも使えます。 3Dモデリングツール Blender の 3D Viewport では、マウス操作のほか、テ…

#yokohamaunity in #cluster 会場ができるまで

昨晩開催された『yokohama.unity 実質4回目』会場として cluster のワールドを構築・提供しました。 meetup.unity3d.jp ワールドは横浜の「大さん橋」屋上を 再現 模したもので、遠景に全天球画像、アーチ状の構造物などはフォトグラメトリで作ったハイポリ…

Unityプロジェクトのディレクトリ構成と .gitignore

Twitterで話題に上がっていたので、自分なりのやり方を。 ディレクトリ構成 Assets/下 自分で作るものはAssets/下にフォルダを作り、そこにまとめています。 Assets └── MY_PROJECT_NAME ├── Materials ├── Prefabs ├── Scenes ├── Scripts │ ├── Editor │ └…

リモート時代のモブプログラミング(モブワーク)勉強会でmob IntelliJ pluginをお披露目 #モブLOVE #モブプロ #MobProgramming #RemoteMobProgramming

リモートモブプログラミングにフォーカスした勉強会(もちろんオンライン開催)のLT募集があったので、作っているリモートモブプロ支援IntelliJ pluginの紹介をしてきました。 moblove.connpass.com 勉強会冒頭のアンケートでは、リモートモブプロをやたこと…

#yokohamaunity (cluster開催)で『Rider plugin の作りかた』をLTしてきました

yokohama.unity初のオンライン開催である「yokohama.unity ~オンラインDEハジメテユルクヤッテミル#0~」で、IntelliJ Rider plugin 開発についてのLTをしてきました。 meetup.unity3d.jp 今回は初のオンライン、clusterでの開催でした。clusterはオーディエ…

IntelliJ plugin から他のプラグインを使用する

IntelliJ (JetBrains IDE) ファミリー向けのプラグイン開発において、他のプラグイン(例えばGitを操作するための Git4Idea *1 など)や、Riderなど言語別IDEの機能を使う設定について。 基本的なことは公式ドキュメントの下記ページに載っており、それに沿…

IntelliJ plugin からのログ出力

IntelliJ (JetBrains IDE) ファミリー向けのプラグイン開発をしていて、ログ出力まわりが少々わかりにくかった*1のでメモ。 プラグインからのログ出力 プラグインからログを出力するには、 com.intellij.openapi.diagnostic.Logger を使います。 Javaの場合 …

リモートワークでコミュニケーションが足りないなら、モブプロすればいいじゃない

リモートワークが急激に広まる中、その利点とともに、チームのコミュニケーションが不足しがちという不安も聞こえてきます。 その対策としての、リモートモブプログラミングのススメです。 普段の職場へのモブプログラミングの導入には色々と障壁もあります…

UWA GOTでUnityアプリのプロファイリング(iOS編)

Unity向けプロファイリングツールであるUWA GOTのv2.0.1から、iOSプラットフォームでのプロファイリングも可能になりました*1。 本記事では、iOS版の導入手順(Androidとの差分)と注意点などを紹介します。 なお、UWA GOTの概要については、過去記事を参照…

UWA GOT v2.0.2でAndroidのIL2CPP・ARM64に対応された模様

Unity向けプロファイリングツールであるUWA GOTのv2.0.2がリリースされていました*1。 追加機能として書かれているのはAndroidおよびWindowsプラットフォームでのIL2CPPビルドとAndroidプラットフォームでのARM64対応ですが、細かい使い勝手の向上も入ってい…

JetBrains ReSharper Command Line Tools 2019.3でコードインスペクションを実行する

JetBrains製のC# IDEであるRiderにあるコードインスペクション機能を、そのままコマンドラインで実行できるツールがReSharper Command Line Toolsとして提供されています。 ReSharper Command Line Toolsは、これまでWindows版しかサポートされていませんで…

JetBrains Riderでコードの複雑度を計測する

JetBrains製のC# IDEであるRiderには、様々なプラグインが提供されています。 その中から、コードの複雑度を計測するプラグインを2つ紹介します。 www.jetbrains.com サイクロマティック複雑度 サイクロマティック複雑度(cyclomatic complexity)は循環的複…

JetBrains Rider 2019.3でUnityテストのカバレッジを採取する

JetBrains製のC# IDEであるRiderには、テスト実行時にステートメントカバレッジを採取するdotCoverプラグインが提供されています。 これまで、dotCoverプラグインはUnity Test Framework*1に対応していませんでしたが、2019.3からEdit Mode tests実行時のカ…

JetBrains Rider 2019.3でUnityのPlay Mode testsを実行する

JetBrains製のC# IDEであるRiderの2019.3がリリースされました。 これまで、RiderからはUnity Test Framework*1のEdit Mode testsのみ直接実行することができましたが、2019.3からはPlay Mode testsも実行できるようになりました。 www.jetbrains.com Unity…

モブプロはまだ腰痛には効かないがそのうち効くようになる

この記事は、モブプログラミング Advent Calendar 2019の6日目の記事です。 タイトルでお察しの通り、ネタエントリです。 ※この記事は個人の感想であり、効果・効能を示すものではありません 腰痛 腰痛の原因には個人差があります。私の場合は同じ姿勢で座り…

.NET Conf in Tokyo 2019に行ってきました #dotnetconf #dotnetconfunity

日本マイクロソフトさんで行われた、.NET Conf in Tokyo 2019 に行ってきました。 vsuc.connpass.com 午後は2部屋に分かれたうちの Room B(Unityトラック)にずっといました。 Room C+D(.NETトラック)が気になる方はハッシュタグ #dotnetconfdotnet を参…

UWA GOTでUnityアプリのプロファイリング(Android編)

UWA*1 GOT*2は、Unityアプリのプロファイリングを行なう商用ツールです。 CEDEC 2019のセッション『あなたのモバイルゲーム開発の最適化時間を数ヶ月節約する方法』で紹介されました。 セッション後にUWAのブースやメール*3で問い合わせた内容も含め、簡単な…

Roppongi.unity#5 in メルカリ@六本木ヒルズ に行ってきました #roppongiunity

メルカリさんで行われた、Roppongi.unity #5 in メルカリ@六本木ヒルズに行ってきました。 roppongiunity.connpass.com 以下、雑なメモ。スライドは拾えたものだけ。 楽しい!LWRP + 2D Light @lycoris102 speakerdeck.com 新規プロジェクトのテンプレにLWRP…