Submit Search
Upload
ワタシはSingletonがキライだ
•
33 likes
•
18,171 views
Tetsuya Kaneuchi
Follow
第50回Cocoa勉強会関西の発表資料です。
Read less
Read more
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 38
Recommended
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
40歳過ぎてもエンジニアでいるためにやっていること
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
torisoup
プログラマのためのUnity勉強会 http://peatix.com/event/311392
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
Unityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
torisoup
Unityでオニオンアーキテクチャをやってみたという話です 2019/02/21 Roppongi.unity #1 https://roppongiunity.connpass.com/event/119111/
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
例外設計における大罪
例外設計における大罪
Takuto Wada
例外設計における大罪 Jun 27, 2012 @ java-ja
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
DevLOVE X Day1 C-5のセッションです。 ITの活用範囲の広がりとともに、費用・品質よりもデリバリを優先するプロジェクトも増えてきました。しかし「しっかり考えるよりも、作ってリリースしちゃおうぜ、正解なんて誰にも分からないんだから」というマントラを唱えながら、返済見込みの立たない大量の技術的負債を抱える。それが最善の選択なのか、もう少しだけ立ち止まって考えてみませんか? YAGNIという言葉を便利に使いすぎてはいませんか? コードを書きなぐるのと、ちょっと考えて設計して作るのとで、そんなに開発スピードに違いがありますか? 考えてみたいと思います。
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
Masakazu Matsushita
Frontrend Vol.6 powered by CyberAgent, Inc. http://frontrend.doorkeeper.jp/events/6907 で発表したプレゼン資料です。 こういう資料に対する投げ銭的なのがどうなるのか気になっていたので、もしよろしければ・・・!15円からできるソーシャルカンパサービスだそうですm(_ _)m http://kampa.me/t/dev
Recommended
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
40歳過ぎてもエンジニアでいるためにやっていること
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
torisoup
プログラマのためのUnity勉強会 http://peatix.com/event/311392
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
Unityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
torisoup
Unityでオニオンアーキテクチャをやってみたという話です 2019/02/21 Roppongi.unity #1 https://roppongiunity.connpass.com/event/119111/
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
例外設計における大罪
例外設計における大罪
Takuto Wada
例外設計における大罪 Jun 27, 2012 @ java-ja
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
DevLOVE X Day1 C-5のセッションです。 ITの活用範囲の広がりとともに、費用・品質よりもデリバリを優先するプロジェクトも増えてきました。しかし「しっかり考えるよりも、作ってリリースしちゃおうぜ、正解なんて誰にも分からないんだから」というマントラを唱えながら、返済見込みの立たない大量の技術的負債を抱える。それが最善の選択なのか、もう少しだけ立ち止まって考えてみませんか? YAGNIという言葉を便利に使いすぎてはいませんか? コードを書きなぐるのと、ちょっと考えて設計して作るのとで、そんなに開発スピードに違いがありますか? 考えてみたいと思います。
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
Masakazu Matsushita
Frontrend Vol.6 powered by CyberAgent, Inc. http://frontrend.doorkeeper.jp/events/6907 で発表したプレゼン資料です。 こういう資料に対する投げ銭的なのがどうなるのか気になっていたので、もしよろしければ・・・!15円からできるソーシャルカンパサービスだそうですm(_ _)m http://kampa.me/t/dev
Assembly Definition あれやこれ
Assembly Definition あれやこれ
NakanoYosuke1
Unity Assembly Definition Filesの機能について簡単な使い方や設定項目について説明しました。 Gotanda.unity #16 でLTしたスライドです。
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
オブジェクト指向では、モデリング(分析)、設計、実装は、切れ目のない一体の活動。初期の分析は初期の設計であり、初期の実装。毎日分析し、毎日設計し、毎日実装しながら、一歩一歩、モデルも実装も進化させていく。
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
ドメイン駆動設計の考え方、3原則、基本テクニック 1章から7章
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
parrotstudio
Gunma.web #5でやったLT資料 実際のLT時には非表示にしていたページを含む
DDD sample code explained in Java
DDD sample code explained in Java
増田 亨
2019-02-18 #jsug ドメイン駆動設計サンプルコード徹底解説
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
より詳細なCQRSに関する資料はこちら https://little-hands.hatenablog.com/entry/2019/12/02/cqrs 参考資料:http://little-hands.hatenablog.com/entry/jjug2017fall 社内新規プロダクトでDDD, CQRSの思想をベースとしたアーキテクチャを構築し、コマンド(更新系処理)ではSpring Data JPA(Hibernate)を、クエリ(参照系処理)ではjOOQを採用しました。 結果としてそれぞれのORMの良いところを生かした組み合わせのアーキテクチャが構築できたので、その経緯と得られた知見についてお話ししたいと思います。 以下のようなトピックを考えています。 ・CQRSの定義とメリットデメリット ・DDD,CQRSを検討するにあたってのORMの選定ポイント ・構築したアーキテクチャ CQRSはDDDと切り分けて単独でも適用することができるので、DDDについてご存知ない方もご覧いただけます。日本語の文献は意外と少ないので、この辺りの分野に興味がある人の参考になれば幸いです。
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
UnityのUIとはどういったシステムなのか、そして最適化する上で確認すべきポイントとTipsを紹介します。 --- このスライドは、「TECHxGAME COLLEGE#10 Unityでパフォーマンスの良いUIを作る為のTips」で紹介したスライドを少し手直ししたものとなります。 https://techxgamecollege.connpass.com/event/99824/
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
2014/11/8 Developers.IO by Classmethod.Inc 発表資料 Androidアプリケーション開発で読みやすく、変更に強く、テストしやすいコードを書くためにはどうしたらいいか? MVPパターンを用いた設計アプローチと実装例の解説。
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
シリコンバレーのスタートアップを数多く取材する中で気付いた「シリコンバレーにおけるディシプリン(規律)の存在」や「General Electric(GE)やIBM、SAPといった老舗企業が必死になってシリコンバレーのスタートアップを真似している理由」、そして「日本企業がイノベーションを実現するための処方箋」について解説します 詳しく知りたい場合は「GE 巨人の復活」をご覧下さい。 http://www.nikkeibp.co.jp/atclpubmkt/book/17/P55110/ 今後の記事は「シリコンバレーNext」をご覧下さい。 http://itpro.nikkeibp.co.jp/siliconvalley/
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Pythonによる(Rubyでも大体適用可能)黒魔術へ入門するための案内書
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
Kernel/Vm探検隊 online part2. 発表動画: https://youtu.be/brrm328XItM?t=8221
UniRx完全に理解した
UniRx完全に理解した
torisoup
2018/12/15 Unity大人のLT大会の発表資料です
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Visual Studio Users Community Japan #1 で発表した資料になります。 https://vsuc.connpass.com/event/143114/
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
社内勉強会発表用 内容 ・モジュールの凝集度 ・モジュール結合度 ・オブジェクト指向 ・インタフェース
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
JJUG-CCC 日本Javaユーザーズグループクロスコミュニティカンファレンス 2018/12 登壇資料です。
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
SQLアンチパターン 26章「とりあえず削除フラグ」 2015/08/31 @ GMO Yours #ronsakucasual https://atnd.org/events/68902
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
現在のマルチスレッドプログラミングの抱える問題点と、代替案をわかりやすく解説いたします。最近登場したConcurrent Revisionsも解説します。
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
・データベース的な観点でのソーシャルゲームの特徴 ・データモデル ・ソーシャルゲームに従来型RDBMSを使うべきか、流行りのNoSQLで行くべきか ・負荷対策 (アーキテクチャ面) ・負荷対策 (ツール面) ・インフラエンジニアのキャリアについて
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
理論から学ぶデータベース実践入門読書会スペシャルで発表した資料です。
[Android]Static変数さんとactivityさん
[Android]Static変数さんとactivityさん
Hirokazu Fukami
Androidでstatic変数を使っていて、「あれ、いつの間にか値がnullになっている?」みたいなのに遭遇したこと、ありませんか? このスライドでは、そのような状況がどんな仕組みで発生するかと、開発時の再現方法を紹介します。
Android Hacks - 合宿 Activity
Android Hacks - 合宿 Activity
Masanori Ohkawara
「Android Hacks ―プロが教えるテクニック & ツール」(株式会社ブリリアントサービス 著)を教材とした勉強会でのまとめ資料です。 http://www.oreilly.co.jp/books/9784873114569/
More Related Content
What's hot
Assembly Definition あれやこれ
Assembly Definition あれやこれ
NakanoYosuke1
Unity Assembly Definition Filesの機能について簡単な使い方や設定項目について説明しました。 Gotanda.unity #16 でLTしたスライドです。
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
オブジェクト指向では、モデリング(分析)、設計、実装は、切れ目のない一体の活動。初期の分析は初期の設計であり、初期の実装。毎日分析し、毎日設計し、毎日実装しながら、一歩一歩、モデルも実装も進化させていく。
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
ドメイン駆動設計の考え方、3原則、基本テクニック 1章から7章
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
parrotstudio
Gunma.web #5でやったLT資料 実際のLT時には非表示にしていたページを含む
DDD sample code explained in Java
DDD sample code explained in Java
増田 亨
2019-02-18 #jsug ドメイン駆動設計サンプルコード徹底解説
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
より詳細なCQRSに関する資料はこちら https://little-hands.hatenablog.com/entry/2019/12/02/cqrs 参考資料:http://little-hands.hatenablog.com/entry/jjug2017fall 社内新規プロダクトでDDD, CQRSの思想をベースとしたアーキテクチャを構築し、コマンド(更新系処理)ではSpring Data JPA(Hibernate)を、クエリ(参照系処理)ではjOOQを採用しました。 結果としてそれぞれのORMの良いところを生かした組み合わせのアーキテクチャが構築できたので、その経緯と得られた知見についてお話ししたいと思います。 以下のようなトピックを考えています。 ・CQRSの定義とメリットデメリット ・DDD,CQRSを検討するにあたってのORMの選定ポイント ・構築したアーキテクチャ CQRSはDDDと切り分けて単独でも適用することができるので、DDDについてご存知ない方もご覧いただけます。日本語の文献は意外と少ないので、この辺りの分野に興味がある人の参考になれば幸いです。
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
UnityのUIとはどういったシステムなのか、そして最適化する上で確認すべきポイントとTipsを紹介します。 --- このスライドは、「TECHxGAME COLLEGE#10 Unityでパフォーマンスの良いUIを作る為のTips」で紹介したスライドを少し手直ししたものとなります。 https://techxgamecollege.connpass.com/event/99824/
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
2014/11/8 Developers.IO by Classmethod.Inc 発表資料 Androidアプリケーション開発で読みやすく、変更に強く、テストしやすいコードを書くためにはどうしたらいいか? MVPパターンを用いた設計アプローチと実装例の解説。
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
シリコンバレーのスタートアップを数多く取材する中で気付いた「シリコンバレーにおけるディシプリン(規律)の存在」や「General Electric(GE)やIBM、SAPといった老舗企業が必死になってシリコンバレーのスタートアップを真似している理由」、そして「日本企業がイノベーションを実現するための処方箋」について解説します 詳しく知りたい場合は「GE 巨人の復活」をご覧下さい。 http://www.nikkeibp.co.jp/atclpubmkt/book/17/P55110/ 今後の記事は「シリコンバレーNext」をご覧下さい。 http://itpro.nikkeibp.co.jp/siliconvalley/
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Pythonによる(Rubyでも大体適用可能)黒魔術へ入門するための案内書
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
Kernel/Vm探検隊 online part2. 発表動画: https://youtu.be/brrm328XItM?t=8221
UniRx完全に理解した
UniRx完全に理解した
torisoup
2018/12/15 Unity大人のLT大会の発表資料です
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Visual Studio Users Community Japan #1 で発表した資料になります。 https://vsuc.connpass.com/event/143114/
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
社内勉強会発表用 内容 ・モジュールの凝集度 ・モジュール結合度 ・オブジェクト指向 ・インタフェース
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
JJUG-CCC 日本Javaユーザーズグループクロスコミュニティカンファレンス 2018/12 登壇資料です。
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
SQLアンチパターン 26章「とりあえず削除フラグ」 2015/08/31 @ GMO Yours #ronsakucasual https://atnd.org/events/68902
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
現在のマルチスレッドプログラミングの抱える問題点と、代替案をわかりやすく解説いたします。最近登場したConcurrent Revisionsも解説します。
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
・データベース的な観点でのソーシャルゲームの特徴 ・データモデル ・ソーシャルゲームに従来型RDBMSを使うべきか、流行りのNoSQLで行くべきか ・負荷対策 (アーキテクチャ面) ・負荷対策 (ツール面) ・インフラエンジニアのキャリアについて
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
理論から学ぶデータベース実践入門読書会スペシャルで発表した資料です。
What's hot
(20)
Assembly Definition あれやこれ
Assembly Definition あれやこれ
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
DDD sample code explained in Java
DDD sample code explained in Java
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Pythonによる黒魔術入門
Pythonによる黒魔術入門
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
UniRx完全に理解した
UniRx完全に理解した
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
できる!並列・並行プログラミング
できる!並列・並行プログラミング
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Viewers also liked
[Android]Static変数さんとactivityさん
[Android]Static変数さんとactivityさん
Hirokazu Fukami
Androidでstatic変数を使っていて、「あれ、いつの間にか値がnullになっている?」みたいなのに遭遇したこと、ありませんか? このスライドでは、そのような状況がどんな仕組みで発生するかと、開発時の再現方法を紹介します。
Android Hacks - 合宿 Activity
Android Hacks - 合宿 Activity
Masanori Ohkawara
「Android Hacks ―プロが教えるテクニック & ツール」(株式会社ブリリアントサービス 著)を教材とした勉強会でのまとめ資料です。 http://www.oreilly.co.jp/books/9784873114569/
DI(依存性注入)について
DI(依存性注入)について
Yui Ito
DI(依存性注入)について
Spring4Dの紹介
Spring4Dの紹介
Shinya Okano
Zend framework 03 - singleton factory data mapper caching logging
Zend framework 03 - singleton factory data mapper caching logging
Tricode (part of Dept)
Singleton & Factory, Dependency Injection, Data Mapper, Caching and Logging.
Iteratorパターン
Iteratorパターン
nekop
Java Drag Race Tuning
Java Drag Race Tuning
nekop
Javaパフォーマンスチューニング基礎
Javaパフォーマンスチューニング基礎
Hiroyuki Ohnaka
AngularJS勉強会「そもそもwebって」@ツクロア勉強会(2015.09.10)
AngularJS勉強会「そもそもwebって」@ツクロア勉強会(2015.09.10)
tomonari takahashi
「フロントエンドフレームワーク」 今回はデザイナーさんやディレクションの方向けに、その中身を「ボヤッと」理解してもらうのが目的のハンズオン形式の勉強会でした。
GCについて
GCについて
cactusman
Di入門
Di入門
Ryo Asai
GCが止まらない
GCが止まらない
Narihiro Nakamura
We wont pauseless gc.
自動定理証明の紹介
自動定理証明の紹介
Masahiro Sakai
2011-09-25 に行われた ProofSummit でのLTの発表資料。
AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化
Toshio Ehara
2015/01/24 13:00 JavaQne(じゃばきゅん) 2015 Fukuoka
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーション
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーション
Yosuke Onoue
D3.jsによるグラフィックスにAngularJSで アプリとしての肉付けをしてみる。実例を通じて、AngularJSアプリへの 非AngularJSライブラリの組み込み、 アプリのモジュール化方法を紹介。
型理論 なんて自分には関係ないと思っているあなたへ
型理論 なんて自分には関係ないと思っているあなたへ
Yusuke Matsushita
型理論の啓蒙
Androidにおけるテストに関して 2014/11
Androidにおけるテストに関して 2014/11
Hiroshi Hashimoto
OpenStack管理者入門 - OpenStack最新情報セミナー 2014年12月
OpenStack管理者入門 - OpenStack最新情報セミナー 2014年12月
VirtualTech Japan Inc.
講師:日本仮想化技術 宮原 日時:2014/12/03 タイトル:OpenStack管理者入門 概要: - OpenStack環境のおさらい - ユーザー、テナントの管理 - ネットワークの管理 - OSイメージの管理 - コンピュートノードの追加 - OpenStackの監視
Isucon makers casual talks
Isucon makers casual talks
Masahiro Nagano
証明プログラミング超入門
証明プログラミング超入門
Kyoko Kadowaki
20150124若手の会@明治大学中野キャンパス
Viewers also liked
(20)
[Android]Static変数さんとactivityさん
[Android]Static変数さんとactivityさん
Android Hacks - 合宿 Activity
Android Hacks - 合宿 Activity
DI(依存性注入)について
DI(依存性注入)について
Spring4Dの紹介
Spring4Dの紹介
Zend framework 03 - singleton factory data mapper caching logging
Zend framework 03 - singleton factory data mapper caching logging
Iteratorパターン
Iteratorパターン
Java Drag Race Tuning
Java Drag Race Tuning
Javaパフォーマンスチューニング基礎
Javaパフォーマンスチューニング基礎
AngularJS勉強会「そもそもwebって」@ツクロア勉強会(2015.09.10)
AngularJS勉強会「そもそもwebって」@ツクロア勉強会(2015.09.10)
GCについて
GCについて
Di入門
Di入門
GCが止まらない
GCが止まらない
自動定理証明の紹介
自動定理証明の紹介
AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーション
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーション
型理論 なんて自分には関係ないと思っているあなたへ
型理論 なんて自分には関係ないと思っているあなたへ
Androidにおけるテストに関して 2014/11
Androidにおけるテストに関して 2014/11
OpenStack管理者入門 - OpenStack最新情報セミナー 2014年12月
OpenStack管理者入門 - OpenStack最新情報セミナー 2014年12月
Isucon makers casual talks
Isucon makers casual talks
証明プログラミング超入門
証明プログラミング超入門
More from Tetsuya Kaneuchi
いま OS X アプリがアツい
いま OS X アプリがアツい
Tetsuya Kaneuchi
2014年6月21日開催のCocoa勉強会関西の発表資料です。
いまさら NSArray
いまさら NSArray
Tetsuya Kaneuchi
Cocoa 勉強会関西での発表資料です。
Dependency Injection FAQ
Dependency Injection FAQ
Tetsuya Kaneuchi
第51回Cocoa勉強会関西での発表資料です。「ワタシは Singleton がキライだ」の続きです。
Core Animation と View
Core Animation と View
Tetsuya Kaneuchi
第49回Cocoa勉強会関西の発表資料です。
Core Data の概要と NSIncrementalStore
Core Data の概要と NSIncrementalStore
Tetsuya Kaneuchi
第47回Cocoa勉強会関西(2012/12/01)の発表資料です。
WebViewでエラーページを表示する話
WebViewでエラーページを表示する話
Tetsuya Kaneuchi
2012/10/20 Cocoa勉強会関西での発表資料です。OS X の WebKit についてです。
MVCもやもや話
MVCもやもや話
Tetsuya Kaneuchi
iOS アプリ開発でのMVCについて。すべてを View Controller に書いてしまいがちなのを避けたい。
More from Tetsuya Kaneuchi
(7)
いま OS X アプリがアツい
いま OS X アプリがアツい
いまさら NSArray
いまさら NSArray
Dependency Injection FAQ
Dependency Injection FAQ
Core Animation と View
Core Animation と View
Core Data の概要と NSIncrementalStore
Core Data の概要と NSIncrementalStore
WebViewでエラーページを表示する話
WebViewでエラーページを表示する話
MVCもやもや話
MVCもやもや話
ワタシはSingletonがキライだ
1.
ワタシは Singletonがキライだ かねうちてつや / @kaniza 2013.6.1
第50回 Cocoa勉強会関西
2.
自己紹介 かねうちてつや @kaniza id:kaniza Cocoa勉強会関西2代目代表(2012年まで) 元Java屋さん(5年くらい前)
3.
Singleton おさらい GoF デザインパターンの1つ オブジェクトの単一性を保証する 頻繁に利用される [HogeManager
sharedInstance] とか
4.
よくある光景 エンジニア仲間とビールを飲む さらに飲む Singleton を dis
りはじめる まわりが困る
5.
なぜ困るのか 問題意識が共有できない 解決策が見えない ろれつが回っていない
6.
今日のゴール ろれつが回らなくなる前に 問題意識を共有して解決策を提案する
7.
前提となる価値観 単体テストしたい でもできてない グローバル変数は悪 ≒ 密結合は悪
8.
よい設計 疎結合 高凝集 適切な名前 変更時の影響範囲が予測可能かつ最小限
9.
Big Ball of
Mud 最も人気のあるソフトウェアアーキテクチ ャは Big Ball of Mud(大きな泥だんご)である
10.
設計のイメージ MainViewController SongStore SongManager DetailViewController ArtworkGenerator 結合度: 低
11.
現実の実装 MainViewController SongStore SongManager DetailViewController ArtworkGenerator 結合度: 高 Big Ball
of Mud
12.
Singletonの誘惑 設計上、離れた場所にある”コンポーネン ト”への参照が欲しくなったとき Managed Object Context
とか HogeManager とか クラスメソッドならどこからでも見える
13.
典型的な実装 + (id)sharedInstance { static HogeManager
*instance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instance = [[self alloc] init]; }); return instance; } このクラスメソッドでのみアクセスさせる
14.
これってグローバル変数
15.
単体テスト クラスごと、メソッドごとにテストコード を書いて自動化する それにはオブジェクトが「単体」で動く必 要がある ファイルシステムやネットワークは邪魔
16.
static 結合はテストの敵 MyClass FileManager ConnectionManager static static テストコードからはファイルや ネットワークアクセスを防げない Test Code
17.
dynamic 結合なら何とかなる MyClass MockFileManager MockConnManager dynamic dynamic テストコードからモック オブジェクトに差し替え可能 Test Code
18.
Singleton と static
結合 Singleton は static な結合を招く インスタンスの数は問題ではない アクセス方法を static に規定するのが悪 static 結合はテスト不能なクラスへの道
19.
Singleton は単体テストの敵
20.
キライになってきた?
21.
解決策
22.
DI: Dependency Injection 依存性注入 オブジェクトが依存先を解決しない 必要なものは与えられる。取りに行くな 取りに行くときにSingletonの誘惑が....
23.
DI コンテナ 専用のコンテナオブジェクトにコンポーネ ントの情報を登録 コンポーネントの依存関係を解決して生成 コンポーネントインスタンスの数も管理 (普通は1個でいいはず) 原則、コンポーネントの alloc
init は不要に
24.
DIコンテナの依存性解決 A B C Cが必要になったらA, B, Cの順に生成してくれる 依存 依存 依存
25.
オブジェクト生成は大仕事 あるオブジェクトを生成するのに必要なオ ブジェクトを えるのはけっこう大変 他のオブジェクトを生成するためだけに依 存関係が発生してしまうことも 大変なのでコンテナに任せてしまおう
26.
Cocoa 向け DI
コンテナ
27.
Typhoon Framework
28.
29.
30.
Typhoon Framework 元 Java
屋に親しみやすいデザイン コンポーネント情報を Block で書ける コンポーネント側をほぼいじらないっぽい TyphoonAssembly のサブクラスにコンポーネン ト情報を記述、TyphoonFactoryから取得
31.
Cocoa Singleton あるある NSManagedObjectContext AppDelegate
から取得? NSBundle mainBundle
32.
CoreDataBooks on Typhoon
33.
CoreDataBooks on Typhoon Apple
のサンプルコードを Typhoon ベースに変 換 AppDelegate の Core Data Stack コードを一掃 コンポーネントは他のコンポーネントへの 参照を注入される サブクラス化して細かいパラメータ初期化
34.
DIの気持ち悪さ 別名 IoC (Inversion
of Control: 制御の反転) 取りに行くのではなく与えられる 自分でやってた部分を他人に任せる 中身がよく見えなくなる
35.
IoC はオブジェクト指向の基本 フロー型からイベントドリブンへの流れは まさに「制御の反転」 viewDidLoad とか applicationDidFinishLaunching:とか だんだん気持ち良くなる
36.
DI コンテナの誤解 コンポーネントを取得するためにコンテナ へのアクセスが多発する コンテナへのアクセスはごく一部。基本 的に注入されたコンポーネントを使う 生成が必要ならファクトリオブジェクト をコンポーネントとして注入する
37.
DI コンテナの誤解 テストコードでもコンテナを使う ふつう使わない。テストコードから直接 モックオブジェクトなどを注入する initializer が長くなる 本当かも。でも自分で呼ばないし!
38.
まとめ Singleton は現代のグローバル変数。結合度が 高くテストしにくいコードを招く SingletonでやりたいことはTyphoon などの
DIコ ンテナを使えば美しく実現できる 疎結合でテストしやすいコードバンザイ