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.5k
InternshipReport-santaro
akatsukinewgrad
January 08, 2021
Tweet
Share
More Decks by akatsukinewgrad
See All by akatsukinewgrad
2023/1/25_QAテスター meet up!
akatsukinewgrad
0
130
成果発表資料.pdf
akatsukinewgrad
0
2k
広大なフィールドを気持ちよく駆け抜けるための技術.pdf
akatsukinewgrad
0
550
正規表現とReDoS.pdf
akatsukinewgrad
0
540
Unityで大量のオブジェクト_を吹き飛ばしたい.pdf
akatsukinewgrad
0
580
新卒2年目が思う1年目の学び.pdf
akatsukinewgrad
0
510
障害訓練の取り組みについて.pdf
akatsukinewgrad
0
680
7分でわかるアカツキゲームス
akatsukinewgrad
0
550
Bitcoinだけでスマートコントラクト.pdf
akatsukinewgrad
1
870
Other Decks in Programming
See All in Programming
FormFlow - Build Stunning Multistep Forms
yceruto
1
190
Team operations that are not burdened by SRE
kazatohiei
1
180
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
480
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
46
30k
Effect の双対、Coeffect
yukikurage
5
1.4k
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
310
Azure AI Foundryではじめてのマルチエージェントワークフロー
seosoft
0
130
CursorはMCPを使った方が良いぞ
taigakono
1
170
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
250
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
17
3.3k
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
2
210
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
110
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Adopting Sorbet at Scale
ufuk
77
9.4k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
We Have a Design System, Now What?
morganepeng
53
7.7k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Fireside Chat
paigeccino
37
3.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
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 引けました