Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
チーム開発におけるコードの書き方
Search
donabe
October 21, 2021
Programming
98
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
チーム開発におけるコードの書き方
私もチーム開発経験を一年弱積んだということで、一年生向けにどのようなことを意識してコードを書くかについてまとめてみました。
donabe
October 21, 2021
More Decks by donabe
See All by donabe
Unityがマルチプラット フォームビルドできる理由は? よく聞くIL2CPPって? 調べてみました!
donabe3
0
44
ハッカソン請負人の 開発ルーティンを紹介!
donabe3
0
94
AndroidXR 開発ツールごとの できることできないこと
donabe3
0
380
OutOfRange 【プロトスプリントリーグ】
donabe3
0
120
Unityで都市開発シミュレーションゲーム開発をしてみよう
donabe3
0
540
現実 VS バーチャルのマルチプレイゲームを作ろう
donabe3
0
220
Speech to Textureで 思い通りに世界を改変しよう
donabe3
0
45
院試までなにやったか
donabe3
0
55
XR Interaction toolkit & XRHands & Passthrough API で MR 開発
donabe3
0
300
Other Decks in Programming
See All in Programming
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
180
contenteditable と日本語入力に向き合う
colorful12
0
190
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
330
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
100
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
730
R8 の設定見直しでアプリサイズ削減
andpad
0
210
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2.3k
速習iPhone Duo対応
yuukiw00w
2
980
CodeRabbitの効果検証と過ごしてみた3ヶ月
armondando
0
230
Are APIs Still Relevant in the AI Era?
soyuka
0
460
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
22
22k
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
560
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
450
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
330
The Mindset for Success: Future Career Progression
greggifford
PRO
0
530
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
Transcript
土鍋のLT
自己紹介 • 土鍋です • 最近、組織運営の大変さを痛感してます • あと今週末忙しいなあと • 土曜に地元(さいたま)帰ってガルパンの映画みて庵野秀明展いって合間で 免許試験の勉強と大学の課題(重い)しつつ月曜には免許センターで試験
ゲーミング土鍋
チーム開発で気にかけてることはありますか? 個人で開発する文には別にGame.csに全処理書いたって構わない しかしチーム開発だとそうもいかない。 他人はそのコードを理解できるのか? そのコードに機能追加するときは? 汚いコードだと自分にも他人にもメリットがない
チーム開発における コードの書き方
そこで一年生向けにコードを書く際の 注意点を話していきます 自分も全然できてないんでおこがましいんですがね… まあ意識するようになってくれたらいいなという感じ
コードを書く際に意識すること
このコードを見て 何を思うでしょうか?
MonoBehaviour使いすぎ メンバ変数をpublicにするな 同じ役割の処理はメソッドにまとめろ Update()に向いてない処理 拡張性がまったくない 疎結合にしろ
なんでもかんでもpublicにしない 特にメンバ変数はあんまりpublicにしてはいけない。 例えば敵のHPがなにかのミスで攻撃してないのに勝手に減ってしまうか も →privateにしてHPの変更はメソッドで行う。 どうしてもpublicにしてインスペクターから見たいなら 「 [SerializeField] private 」を使おう。
Updateは本当に必要なときに使う さっきの例でいうと敵が死んだ際の処理がUpdate内にif文で書かれていた これでは毎フレーム死んだかどうか調べている 敵が死ぬのは少なくともプレイヤーから攻撃を受けた際のみ →攻撃を受けた際の処理メソッドをつくり、 その中に死んだ際の処理追加
拡張性を高める&処理を見やすく 敵が死んだ際の処理は一つのメソッドにまとめる。 これによってどこになんの処理があるかが明確化 また、今後死んだ際の処理を追加する際にも書きやすい 例)経験値、アニメーション、エフェクトなどなど
これで少しはマシになった やったこと • publicの使用を減らす • Update()をむやみに使わない • 処理をメソッドにまとめる 他にも色々追加した •
インスペクターから敵の最大HPを設定できるように • コンストラクタの利用 • summaryタグの使用(どんな処理か記述するコメント) ※これでもよくないところはまだあるかも
作品規模が拡大するほど重要になってくる 例えば以下のようなことをしたいとする • エラーを吐いてる場所を特定する • 既存の変数やメソッドを利用して機能拡張したい 大量のコードを見て処理を変更したり追加する必要がある 自分ならまだしも他人がそれを行うとして、読みにくいコードだとどうだろう? あるいはどっか変更したらどっかでエラー発生した!なんてなったら? →きれいにコードを書くことがどれほど重要か
コード書くたびにこれらのこと考えて書く? もちろんコード書くときに意識するのは重要だが 事前にやっておくほうがいいよね? そこで!
設計のお話
事前に設計を行っておくとのちのち苦労しない! チームメンバーそれぞれで自由に書くと、それぞれの書き癖などで理解を妨げる →ある程度、設計を行っておくことで • スムーズな理解 • 作業分担しやすくなる • 機能追加がしやすくなる •
もちろんガチガチに固めると大変なのでほどほどに
UML(統一モデリング言語) • クラス図 • オブジェクト図 • コンポーネント図 • ユースケース図 •
アクティビティ図 • シーケンス図 • パッケージ図 などなど (大学の授業でやるよ)
UML 今回はPlantUMLを利用して クラス図をかいてみた。 Vscodeで簡単にかける
クラス図 • クラス同士の関係(依存、継承、インターフェイスなど)、メソッドや メンバ変数などを図示 • それぞれのクラスの持つ機能を一目で分かる • 作業分担がしやすい • 仕様の統一が図れる
まとめ • 拡張性はあるか • 他の人がこのコードを見たときに一発で理解できるかどうか • 余計な処理をしていないか • 事前に設計しておくとのちのち苦労しない 今回言ってないけど
• 疎結合あるか • 再利用性はあるか • 変数名メソッド名クラス名などは何をするのか明確に • SOLID原則 • 継承、インターフェイスも使っていきたい チーム開発や設計は就職してからもすると思うし、覚えておいて損はないはず
とりすーぷさんのブログやスライドが めっちゃ参考になる! • Unity開発で使える設計の話+Zenjectの紹介 https://www.slideshare.net/torisoup/unityzenject • Unityにおける「設計レベル」を定義してみた https://qiita.com/toRisouP/items/79b97c472e588bb91c52 • グローバルゲームジャムでクラス設計をやった話
https://qiita.com/toRisouP/items/824aff814849ae41efe7 • https://qiita.com/toRisouP/items/5b7814fda00cab120e39 • https://qiita.com/toRisouP/items/a868113c99179c585001 • https://qiita.com/toRisouP/items/6fdef63412db97970a11 今回説明しきれなかったこともたくさんあるのでぜひ読んでみてください
リーダブルコード • これは全プログラマーが読むべき • プログラマーの常識がたくさん詰まっている。 • でも一番いい勉強法は実際に開発すること
ご清聴ありがとうございました