Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
infinite_loop
PDF, PPTX
984 views
プログラムと名前にまつわる座談会
たかが命名、されど命名。名前から考えるよいコード【タガヤス その4】発表資料(3) https://tagayas.connpass.com/event/80363/
Technology
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 49
2
/ 49
3
/ 49
4
/ 49
5
/ 49
6
/ 49
7
/ 49
8
/ 49
9
/ 49
10
/ 49
11
/ 49
12
/ 49
13
/ 49
14
/ 49
15
/ 49
16
/ 49
17
/ 49
18
/ 49
19
/ 49
20
/ 49
21
/ 49
22
/ 49
23
/ 49
24
/ 49
25
/ 49
26
/ 49
27
/ 49
28
/ 49
29
/ 49
30
/ 49
31
/ 49
32
/ 49
33
/ 49
34
/ 49
35
/ 49
36
/ 49
37
/ 49
38
/ 49
39
/ 49
40
/ 49
41
/ 49
42
/ 49
43
/ 49
44
/ 49
45
/ 49
46
/ 49
47
/ 49
48
/ 49
49
/ 49
More Related Content
PPTX
スパゲッティ紀行
by
幸雄 村上
PPTX
デザインのコツ
by
Yuma Shiraishi
PPTX
Nop007 re editing
by
ano7013
PDF
イトナブ発表会 ナナ編
by
ota sayaka
PDF
伝わるチラシの作りかた講座:2日目「レイアウト・デザインのコツ」
by
Kumiko Hiramoto
PPTX
Zikosilyoukai
by
Ohyama Tomoya
PDF
ノンデザイナー向け デザイン講座 1回目基本原則
by
nao akai
PDF
市民のためのデザイン理論(誰でもできる視覚デザイン)
by
Joe Matsumoto
スパゲッティ紀行
by
幸雄 村上
デザインのコツ
by
Yuma Shiraishi
Nop007 re editing
by
ano7013
イトナブ発表会 ナナ編
by
ota sayaka
伝わるチラシの作りかた講座:2日目「レイアウト・デザインのコツ」
by
Kumiko Hiramoto
Zikosilyoukai
by
Ohyama Tomoya
ノンデザイナー向け デザイン講座 1回目基本原則
by
nao akai
市民のためのデザイン理論(誰でもできる視覚デザイン)
by
Joe Matsumoto
Similar to プログラムと名前にまつわる座談会
PDF
命名の話(ソースコードは読み物です)
by
Akihiro Nakahara
PDF
名前付け入門
by
Takahiro Yaota
PPT
Naming -名前付け-
by
Koki Shimizu
PDF
より良いコードを書くための名前付け
by
koji kobayashi
PDF
よい名前を付けましょう リーダブルなんたらとか
by
よしだ あつし
PPS
ソフトウェア設計私論
by
guestb2d5a3
命名の話(ソースコードは読み物です)
by
Akihiro Nakahara
名前付け入門
by
Takahiro Yaota
Naming -名前付け-
by
Koki Shimizu
より良いコードを書くための名前付け
by
koji kobayashi
よい名前を付けましょう リーダブルなんたらとか
by
よしだ あつし
ソフトウェア設計私論
by
guestb2d5a3
More from infinite_loop
PDF
ChatGPT触ってみた
by
infinite_loop
PDF
社内ソフトスキルを考える
by
infinite_loop
PDF
3Dプリンタって いいね
by
infinite_loop
PDF
VRChatでお酒が注げる飲み物アセットの紹介
by
infinite_loop
PDF
アニメーションとスキニングをBurstで独自実装する.pdf
by
infinite_loop
PDF
I ❤ Virtual Machines 仮想環境をより便利に使うツールたち
by
infinite_loop
PDF
500万行のPHPプロジェクトにおけるログ出力の歩み
by
infinite_loop
PDF
ADRという考えを取り入れてみて
by
infinite_loop
PDF
リファクタリングで実装が○○分短縮した話
by
infinite_loop
PDF
ゲームのインフラをAwsで実戦tips全て見せます
by
infinite_loop
PDF
楽しいVR空間を作る技術と支える技術 #osc19do
by
infinite_loop
PDF
Start rl with_unity_machine_learning_agents
by
infinite_loop
PDF
UniRx の1歩目
by
infinite_loop
PDF
がんばれ PHP Fiber
by
infinite_loop
PDF
心に残った名前ランキング
by
infinite_loop
PDF
名は体を表していますか
by
infinite_loop
PDF
名前の力
by
infinite_loop
PDF
大切な名前[Intro]公開版
by
infinite_loop
PDF
JupyterNotebookとMySQLでゼロからはじめるデータサイエンス
by
infinite_loop
PDF
複数拠点における開発効率の維持・向上
by
infinite_loop
ChatGPT触ってみた
by
infinite_loop
社内ソフトスキルを考える
by
infinite_loop
3Dプリンタって いいね
by
infinite_loop
VRChatでお酒が注げる飲み物アセットの紹介
by
infinite_loop
アニメーションとスキニングをBurstで独自実装する.pdf
by
infinite_loop
I ❤ Virtual Machines 仮想環境をより便利に使うツールたち
by
infinite_loop
500万行のPHPプロジェクトにおけるログ出力の歩み
by
infinite_loop
ADRという考えを取り入れてみて
by
infinite_loop
リファクタリングで実装が○○分短縮した話
by
infinite_loop
ゲームのインフラをAwsで実戦tips全て見せます
by
infinite_loop
楽しいVR空間を作る技術と支える技術 #osc19do
by
infinite_loop
Start rl with_unity_machine_learning_agents
by
infinite_loop
UniRx の1歩目
by
infinite_loop
がんばれ PHP Fiber
by
infinite_loop
心に残った名前ランキング
by
infinite_loop
名は体を表していますか
by
infinite_loop
名前の力
by
infinite_loop
大切な名前[Intro]公開版
by
infinite_loop
JupyterNotebookとMySQLでゼロからはじめるデータサイエンス
by
infinite_loop
複数拠点における開発効率の維持・向上
by
infinite_loop
プログラムと名前にまつわる座談会
1.
プログラムと 名前にまつわる 雑談会
2.
自己紹介 ● 名前: Akira
Nakano ● 趣味: ボビンレース(はじめたばかり)
3.
雑談会 プログラムと名前に関係するお話をつらつらと
4.
名前と設計に関する考え (自分の)
5.
名前と設計に関する考え 「雑談」で話す理由 ● 設計って一つの視点で行うものじゃない ● ユーザー,
開発者, フレームワーク, 実行環境, etc… ● 同じ題材でも求められるものが違う ○ 実在するお店のシステム ○ ゲーム内の武器屋
6.
名前と設計に関する考え 「雑談」で話す理由 名前のみでは語れない、でも名前を考えることは大切 なので、若干無理やりな部分も! (収まり切らなかったとかじゃないよ!)
7.
名前と設計に関する考え ちょっと名前から外れて、良い設計とはなにか? ● 疎結合が良い ● 高凝集が良い よく聞く話、なぜか?(というかなに?)
8.
名前と設計 家が一つのパーツでできていたとする
9.
名前と設計 窓が割れたら?
10.
名前と設計 交換が効かない、全部捨てるしかない
11.
名前と設計 逆に必要以上に細かく別れていたら?
12.
名前と設計 求められる性能を発揮できない
13.
名前と設計 ドアに連動して屋根が開いたら?
14.
名前と設計 他の部分も怖くてさわれない
15.
名前と設計 機能性(高凝集) と 独立性(疎結合)
が求められる
16.
名前と設計 プログラムも同じ 全部同じクラスやメソッドに書いてしまったら ● 仕様変更となったとき ● 不具合が見つかったとき ●
新しい機能を導入したいとき 適切な粒度で変更できますか?
17.
名前と設計 プログラムも同じ 逆に複数の処理を跨がないと機能を達成できないとしたら ● 修正があったとき全て対応できるか ● 間違った使い方をしないと保証できるか ●
他の処理によって予期せぬ動作を引きおこなさないか 機能性を担保できますか?
18.
名前と設計 適切な境界 ≒ 適切な名前
が必要!
19.
名前と設計 バーガーショップの販売を模した処理を考えてみよう (Mのつくあのお店) ● 要素をクラス化すればいいよね ● 名詞で名前を付ければいいんでしょ? ○
お店 ○ カウンター ○ キッチン ○ お客さん
20.
名前と設計 バーガーショップの販売を模した処理を考えてみよう (Mのつくあのお店) ● 要素をクラス化すればいいよね ● 名詞で名前を付ければいいんでしょ? ○
お店 ○ カウンター ○ キッチン ○ お客さん 本当か?
21.
名前と設計 なんとなくこんな感じかな? お店 キッチン カウンター お客さん
22.
名前と設計 「販売」はどこだ? お客さん販売 お店 キッチン カウンター
23.
「販売」ってなんだ?
24.
名前と設計 ● 「販売」ってなんでしょうか? ● 名前は知っている ●
なんとなくお客さんとお店のやりとりだと思う ● 本当にそうか? 境界線が曖昧(少なくとも、今の自分の中では)
25.
名前と設計 名前「販売」について考える ● メニューを見せる ● 注文を受ける ●
注文をキッチンに伝える ● お金のやり取りを行う ● 商品番号を渡す ● 商品番号に紐づく商品を渡す 「お店」は出て来なかった(お客は隠れているだけかも)
26.
名前と設計 販売 キッチン 番号 商品 注文を受ける 商品を渡す 注文 メニュー 見る
27.
名前と設計 悪くなさそうだけど 販売 キッチン 番号 商品 注文を受ける 商品を渡す 注文 メニュー 見る
28.
名前と設計 名前からの考え方 ● 「販売」という名前に自分は戸惑った ○ 他の人はどうだろうか? ●
「販売」という名前は他の機能を持たないだろうか ○ 「商品券」の販売は? ○ メニューの切り替えがあったら? ○ 不要な機能に違和感を示す名前か?
29.
より独立した名前を探そう
30.
例えば、こんなの
31.
名前と設計 ● メニュー提供 ● 注文カウンター ○
注文を受ける ■ 注文が正しいか確認する ■ 注文をキッチンに伝える ■ お金のやり取りを行う ■ 受け取り番号を発行する ● 提供カウンター ○ 商品の提供 ■ 受け取り番号が必要 ■ 商品が完成していれば提供する
32.
名前と設計 注文カウンター キッチン 提供カウンター 注文 番号 商品 メニュー
33.
名前と設計 注文カウンター キッチン 提供カウンター 注文 番号 商品 メニュー あれ?「販売」は何処へ・・・
34.
販売 名前と設計 注文カウンター キッチン 提供カウンター 注文 番号 商品 メニュー 組み合わせて表現 ちょっと怪しい、まだふんわりしてる
35.
名前と設計 注文カウンター キッチン 提供カウンター 注文 番号 商品 スペシャル メニュー 変化があっても受け入れられる A
B
36.
名前と設計 ● 目につく名前に惑わされない ● 名前(境界)を理解する ○
フォーカスしたい名前の本質を知る ● より小さい概念(の関係性)を見つける ○ カウンターは物理的には1つかもしれない ○ 概念としては「注文」「提供」の二つがある ● 可能なら具体的な名前を付け直す
37.
ここから本当に雑談
38.
名前に迷ったとき ● つぶやいてみる ○ 販売は商品を提供する。販売はメニューを変更する。 ○
提供カウンタは商品を提供する。提供カウンタはメニューを変更する。 ● となりの人に聞いてみる ○ 2,3人が首を傾げなければ、たぶん大丈夫 ○ できれば会話してみると良い ● 英語に迷ったとき ○ 日本語 > 翻訳 > 画像検索 ○ 試している最中
39.
ハンガリアン記法 ● 昔話!! ● Microsoftのチャールズ・シモニイにより考案された ●
ハンガリー人らしく、そのままなネーミング ● それが保持するものの種類を示すタグを小文字で付ける
40.
ハンガリアン記法 ハンガリアンは二つある ● システムハンガリアン ○ 一般に知られる(知られた)ハンガリアン ○
暗黒面 ● アプリケーションハンガリアン ○ シモニイが本当に提唱したかったもの
41.
ハンガリアン記法 ● システムハンガリアン ○ 変数の型を表現するタグをつける ○
int なら i, long なら l とかで iCount, lCountとする ○ 型があれば保証してくれる情報じゃない? ○ その変数の型が変更された時に保守が大変 ■ 逆に混乱の元になる ○ 推奨されない
42.
ハンガリアン記法 ● アプリケーションハンガリアン ○ 変数の種類を表現するタグをつける ○
安全な文字列ならsafeのs、逆ならunsafeのusなど ○ 型では保証できない領域を保証する ○ sPassword = usPassworld 危険なコードが見える ○ 現在は推奨されない(とおもう)
43.
ハンガリアン記法 ● 現在 ○ usというタグの意味を知らないと理解できない ■
省略の問題が残る ○ us(タグ)よりunsafe(名前)の方が読み手を選ばない ○ 型の力を強化できる ■ strong typedefなどにより強力な型付けが可能 ○ 意思は受け継ぎつつ非推奨かなと思う
44.
曖昧な名前 ● Get ○ プログラムは、データをやり取りするので至る所に「取得」がある ○
どこから取得したのか? どう取得したのか? ○ 特にインフラレイヤでは気を付けたい(DBとかデバイス付近) ○ メンバのゲッター程度の軽い処理に対して記述されるもイメージ ● Check ○ チェックした後は?あっていればいいのか?間違っていればいいのか? ○ CheckPost(ポストである確認) より AllowPostOnly(ポストのみ許可) ○ CheckBox->Check() チェックマークをつける?(ちょっと無理やり) ● Filter ○ 除外するのか、選ぶのか・・・Selectとかどうですかね。
45.
ユビキタス言語 DDDのプラクティスの1つ 開発者とドメインエキスパートとの間で共通の意味を持つ用語を構築する 開発者とドメインエキスパートを含めたチーム全体で作り上げる共通言語 名前に業務上の境界を設け、開発者とドメインエキスパートが会話をし ドメインへの理解を深め、モデルに反映させる。 共通認識の名前を用いることで、課題に則したモデリングが行える。 バイト経験者と飲食店の例とかをやってみたら面白いかもね!
46.
文化 ● 名前は文化から生まれる。 ● 勝手に命名ルールを変更するのは文化破壊となる。 ●
一人で進むのはやめよう。 ● チームで考える(やるべきこと、そうで無いもの) ● 文化がなければ、小さなところから育てよう
47.
まとめ
48.
まとめ ● プログラムと名前は切っても切れない関係 ● 今も昔も色々な考えがある ●
名前の考え方も進化していく ● 読みやすく品質の高いコードを目指しましょう ● 足並みそろえよう
49.
以上、ありがとうございました
Download