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
570
正規表現とReDoS.pdf
akatsukinewgrad
0
560
Unityで大量のオブジェクト_を吹き飛ばしたい.pdf
akatsukinewgrad
0
610
新卒2年目が思う1年目の学び.pdf
akatsukinewgrad
0
530
障害訓練の取り組みについて.pdf
akatsukinewgrad
0
700
7分でわかるアカツキゲームス
akatsukinewgrad
0
570
Bitcoinだけでスマートコントラクト.pdf
akatsukinewgrad
1
920
Other Decks in Programming
See All in Programming
CJK and Unicode From a PHP Committer
youkidearitai
PRO
0
110
アセットのコンパイルについて
ojun9
0
120
FindyにおけるTakumi活用と脆弱性管理のこれから
rvirus0817
0
500
Putting The Genie in the Bottle - A Crash Course on running LLMs on Android
iurysza
0
140
奥深くて厄介な「改行」と仲良くなる20分
oguemon
1
520
今から始めるClaude Code入門〜AIコーディングエージェントの歴史と導入〜
nokomoro3
0
130
ソフトウェアテスト徹底指南書の紹介
goyoki
1
150
Amazon RDS 向けに提供されている MCP Server と仕組みを調べてみた/jawsug-okayama-2025-aurora-mcp
takahashiikki
1
110
Vue・React マルチプロダクト開発を支える Vite
andpad
0
110
Updates on MLS on Ruby (and maybe more)
sylph01
1
180
プロパティベーステストによるUIテスト: LLMによるプロパティ定義生成でエッジケースを捉える
tetta_pdnt
0
320
testingを眺める
matumoto
1
140
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
920
Into the Great Unknown - MozCon
thekraken
40
2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Producing Creativity
orderedlist
PRO
347
40k
Thoughts on Productivity
jonyablonski
70
4.8k
Side Projects
sachag
455
43k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
61k
The Power of CSS Pseudo Elements
geoffreycrofte
77
6k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
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 引けました