Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
InternshipReport-santaro
Search
akatsukinewgrad
January 08, 2021
Programming
0
1.4k
InternshipReport-santaro
akatsukinewgrad
January 08, 2021
Tweet
Share
More Decks by akatsukinewgrad
See All by akatsukinewgrad
2023/1/25_QAテスター meet up!
akatsukinewgrad
0
110
成果発表資料.pdf
akatsukinewgrad
0
1.9k
広大なフィールドを気持ちよく駆け抜けるための技術.pdf
akatsukinewgrad
0
480
正規表現とReDoS.pdf
akatsukinewgrad
0
470
Unityで大量のオブジェクト_を吹き飛ばしたい.pdf
akatsukinewgrad
0
500
新卒2年目が思う1年目の学び.pdf
akatsukinewgrad
0
450
障害訓練の取り組みについて.pdf
akatsukinewgrad
0
580
7分でわかるアカツキゲームス
akatsukinewgrad
0
490
Bitcoinだけでスマートコントラクト.pdf
akatsukinewgrad
1
760
Other Decks in Programming
See All in Programming
useSyncExternalStoreを使いまくる
ssssota
6
1.4k
ゆるやかにgolangci-lintのルールを強くする / Kyoto.go #56
utgwkk
2
450
PHPUnitしか使ってこなかった 一般PHPerがPestに乗り換えた実録
mashirou1234
0
330
採用事例の少ないSvelteを選んだ理由と それを正解にするためにやっていること
oekazuma
2
1.1k
アクターシステムに頼らずEvent Sourcingする方法について
j5ik2o
4
350
どうして手を動かすよりもチーム内のコードレビューを優先するべきなのか
okashoi
3
580
フロントエンドのディレクトリ構成どうしてる? Feature-Sliced Design 導入体験談
osakatechlab
8
4.1k
KubeCon + CloudNativeCon NA 2024 Overviewat Kubernetes Meetup Tokyo #68 / amsy810_k8sjp68
masayaaoyama
0
260
Online-Dokumentation, die hilft: Strukturen, Prozesse, Tools
ahus1
0
100
これでLambdaが不要に?!Step FunctionsのJSONata対応について
iwatatomoya
2
3.8k
Jakarta EE meets AI
ivargrimstad
0
280
これが俺の”自分戦略” プロセスを楽しんでいこう! - Developers CAREER Boost 2024
niftycorp
PRO
0
200
Featured
See All Featured
Producing Creativity
orderedlist
PRO
342
39k
GitHub's CSS Performance
jonrohan
1031
460k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
The Cost Of JavaScript in 2023
addyosmani
46
7k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
YesSQL, Process and Tooling at Scale
rocio
169
14k
The Pragmatic Product Professional
lauravandoore
32
6.3k
Designing for humans not robots
tammielis
250
25k
A better future with KSS
kneath
238
17k
Transcript
インターン成果報告 花房 三太郎 2020/12/24
目次 1. 自己紹介 2. インターンシップの概要 3. 課題1 4. 課題2 5.
インターンを通して感じたこと・学んだこと 6. さいごに 2
1. 自己紹介 ・名前: 花房 三太郎 ・大学: 北海道 室蘭工業大学 情報電子工学系学科 学部3年
・所属: LOCAL学生部、Unityゲーム開発者ギルド ・趣味: 所属コミュニティ内の交流、知見を溜める、スマブラ観戦 3
2. インターンシップの概要 ・配属先: 「八月のシンデレラナイン」のクライアントエンジニア ・期間: 12/1 ~ 12/24まで。12日間 ・課題: シーン共通で使用されているヘッダー(以下共通ヘッダー)の修正、
ScrollView用のハチナイ独自のクラスにpaddingとspacingを追加 4
2. インターンシップの概要 ・課題1: 共通ヘッダーの修正 ・環境構築(2日) ・調査・実装(8日) ・課題2: ScrollView用のハチナイ独自のクラスにpaddingとspacingを追加 ・実装(2日) 5
課題1. 共通ヘッダーの修正 6
3.1 元気回復までの時間「あと00:00」を消したい 7
3.2 ふたつの実装方法のパフォーマンスを比較 「GameObjectを非アクティブにする」vs「Textに空文字列を代入する」 <常時消費メモリ> 非アクティブの方が0.5MBほど少ない <1回の実行> 非アクティブはGCAllocが700Bほど発生。実行速度は0.01ms 空文字列代入はGCAllocも実行速度も微々たるもの <その他> 非アクティブにするなら、監視用GameObjectが必要
非アクティブの方が直感的 8
3.2 ふたつの実装方法のパフォーマンスを比較 「GameObjectを非アクティブにする」vs「Textに空文字列を代入する」 <常時消費メモリ> 非アクティブの方が0.5MBほど少ない <1回の実行> 非アクティブはGCAllocが700Bほど発生。実行速度は0.01ms 空文字列代入はGCAllocも実行速度も微々たるもの <その他> 非アクティブにするなら、監視用GameObjectが必要
非アクティブの方が直感的 9 更新頻度も少ないし、非アクティブにしよう
3.3 GameObjectを非アクティブにしようとしたが... 「元気回復時間表示の処理」が2つのクラスに分かれている! 共通ヘッダーPrefabの一部を抜粋して使っているシーンがある! (Prefab内の変更で修正されない) →影響範囲をできるだけ小さくしなければいけない 10
3.3 GameObjectを非アクティブにしようとしたが... 「元気回復時間表示の処理」が2つのクラスに分かれている! 共通ヘッダーPrefabの一部を抜粋して使っているシーンがある! (Prefab内の変更で修正されない) →影響範囲をできるだけ小さくしなければいけない 11 空文字列代入にしよう
3.4 元気ヘッダーの修正 変更前 変更後 妙な余白ができてしまう 12
3.5 プランナー、デザイナーの方と相談 ・元気回復ボタンもつける ・デレスト編成画面にもヘッダーを配置する(以前はタイトル画面だけ) 13
3.6 影響範囲の検索 <前提> ・元気ヘッダーを使っているシーンを全て調べたい ・元気ヘッダーのGameObjectは共通ヘッダーPrefabの一部である ・PrefabのrootにはヘッダーをまとめるクラスAがある ・クラスAのbool型フィールドによって、どのヘッダーを表示するか指定 →クラスAのGUIDを持っていて、元気ヘッダー表示フラグがtrueのシーンを探索する →2つのシーンが見つかった →メンターの方が6つのシーンがあるはず、と指摘
14
3.6 影響範囲の検索 実はPrefab内にあるMonoBehaviour継承クラスのGUIDは、.prefab内に記述されるも ので、.unity内には記述されない!!! →PrefabのGUIDを持っていて、元気ヘッダー表示フラグがtrueのシーンを探索する →無事6つのシーンが見つかった! 15
3.7 .csファイルのGUIDが.unityに記述される原因調査 Prefab内の.csファイルのGUIDは.unityには記述されないのなら、なぜ2つのシーンが 最初の検索で引っかかったのか? <.unityファイル内を調べるプログラムを作成> ①.csファイルのGUIDを参照しているfileIDを検索 ②そのfileIDを参照しているfileIDを検索 ③②のfileIDがGameObjectなら表示。そうでなければ②を繰り返す このプログラムを実行した結果... 表示されるGameObjectは全て「その.csファイルをInspectorから参照している
Componentを持っている」ものだった。 16
課題2. ScrollView用のハチナイ独自のクラスに paddingとspacing機能を追加 17
4.1 ScrollView用のハチナイ独自のクラスにpaddingとspacing機能 を追加 <独自クラスの概要> Viewportに表示する分のアイテムを生成し、Viewport外にいったアイテムをViewport内 に入るアイテムとして再利用するもの <実装> スライドした時にアイテムひとつずつ位置を指定している →このときにpadding(Content外枠の余白)、spacing(アイテム間の余白)を考慮した位 置にする
そのほか、Contentの大きさにアイテムの大きさを合わせる機能を追加 18
4.1 content 19 content
4.1 items 20 items
4.1 padding, spacing 21 paddingTop paddingLeft spacing
5.1 インターンを通して感じたこと・学んだこと ・コミュニケーション ・影響範囲の考慮 ・問題解決の順序 22
5.2 コミュニケーション <簡潔に伝える> 特にリアルタイムな会話において、質問に対して結論をまとめて伝えられない →作業ログをこまめにとり、「やったこと」「その結果」をまとめておく <明確に伝える> 特にテキストコミュニケーションにおいて、ニュアンスが伝わりにくい →「この連絡で何を伝えたいのか」を意識する <状況を伝える> 大切な部分がわからないところで詰まる
→「今◯◯をしています」と伝える。助言の判断はメンターの方に任せる 23
5.3 影響範囲の考慮 今回のインターンでは、影響範囲を詳しく調べる前に実装に移ってしまうことが多かった その結果、実装方法を後から変更するようなこともあった ・自分の知らない部分に影響を与えているかもしれないという意識 ・まず最初に影響範囲を調査する。それから、影響範囲を考慮してどの実装が最適なの か考える 24
5.4 問題解決の順序 今回は実装と同じくらい調査をおこなった 調査は実装と比較して最終的に何ができればいいのかわからないことが多い その問題に対する知識が浅いほど、自分の推測する答えだけに進むべきではない 簡単な調査結果から、問題解決への新しい糸口が見つかることもある 解決する可能性が高いと判断した3時間かかる調査より、 10分で終わる調査をまずやるべき 25
6. さいごに 初めて触れる技術が多く、調べることに多くの時間を割いてしまい、想定していたほどの 進捗にならず正直悔しいです。 しかし、自分で調べて問題を解決していくことはとても楽しく、仕事としてのゲーム開発も 楽しくできる気がして安心しました。 自分の間違った言動に対して的確な指摘をしてくださり、その一方で自分なりの結論が 出るまで見守ってくださったメンターの方にはとても感謝しています。 26
6. さいごに 年末という大変お忙しい中、私を支えてくださった社員のみなさん、本当にありがとうご ざいました! 約1ヶ月間お世話になりました!!! 27 引けました