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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
donabe
October 21, 2021
Programming
81
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
27
ハッカソン請負人の 開発ルーティンを紹介!
donabe3
0
78
AndroidXR 開発ツールごとの できることできないこと
donabe3
0
350
OutOfRange 【プロトスプリントリーグ】
donabe3
0
100
Unityで都市開発シミュレーションゲーム開発をしてみよう
donabe3
0
480
現実 VS バーチャルのマルチプレイゲームを作ろう
donabe3
0
200
Speech to Textureで 思い通りに世界を改変しよう
donabe3
0
41
院試までなにやったか
donabe3
0
48
XR Interaction toolkit & XRHands & Passthrough API で MR 開発
donabe3
0
290
Other Decks in Programming
See All in Programming
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
1
240
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
120
共通化で考えるべきは、実装より公開する型だった
codeegg
0
270
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.7k
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
840
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
370
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.9k
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
160
関数型プログラミングのメリットって何だろう?
wanko_it
0
190
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
610
FDEが実現するAI駆動経営の現在地
gonta
2
200
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
270
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Thoughts on Productivity
jonyablonski
76
5.3k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Site-Speed That Sticks
csswizardry
13
1.3k
The Cost Of JavaScript in 2023
addyosmani
55
10k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
420
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Accessibility Awareness
sabderemane
1
160
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
360
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 今回説明しきれなかったこともたくさんあるのでぜひ読んでみてください
リーダブルコード • これは全プログラマーが読むべき • プログラマーの常識がたくさん詰まっている。 • でも一番いい勉強法は実際に開発すること
ご清聴ありがとうございました