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
EN
Uploaded by
Yuta Matsumura
PDF, PPTX
4,703 views
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
https://alterbooth.connpass.com/event/103125/
Technology
◦
Read more
3
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 20
2
/ 20
3
/ 20
4
/ 20
5
/ 20
6
/ 20
7
/ 20
8
/ 20
9
/ 20
10
/ 20
11
/ 20
12
/ 20
13
/ 20
14
/ 20
15
/ 20
16
/ 20
17
/ 20
18
/ 20
19
/ 20
20
/ 20
More Related Content
PDF
JaSST Tokyo 2022 アジャイルソフトウェア開発への統計的品質管理の応用
by
Akinori SAKATA
PDF
ドメイン駆動設計に15年取り組んでわかったこと
by
増田 亨
PDF
マイクロにしすぎた結果がこれだよ!
by
mosa siru
PDF
インフラエンジニアの綺麗で優しい手順書の書き方
by
Shohei Koyama
PDF
ソフトウェアテストの歴史と近年の動向
by
Keizo Tatsumi
PDF
Jenkins 再入門
by
Jumpei Miyata
PDF
フロー効率性とリソース効率性について #xpjug
by
Itsuki Kuroda
PDF
JVMのGCアルゴリズムとチューニング
by
佑哉 廣岡
JaSST Tokyo 2022 アジャイルソフトウェア開発への統計的品質管理の応用
by
Akinori SAKATA
ドメイン駆動設計に15年取り組んでわかったこと
by
増田 亨
マイクロにしすぎた結果がこれだよ!
by
mosa siru
インフラエンジニアの綺麗で優しい手順書の書き方
by
Shohei Koyama
ソフトウェアテストの歴史と近年の動向
by
Keizo Tatsumi
Jenkins 再入門
by
Jumpei Miyata
フロー効率性とリソース効率性について #xpjug
by
Itsuki Kuroda
JVMのGCアルゴリズムとチューニング
by
佑哉 廣岡
What's hot
PDF
Kubernetesによる機械学習基盤への挑戦
by
Preferred Networks
PDF
なぜ「マイクロサービス“化”」が必要なのか
by
Yusuke Suzuki
PDF
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
PDF
大規模レガシー環境に立ち向かう有機的な開発フォーメーション #devsumi #devsumic
by
Itsuki Kuroda
PDF
Dockerfile を書くためのベストプラクティス解説編
by
Masahito Zembutsu
PDF
webエンジニアのためのはじめてのredis
by
nasa9084
PDF
ドメイン駆動で開発する ラフスケッチから実装まで
by
増田 亨
PDF
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
PPTX
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
by
Atsushi Nakamura
PDF
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
by
Masahito Zembutsu
PPTX
ソフトウェアの品質保証の基礎とこれから
by
Yasuharu Nishi
PDF
開発速度が速い #とは(LayerX社内資料)
by
mosa siru
PDF
リーン開発の本質 公開用
by
ESM SEC
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
by
Masahito Zembutsu
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
by
NTT DATA OSS Professional Services
PDF
フロー効率性とリソース効率性、再入門 #devlove #devkan
by
Itsuki Kuroda
PPTX
クラシフィケーション・ツリー法入門
by
H Iseri
PDF
Dockerfileを改善するためのBest Practice 2019年版
by
Masahito Zembutsu
PPTX
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
by
NTT DATA Technology & Innovation
Kubernetesによる機械学習基盤への挑戦
by
Preferred Networks
なぜ「マイクロサービス“化”」が必要なのか
by
Yusuke Suzuki
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
大規模レガシー環境に立ち向かう有機的な開発フォーメーション #devsumi #devsumic
by
Itsuki Kuroda
Dockerfile を書くためのベストプラクティス解説編
by
Masahito Zembutsu
webエンジニアのためのはじめてのredis
by
nasa9084
ドメイン駆動で開発する ラフスケッチから実装まで
by
増田 亨
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
by
Atsushi Nakamura
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
by
Masahito Zembutsu
ソフトウェアの品質保証の基礎とこれから
by
Yasuharu Nishi
開発速度が速い #とは(LayerX社内資料)
by
mosa siru
リーン開発の本質 公開用
by
ESM SEC
コンテナの作り方「Dockerは裏方で何をしているのか?」
by
Masahito Zembutsu
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
by
NTT DATA OSS Professional Services
フロー効率性とリソース効率性、再入門 #devlove #devkan
by
Itsuki Kuroda
クラシフィケーション・ツリー法入門
by
H Iseri
Dockerfileを改善するためのBest Practice 2019年版
by
Masahito Zembutsu
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
by
NTT DATA Technology & Innovation
Similar to イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
PDF
Enterprise agile dev ops-and-xr-techonology-adoption-for-fintech-20180324
by
Shotaro Suzuki
PPTX
市場動向並びに弊社製品の今後の展望について
by
Ken Azuma
PDF
結果的に組織がAgileな状態であること #agile #scrum #leanstartup
by
Itsuki Kuroda
PDF
【Agile Conference tokyo 2011】 継続的フィードバック
by
智治 長沢
PDF
市場動向並びに弊社製品の今後の展望について
by
Ken Azuma
PDF
【XDev 2011】 B-4 明日を支えるITに求められる開発アジリティ~ 継続的フィードバックで見る最新開発環境の全貌
by
智治 長沢
PDF
Introduction to application architecture on asp.net mvc
by
Atsushi Fukui
PPTX
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
by
慎一 古賀
PDF
地図を捨ててコンパスを頼りに進め
by
Rakuten Group, Inc.
PDF
地図を捨ててコンパスを頼りに進め
by
Dai FUJIHARA
PDF
企業組織論としてのオープンイノベーション
by
Osaka University
PPTX
Rx t study130216
by
Noriaki Koeda
PDF
第1回SIA研究会(例会)プレゼン資料
by
Tae Yoshida
PPTX
Kspin20121201 kobayashi
by
Osamu Kobayashi
PPTX
20100324 勉強会資料(ドメイン駆動)
by
Masayuki Kanou
PDF
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
by
智治 長沢
PDF
Agile meets BABOK
by
Kazuyuki Miyake
PPTX
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践
by
慎一 古賀
PPTX
Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4
by
慎一 古賀
PPTX
Relationship betweenddd and mvc
by
Takao Tetsuro
Enterprise agile dev ops-and-xr-techonology-adoption-for-fintech-20180324
by
Shotaro Suzuki
市場動向並びに弊社製品の今後の展望について
by
Ken Azuma
結果的に組織がAgileな状態であること #agile #scrum #leanstartup
by
Itsuki Kuroda
【Agile Conference tokyo 2011】 継続的フィードバック
by
智治 長沢
市場動向並びに弊社製品の今後の展望について
by
Ken Azuma
【XDev 2011】 B-4 明日を支えるITに求められる開発アジリティ~ 継続的フィードバックで見る最新開発環境の全貌
by
智治 長沢
Introduction to application architecture on asp.net mvc
by
Atsushi Fukui
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
by
慎一 古賀
地図を捨ててコンパスを頼りに進め
by
Rakuten Group, Inc.
地図を捨ててコンパスを頼りに進め
by
Dai FUJIHARA
企業組織論としてのオープンイノベーション
by
Osaka University
Rx t study130216
by
Noriaki Koeda
第1回SIA研究会(例会)プレゼン資料
by
Tae Yoshida
Kspin20121201 kobayashi
by
Osamu Kobayashi
20100324 勉強会資料(ドメイン駆動)
by
Masayuki Kanou
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
by
智治 長沢
Agile meets BABOK
by
Kazuyuki Miyake
Team Foundation Server / Visual Studio Online を利用したチーム開発の実践
by
慎一 古賀
Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4
by
慎一 古賀
Relationship betweenddd and mvc
by
Takao Tetsuro
More from Yuta Matsumura
PDF
「自分のとこでは動くけど…」を無くす devcontainer
by
Yuta Matsumura
PDF
チーム開発で徐々にコード品質をあげていく取り組み
by
Yuta Matsumura
PDF
.NETのサポートポリシーのおさらい #csharptokyo
by
Yuta Matsumura
PDF
App Modernization for .NET
by
Yuta Matsumura
PDF
分かったうえではじめるCI/CD
by
Yuta Matsumura
PDF
VSCodeで始めるAzure Static Web Apps開発
by
Yuta Matsumura
PDF
いつでもどこでも .NET
by
Yuta Matsumura
PDF
.NET アプリを改善して実践する継続的インテグレーション
by
Yuta Matsumura
PDF
マイクロサービス開発が捗る Project Tye
by
Yuta Matsumura
PDF
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
by
Yuta Matsumura
PDF
Azure の ID 管理サービスに LINE ログインを組み込もう
by
Yuta Matsumura
PDF
Blazor Server テンプレート解説
by
Yuta Matsumura
PDF
The Twelve-Factor (A|M)pp with C#
by
Yuta Matsumura
PDF
改めて C# でできることを振り返る
by
Yuta Matsumura
PDF
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
by
Yuta Matsumura
PDF
忙しい人のための .NET Conf 2019 まとめ
by
Yuta Matsumura
PDF
.NET Conf の歩き方
by
Yuta Matsumura
PDF
PHPカンファレンス福岡2019 閉会式
by
Yuta Matsumura
PDF
PHPカンファレンス福岡2019 開会式
by
Yuta Matsumura
PDF
これから始める Bot Builder 開発のコツと舞台裏
by
Yuta Matsumura
「自分のとこでは動くけど…」を無くす devcontainer
by
Yuta Matsumura
チーム開発で徐々にコード品質をあげていく取り組み
by
Yuta Matsumura
.NETのサポートポリシーのおさらい #csharptokyo
by
Yuta Matsumura
App Modernization for .NET
by
Yuta Matsumura
分かったうえではじめるCI/CD
by
Yuta Matsumura
VSCodeで始めるAzure Static Web Apps開発
by
Yuta Matsumura
いつでもどこでも .NET
by
Yuta Matsumura
.NET アプリを改善して実践する継続的インテグレーション
by
Yuta Matsumura
マイクロサービス開発が捗る Project Tye
by
Yuta Matsumura
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
by
Yuta Matsumura
Azure の ID 管理サービスに LINE ログインを組み込もう
by
Yuta Matsumura
Blazor Server テンプレート解説
by
Yuta Matsumura
The Twelve-Factor (A|M)pp with C#
by
Yuta Matsumura
改めて C# でできることを振り返る
by
Yuta Matsumura
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
by
Yuta Matsumura
忙しい人のための .NET Conf 2019 まとめ
by
Yuta Matsumura
.NET Conf の歩き方
by
Yuta Matsumura
PHPカンファレンス福岡2019 閉会式
by
Yuta Matsumura
PHPカンファレンス福岡2019 開会式
by
Yuta Matsumura
これから始める Bot Builder 開発のコツと舞台裏
by
Yuta Matsumura
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
1.
イケてる技術で品質を担保しつつ スピード感のある開発を実現する冴えたやり方 2018/10/23 AADojo #0 株式会社オルターブース
松村 優大
2.
松村 優大 (MLBお兄さん) 株式会社オルターブース 業務執行役員/CTA C#/PHP/Azure/AWS 31歳/島根出身/娘1人
3.
開発において大事にしていること • テストできる状態(Testable)を保つ・網羅する • 今日書いたコードは今日テストを書く •
開発初期段階からCIを回す(Continuous Integration)
4.
なぜテストが必要か(再確認) • エラーを見つける • 想定内のエラー:想定通りのエラー処理であることを確認 •
想定外のエラー:リリース前にエラーに気付くため • 変更に伴う“デグレ”を生まない・残さない
5.
Testableなコードとは • 処理(関数)の目的が明確かつ粒度が小さい • 途中処理の差し替えが容易である(モック) •
外部リソースの挙動の差し替えが容易である(モック) データベース SaaS (API) ストレージ
6.
.NET Coreのバージョンとサポート計画 バージョン レベル
リリース日 サポート終了日 1.0 LTS 2016/06/27 2019/06/27 1.1 LTS 2016/11/16 2019/06/27 2.0 Current 2017/08/14 2018/10/01 2.1 LTS 2018/05/30 At least three years from LTS declaration (August 21, 2018) 2.2-preview3 Preview 2018/09/12 - ※2018/10/23現在
7.
Data Store Repository Controller View Model Service/Domain Repository Model Repository Model Data Store Model Controller View Model
Model
8.
ユースケースに従って ServiceやDomainを 構成する CRUDの操作のみ データ保存の振る舞い
9.
public interface IRepository<T>
where T : class { IEnumerable<T> GetAll(); //一覧 T Find(int id); //取得 T Create(T entity); //作成 void Update(T entity); //更新 void Delete(T entity); //削除 } public interface IUserRepository : IRepository<User> { }
10.
public class UserRepository
: IUserRepository { private readonly DbContext db; public UserRepository(DbContext db) => this.db = db; public IEnumerable<User> GetAll() => ...; public User Find(int id) => ...; public User Create(User entity) => ...; db.SaveChanges(); public void Update(User entity) => ...; db.SaveChanges(); public void Delete(User entity) => ...; db.SaveChanges(); DbContext = データベース = 外部リソース 外部リソースを直接操作する ため、モックを作れない (=テストしづらい)
11.
public class UsersController
: Controller { private readonly IUserRepository userRepository; public UsersController(IUserRepository userRepository) => this.userRepository = userRepository; public IActionResult Create(User user) { userRepository.Create(user); return Ok(); } テスト時はモックのリポジトリを差し込む 処理のなかで外部リソースが現れるため 単体テストを行うことができない (擬似的な保存の振舞いができない)
12.
ユースケースに従って ServiceやDomainを 構成する CRUDの操作のみ データ保存の振る舞い データストアを隠蔽 単体テストが可能
13.
public interface IUnitOfWork
{ int SaveChanges(); //DbContext.SaveChanges(既存の保存処理) bool SaveEntities(); //実際に呼び出される保存処理の定義 } public class MyContext : DbContext, IUnitOfWork { public DbSet<User> Users { get; set; } public bool SaveEntities() => 0 < this.SaveChanges(); //public bool SaveEntities() => true; //モックの書き方 } DbContextに新しい保存処理を実装 (テストではモック化し保存の振舞いだけ)
14.
public class UserRepository
: IUserRepository { private readonly DbContext db; public IUnitOfWork UnitOfWork => db; public UserRepository(DbContext db) => this.db = db; --- public IActionResult Create(User user) { userRepository.Create(user); userRepository.UnitOfWork.SaveEntities(); return Ok(); } リポジトリから保存処理を切り離す 処理のなかで外部リソースが隠蔽されたため 単体テストを行うことが可能
15.
アプリケーションアーキテクチャを どう学ぶか
16.
アーキテクチャを学ぶうえで良い資料
18.
実行環境をどうするか PaaS? コンテナー? サーバーレス? アプリケーション構成に応じて適した環境を選ぶべき →言語(ランタイム)、規模、スケール、実行頻度、etc →Kubernetesを使うかどうかは規模によりけり
19.
Appendix • https://www.microsoft.com/net/learn/dotnet/architecture-guides • https://docs.microsoft.com/ja-jp/dotnet/standard/modern-web-apps-azure-architecture/ •
https://github.com/dotnet-architecture/eShopOnWeb • https://github.com/dotnet-architecture/eShopOnContainers • https://12factor.net/ja/
20.
ご清聴ありがとうございました。
Download