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
チーム開発におけるコードの書き方
Search
donabe
October 21, 2021
Programming
92
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
36
ハッカソン請負人の 開発ルーティンを紹介!
donabe3
0
88
AndroidXR 開発ツールごとの できることできないこと
donabe3
0
370
OutOfRange 【プロトスプリントリーグ】
donabe3
0
110
Unityで都市開発シミュレーションゲーム開発をしてみよう
donabe3
0
500
現実 VS バーチャルのマルチプレイゲームを作ろう
donabe3
0
220
Speech to Textureで 思い通りに世界を改変しよう
donabe3
0
43
院試までなにやったか
donabe3
0
53
XR Interaction toolkit & XRHands & Passthrough API で MR 開発
donabe3
0
300
Other Decks in Programming
See All in Programming
[PyCon KR 2026] More Variants, More Diversity for AI Accelerators
achimnol
0
130
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.9k
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
670
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
810
Swift愛好会100回記念 第1回を振り返る
jollyjoester
0
110
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
210
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
620
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
140
業務時間外もAIに働いてもらう話
colorful12
3
9.9k
FDEとは、何者なのか?
masapyon1212
0
130
高専キャリア LT 発表内容
crysta1221
6
5.5k
ソフトウェアラスタライザ
fadis
1
780
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
660
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
510
Between Models and Reality
mayunak
4
450
Crafting Experiences
bethany
1
280
Design in an AI World
tapps
1
300
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Building Applications with DynamoDB
mza
96
7.2k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Automating Front-end Workflow
addyosmani
1369
210k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
The agentic SEO stack - context over prompts
schlessera
0
890
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 今回説明しきれなかったこともたくさんあるのでぜひ読んでみてください
リーダブルコード • これは全プログラマーが読むべき • プログラマーの常識がたくさん詰まっている。 • でも一番いい勉強法は実際に開発すること
ご清聴ありがとうございました