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
94
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
38
ハッカソン請負人の 開発ルーティンを紹介!
donabe3
0
89
AndroidXR 開発ツールごとの できることできないこと
donabe3
0
370
OutOfRange 【プロトスプリントリーグ】
donabe3
0
120
Unityで都市開発シミュレーションゲーム開発をしてみよう
donabe3
0
520
現実 VS バーチャルのマルチプレイゲームを作ろう
donabe3
0
220
Speech to Textureで 思い通りに世界を改変しよう
donabe3
0
45
院試までなにやったか
donabe3
0
54
XR Interaction toolkit & XRHands & Passthrough API で MR 開発
donabe3
0
300
Other Decks in Programming
See All in Programming
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
2
290
Building an Out-of-Order CPU
latte72
1
790
一人だけ、Kiroが静止する日
hideg
0
120
JRuby: Past, Present, and Future
headius
0
170
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
310
新卒PdEのリアル
ryu1013
1
510
Intent as Code
shoppingjaws
6
1.1k
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
410
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
550
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
350
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
2.4k
Featured
See All Featured
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
910
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
My Coaching Mixtape
mlcsv
0
320
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
280
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
360
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
540
Designing for Timeless Needs
cassininazir
1
480
Balancing Empowerment & Direction
lara
6
1.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
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 今回説明しきれなかったこともたくさんあるのでぜひ読んでみてください
リーダブルコード • これは全プログラマーが読むべき • プログラマーの常識がたくさん詰まっている。 • でも一番いい勉強法は実際に開発すること
ご清聴ありがとうございました