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
pospome
4,626 views
Goのシンプルさについて
Goのシンプルさについて
Software
◦
Read more
4
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 28
2
/ 28
3
/ 28
4
/ 28
5
/ 28
6
/ 28
7
/ 28
8
/ 28
9
/ 28
10
/ 28
11
/ 28
12
/ 28
13
/ 28
14
/ 28
15
/ 28
16
/ 28
17
/ 28
18
/ 28
19
/ 28
20
/ 28
21
/ 28
22
/ 28
23
/ 28
24
/ 28
25
/ 28
26
/ 28
27
/ 28
28
/ 28
More Related Content
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
by
pospome
PDF
日本語テストメソッドについて
by
kumake
PDF
Form認証で学ぶSpring Security入門
by
Ryosuke Uchitate
PDF
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
by
増田 亨
PDF
ドメイン駆動設計 基本を理解する
by
増田 亨
PDF
C/C++プログラマのための開発ツール
by
MITSUNARI Shigeo
PDF
オブジェクト指向エクササイズのススメ
by
Yoji Kanno
PDF
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
by
pospome
日本語テストメソッドについて
by
kumake
Form認証で学ぶSpring Security入門
by
Ryosuke Uchitate
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
by
増田 亨
ドメイン駆動設計 基本を理解する
by
増田 亨
C/C++プログラマのための開発ツール
by
MITSUNARI Shigeo
オブジェクト指向エクササイズのススメ
by
Yoji Kanno
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
What's hot
PDF
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
by
都元ダイスケ Miyamoto
PDF
ソーシャルゲームスケールアウトの歴史
by
Drecom Co., Ltd.
PDF
3週連続DDDその1 ドメイン駆動設計の基本を理解する
by
増田 亨
PDF
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
PDF
ドメインオブジェクトの見つけ方・作り方・育て方
by
増田 亨
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
PDF
ドメイン駆動設計のためのオブジェクト指向入門
by
増田 亨
PDF
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
PDF
継承やめろマジやめろ。 なぜイケないのか 解説する
by
TaishiYamada1
PDF
REST API のコツ
by
pospome
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
PDF
Mavenの真実とウソ
by
Yoshitaka Kawashima
PPTX
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
by
GMO GlobalSign Holdings K.K.
PDF
例外設計における大罪
by
Takuto Wada
PPTX
脱RESTful API設計の提案
by
樽八 仲川
PDF
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
PPTX
Web Workerで○○する話
by
ushiboy
ODP
どこに何を書くのか?
by
pospome
PPTX
async/await のしくみ
by
信之 岩永
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
by
都元ダイスケ Miyamoto
ソーシャルゲームスケールアウトの歴史
by
Drecom Co., Ltd.
3週連続DDDその1 ドメイン駆動設計の基本を理解する
by
増田 亨
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
ドメインオブジェクトの見つけ方・作り方・育て方
by
増田 亨
マイクロサービス 4つの分割アプローチ
by
増田 亨
ドメイン駆動設計のためのオブジェクト指向入門
by
増田 亨
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
継承やめろマジやめろ。 なぜイケないのか 解説する
by
TaishiYamada1
REST API のコツ
by
pospome
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
Mavenの真実とウソ
by
Yoshitaka Kawashima
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
by
GMO GlobalSign Holdings K.K.
例外設計における大罪
by
Takuto Wada
脱RESTful API設計の提案
by
樽八 仲川
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
Web Workerで○○する話
by
ushiboy
どこに何を書くのか?
by
pospome
async/await のしくみ
by
信之 岩永
More from pospome
PDF
トランザクションスクリプトのすすめ
by
pospome
PDF
MicroServices & APIs
by
pospome
PDF
アプリケーションコードにおける技術的負債について考える
by
pospome
PDF
Datastore/Go のデータ設計と struct の振る舞いについて
by
pospome
PDF
パッケージの循環参照
by
pospome
PDF
Controllerのbefore_actionにおける インスタンス変数セットについて
by
pospome
PDF
サーバサイドNodeの使い道
by
pospome
トランザクションスクリプトのすすめ
by
pospome
MicroServices & APIs
by
pospome
アプリケーションコードにおける技術的負債について考える
by
pospome
Datastore/Go のデータ設計と struct の振る舞いについて
by
pospome
パッケージの循環参照
by
pospome
Controllerのbefore_actionにおける インスタンス変数セットについて
by
pospome
サーバサイドNodeの使い道
by
pospome
Goのシンプルさについて
1.
Goのシンプルさについて
2.
自己紹介 twitter : pospome blog
:pospomeのプログラミング日記 職種 : サーバサイドエンジニア 興味 : クラス設計全般, DDD アイコン:羊じゃなくてポメラニアンです
3.
Go からシンプルさを感じたことを話そうかと思います 時間限られているので サラッとしか説明できませんが・・・
4.
・package private ・コンストラクタ ・struct に
static な method
5.
・package private ・コンストラクタ ・struct に
static な method
6.
自分が触ったオブジェクト指向言語には アクセス修飾子として以下が用意されていた モジュールレベルの public, private クラスレベルの
public, protected, private
7.
特にクラスレベルのアクセス修飾子は強力 クラスは自分自身のプロパティ、メソッドに対して 公開、非公開をコントロールできる
8.
仮に 1つのモジュールに大量のクラスを突っ込んでも 触られたくないものをクラスレベルで隠すことができるので ある程度の秩序は保たれる 最悪モジュールの依存関係、粒度は気にしなくても なんとかなる
9.
なので、クラスをどう設計するかを重心する印象 普段モジュール同士の依存関係とか粒度とかって 考えて設計してますか?
10.
一方、Goにはパッケージレベルのアクセス修飾子しかない 同じパッケージであれば、 struct, function, value
は触り放題
11.
仮に 1つのパッケージ内に大量の struct を突っ込むと 全てが触り放題になってしまう 触られたくないものが存在する場合、 パッケージを分けて
package private にする必要がある
12.
つまり、Go では パッケージレベルのアクセス修飾子だけ考えればいい パッケージの循環参照が禁止なこともあり、 パッケージレベルで 粒度、公開範囲、依存方向を考えるべき struct ベースで考えてもこれらは解決できない struct
は保持する値と振る舞いの管理だけ考えればいい パッケージと struct で妙な責務の分離ができている
13.
シンプルな点 package private しかない パッケージレベルのアクセス修飾子しか提供しない
14.
・package private ・コンストラクタ ・struct に
static な method
15.
Go にはコンストラクタがない NewXxxx() という
function が コンストラクタのような役割を担っている 実質 static な factory method みたいな実装になる
16.
個人的にはコンストラクタよりも 実装パターンとしての static な factory
method が好き 「どんなオブジェクトを生成するのか」 をメソッド名で表現できるから
17.
シンプルな点 コンストラクタはないので function で実装する
18.
・package private ・コンストラクタ ・struct に
static な method
19.
Go では struct に
static な method を持たせることができない 最初は違和感しかなかったし、 static method 欲しかったので、 無理やりそれっぽい実装したこともあった
20.
ただ、最初に説明したとおり、 Go はパッケージを中心に考えた方がいい気がする 無理やり struct
に static method を持たせることに 違和感があるのも事実
21.
今では大人しく function で実装しています
22.
シンプルな点 struct に static
method は生やせないので function で実装する
23.
まとめ
24.
・package private しかない ・コンストラクタはない ・struct
に static method はない 削ることによってシンプルになっている
25.
個人的には多機能な言語は魅力的だった 自分のやりたいことに対して 何かしらの適切な選択肢が存在する
26.
ただ、Goを触ってみて、 多機能な言語は不適切な選択をしてしまうリスクも あると思った 例 「継承が悪いのではない、お前の使い方が悪いだけだ」
27.
Go から学んだシンプルさは 他の言語を書くときにも役立つと思う いろんな言語を触ってみるって大事ですね (´・ω・`)
28.
おわり
Download