Suche senden
Hochladen
プログラミングの型や定石の紹介
•
Als PPTX, PDF herunterladen
•
0 gefällt mir
•
97 views
K
keitasudo1
Folgen
勉強会で使用した発表資料。
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 13
Jetzt herunterladen
Empfohlen
保守しやすいコードの反面教師 (アンチパターン) その1
保守しやすいコードの反面教師 (アンチパターン) その1
keitasudo1
.NETのTuple応用チャレンジ WCFとC++/CLI
.NETのTuple応用チャレンジ WCFとC++/CLI
keitasudo1
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
keitasudo1
Windowsアプリ開発の実務で使うUnitTest
Windowsアプリ開発の実務で使うUnitTest
keitasudo1
VSCodeへコントリビュート / Contribute to VSCode
VSCodeへコントリビュート / Contribute to VSCode
Yusuke Yamada
Windowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろう
keitasudo1
自社製品のバージョン管理 進化と問題解決の道のり
自社製品のバージョン管理 進化と問題解決の道のり
Study Group by SciencePark Corp.
推し技術書「ユースケース駆動開発実践ガイド」
推し技術書「ユースケース駆動開発実践ガイド」
keitasudo1
Empfohlen
保守しやすいコードの反面教師 (アンチパターン) その1
保守しやすいコードの反面教師 (アンチパターン) その1
keitasudo1
.NETのTuple応用チャレンジ WCFとC++/CLI
.NETのTuple応用チャレンジ WCFとC++/CLI
keitasudo1
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
keitasudo1
Windowsアプリ開発の実務で使うUnitTest
Windowsアプリ開発の実務で使うUnitTest
keitasudo1
VSCodeへコントリビュート / Contribute to VSCode
VSCodeへコントリビュート / Contribute to VSCode
Yusuke Yamada
Windowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろう
keitasudo1
自社製品のバージョン管理 進化と問題解決の道のり
自社製品のバージョン管理 進化と問題解決の道のり
Study Group by SciencePark Corp.
推し技術書「ユースケース駆動開発実践ガイド」
推し技術書「ユースケース駆動開発実践ガイド」
keitasudo1
WordPressプラグイン開発で学ぶ継続インテグレーション(CI)
WordPressプラグイン開発で学ぶ継続インテグレーション(CI)
Seto Takahiro
Microsoft Build 2021 前夜祭LT
Microsoft Build 2021 前夜祭LT
Yusuke Yamada
VS Code Day 2021 Recap
VS Code Day 2021 Recap
Yuki Ueda
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
Yusuke Yamada
Remote Development with Visual Studio Code & A clean dev env, working every ...
Remote Development with Visual Studio Code & A clean dev env, working every ...
Hiroyuki Ohnaka
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
Masataka Kono
C# で QnA Bot
C# で QnA Bot
Yoshitaka Seo
Vagrant + VirtualBox + Chef を使った環境構築方法について
Vagrant + VirtualBox + Chef を使った環境構築方法について
Shinya Kinoshita
Codeigniter3フレームアップデート
Codeigniter3フレームアップデート
tomohiro kitaura
PHP7で目指す 継続的インテグレーション開発
PHP7で目指す 継続的インテグレーション開発
優也 田島
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
Yuta Matsumura
Adaptive Cardのデザインツール
Adaptive Cardのデザインツール
Yoshitaka Seo
自動テストとJenkinsの活用 公開版
自動テストとJenkinsの活用 公開版
baroqueworksdev
kintone Cafe Tokyo vol.5/ultra fast recovery
kintone Cafe Tokyo vol.5/ultra fast recovery
Takahiro Kubo
駆け出しエンジニアが拡張機能を開発してみた!
駆け出しエンジニアが拡張機能を開発してみた!
takaguru
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
Study Group by SciencePark Corp.
VSのバージョンアップを促すアプリを作ってみた
VSのバージョンアップを促すアプリを作ってみた
浩史 橋本
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
Yuta Matsumura
KotlinJSって正直どうなん
KotlinJSって正直どうなん
Hiroshi Kikuchi
次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch
次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch
Honma Masashi
Weekend Androidのススメ
Weekend Androidのススメ
Suzuki Junko
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Masahiro Hidaka
Weitere ähnliche Inhalte
Was ist angesagt?
WordPressプラグイン開発で学ぶ継続インテグレーション(CI)
WordPressプラグイン開発で学ぶ継続インテグレーション(CI)
Seto Takahiro
Microsoft Build 2021 前夜祭LT
Microsoft Build 2021 前夜祭LT
Yusuke Yamada
VS Code Day 2021 Recap
VS Code Day 2021 Recap
Yuki Ueda
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
Yusuke Yamada
Remote Development with Visual Studio Code & A clean dev env, working every ...
Remote Development with Visual Studio Code & A clean dev env, working every ...
Hiroyuki Ohnaka
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
Masataka Kono
C# で QnA Bot
C# で QnA Bot
Yoshitaka Seo
Vagrant + VirtualBox + Chef を使った環境構築方法について
Vagrant + VirtualBox + Chef を使った環境構築方法について
Shinya Kinoshita
Codeigniter3フレームアップデート
Codeigniter3フレームアップデート
tomohiro kitaura
PHP7で目指す 継続的インテグレーション開発
PHP7で目指す 継続的インテグレーション開発
優也 田島
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
Yuta Matsumura
Adaptive Cardのデザインツール
Adaptive Cardのデザインツール
Yoshitaka Seo
自動テストとJenkinsの活用 公開版
自動テストとJenkinsの活用 公開版
baroqueworksdev
kintone Cafe Tokyo vol.5/ultra fast recovery
kintone Cafe Tokyo vol.5/ultra fast recovery
Takahiro Kubo
駆け出しエンジニアが拡張機能を開発してみた!
駆け出しエンジニアが拡張機能を開発してみた!
takaguru
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
Study Group by SciencePark Corp.
VSのバージョンアップを促すアプリを作ってみた
VSのバージョンアップを促すアプリを作ってみた
浩史 橋本
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
Yuta Matsumura
KotlinJSって正直どうなん
KotlinJSって正直どうなん
Hiroshi Kikuchi
次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch
次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch
Honma Masashi
Was ist angesagt?
(20)
WordPressプラグイン開発で学ぶ継続インテグレーション(CI)
WordPressプラグイン開発で学ぶ継続インテグレーション(CI)
Microsoft Build 2021 前夜祭LT
Microsoft Build 2021 前夜祭LT
VS Code Day 2021 Recap
VS Code Day 2021 Recap
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
Remote Development with Visual Studio Code & A clean dev env, working every ...
Remote Development with Visual Studio Code & A clean dev env, working every ...
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
C# で QnA Bot
C# で QnA Bot
Vagrant + VirtualBox + Chef を使った環境構築方法について
Vagrant + VirtualBox + Chef を使った環境構築方法について
Codeigniter3フレームアップデート
Codeigniter3フレームアップデート
PHP7で目指す 継続的インテグレーション開発
PHP7で目指す 継続的インテグレーション開発
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
Adaptive Cardのデザインツール
Adaptive Cardのデザインツール
自動テストとJenkinsの活用 公開版
自動テストとJenkinsの活用 公開版
kintone Cafe Tokyo vol.5/ultra fast recovery
kintone Cafe Tokyo vol.5/ultra fast recovery
駆け出しエンジニアが拡張機能を開発してみた!
駆け出しエンジニアが拡張機能を開発してみた!
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
VSのバージョンアップを促すアプリを作ってみた
VSのバージョンアップを促すアプリを作ってみた
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
KotlinJSって正直どうなん
KotlinJSって正直どうなん
次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch
次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch
Ähnlich wie プログラミングの型や定石の紹介
Weekend Androidのススメ
Weekend Androidのススメ
Suzuki Junko
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Masahiro Hidaka
ディープに作る固有表現認識
ディープに作る固有表現認識
Hiroki Nakayama
PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」
Preferred Networks
【B 5】x pages extension library じゃぱ〜〜ん!コミュニティ動向2014ば〜〜ん!
【B 5】x pages extension library じゃぱ〜〜ん!コミュニティ動向2014ば〜〜ん!
Masahiko Sato
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
Teruo Adachi
カーネル読書会の作り方@ライブドア
カーネル読書会の作り方@ライブドア
Hiro Yoshioka
DevOpsって何?
DevOpsって何?
Gosuke Miyashita
概観テキストマイニング
概観テキストマイニング
tod esking
会話型UI事始め
会話型UI事始め
DeNA
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
Study Group by SciencePark Corp.
ビルド職人頼みの自社製品リリースを、CI可能にした取り組み
ビルド職人頼みの自社製品リリースを、CI可能にした取り組み
Study Group by SciencePark Corp.
Hour of-code-2016冬-シンポジウム
Hour of-code-2016冬-シンポジウム
Yuta Tonegawa
Letsgo developer 2012 Continuous Delivery
Letsgo developer 2012 Continuous Delivery
Nobuhiro Sue
ソースコードを読んでみよう
ソースコードを読んでみよう
Shun Tsunoda
フローデバッグツール「Flow Debugger」
フローデバッグツール「Flow Debugger」
Atsushi Kojo
SPI Japan2013 アジャイルチュートリアル
SPI Japan2013 アジャイルチュートリアル
Naoya Maekawa
Sj16 組込アジャイル徹底分析
Sj16 組込アジャイル徹底分析
akihiro tanaka
インターフェイスの世界の言語
インターフェイスの世界の言語
Tomohiro Suzuki
社内ソフトスキルを考える
社内ソフトスキルを考える
infinite_loop
Ähnlich wie プログラミングの型や定石の紹介
(20)
Weekend Androidのススメ
Weekend Androidのススメ
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
ディープに作る固有表現認識
ディープに作る固有表現認識
PFIセミナー 2013/02/28 「プログラミング言語の今」
PFIセミナー 2013/02/28 「プログラミング言語の今」
【B 5】x pages extension library じゃぱ〜〜ん!コミュニティ動向2014ば〜〜ん!
【B 5】x pages extension library じゃぱ〜〜ん!コミュニティ動向2014ば〜〜ん!
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
カーネル読書会の作り方@ライブドア
カーネル読書会の作り方@ライブドア
DevOpsって何?
DevOpsって何?
概観テキストマイニング
概観テキストマイニング
会話型UI事始め
会話型UI事始め
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
ビルド職人頼みの自社製品リリースを、CI可能にした取り組み
ビルド職人頼みの自社製品リリースを、CI可能にした取り組み
Hour of-code-2016冬-シンポジウム
Hour of-code-2016冬-シンポジウム
Letsgo developer 2012 Continuous Delivery
Letsgo developer 2012 Continuous Delivery
ソースコードを読んでみよう
ソースコードを読んでみよう
フローデバッグツール「Flow Debugger」
フローデバッグツール「Flow Debugger」
SPI Japan2013 アジャイルチュートリアル
SPI Japan2013 アジャイルチュートリアル
Sj16 組込アジャイル徹底分析
Sj16 組込アジャイル徹底分析
インターフェイスの世界の言語
インターフェイスの世界の言語
社内ソフトスキルを考える
社内ソフトスキルを考える
Kürzlich hochgeladen
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
sugiuralab
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
sugiuralab
Kürzlich hochgeladen
(8)
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
プログラミングの型や定石の紹介
1.
プログラミングの型や定石の 紹介 2021/7/14 須藤
2.
自己紹介 ID:suusanex( connpass・Twitter・GitHub共通)
名前:須藤圭太 サイエンスパーク株式会社という独立系ソフトウェアベンダーに所属 4年ほど受託開発で、上流から下流まで全部を回す ここ6年ほどは、自社製品開発を担当 Windowsアプリ開発のネタが多い
3.
概要 プログラミングにも型や定石があり、知っておくとしくじりにくいし、会話も しやすい 天才プログラマ寄りの人は感覚的にやってる
凡人が天才に近づきやすくするための武器が型や定石 型や定石を広く浅く紹介し、どれを勉強するかの指標にする 参考書籍も触れるが、原則として「読んで役に立ったもの」を紹介する。定番 の名著がどれかなどはググれ 内部設計の型→コーディングの型の順で紹介する
4.
内部設計の型 変更に強くし、仕様変更・追加に対応しやすくするための型 デザインパターン
クリーンアーキテクチャ ユースケース駆動設計 ドメインモデリング(ドメイン駆動設計)
5.
デザインパターン 今日は広く浅く紹介だが、これだけは必修に近い なぜか
デザインパターンが分かれば、オブジェクト指向が分かるから オブジェクト指向:あまりに広く有用な概念。後述のドメインモデリングなど もこの派生。とっつきづらい →この中でも特に「カプセル化」を捉えた、デザインパターンから入ろう
6.
デザインパターン(2) クラス構成レベルでの、よくあるコードの書き方の定石集 定石なので、素人は従っといて間違いは無い
知っていると、設計の会話が「XXXパターンっぽく」のようにやりやすくなる 特にこの辺は特徴的で、重要だと思う Strategy Abstract Factory Observer 参考書籍 Head Firstデザインパターン ノリが軽くて薄めで読みやすい オブジェクト指向のこころ 内容が濃く厚い。読書慣れしてる人向け
7.
クリーンアーキテクチャ デザインパターンよりも少し抽象的な概念 「こういう原則で設計するとミスらない」という原則集
SRP:単一責任の原則 クラスは複数のアクターに対して責任を負わない DIP:依存関係逆転の原則 下を変えたときに、上に影響しないようにする などなど 参考書籍: Clean Architecture 出典:The Clean Architecture
8.
ユースケース駆動設計 ドメインモデリング(ドメイン駆動設計) まずユーザー・ビジネスより始めよ 要求が変化するとき、変化するのはユーザーやビジネスだから
「ユーザーがどんな使い方をするか(ユースケース)」を網羅し、そこから内 部設計まで漏れ抜けなくつなげていく ユースケースの変更があったときに、ソースコードとの対応が取れる 「対象のビジネス領域(ドメイン)にどんな用語があり、どういう関係にある か」を網羅し、ソースコードと対応づけておく ビジネス領域の要求変更があったときに、ソースコードとの対応が取れる 参考書籍 ユースケース駆動開発実践ガイド
9.
コーディングの型 結合度を下げて、テストをしやすくするための型 インターフェースプログラミング
Dependency Injection(DI) テスト駆動
10.
インターフェースプログラミング 実装ではなく、インターフェースに対してプログラムせよ インターフェースとは、相手と握った約束事
約束を破らない限りは、他は自由にして良い
11.
Dependency Injection(DI) Interfaceに対する実体(インスタンス)を、クラスの外から与える技法
単純にはコーディングの技法であり、次のようにする さらにDIフレームワークと組み合わせるのが基本(.NET Coreでは標準) interfaceBのインスタンスをDIフレームワークが生成して、コンストラクタへ 与えてくれる(Factoryパターンの自動生成) public ClassA(InterfaceB interfaceB) { m_InterfaceB = interfaceB; } private InterfaceB m_InterfaceB;
12.
テスト駆動 表面的には、「先にテストを 書いてから、実装する」こと 一つの本質は、「テストでき る内部設計にしておく」とい うこと
これをやろうとすると、自然 とインターフェースを使ってDI するような構造になる(なら ざるを得ない)
13.
まとめ 型は多々あるが、目的は「変更に強いソフトを作る」に集束する どれから入っても、学ぶごとに目的の理解が深まるはず
とっつきやすそうなところから触ってみて、変更に強いソフトを作れるように なろう!
Jetzt herunterladen