Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
システム内製の原則 / principles-of-in-house-system-deve...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
tunemage
February 05, 2020
Programming
2.3k
3
Share
システム内製の原則 / principles-of-in-house-system-development
ラクス様主催の勉強会のLT枠で発表させていただきました(
https://rakus.connpass.com/event/161744/
)
tunemage
February 05, 2020
More Decks by tunemage
See All by tunemage
自社サービス開発企業のサポート業務改善 / Support department improvements for SaaS company
tunemage
1
130
IPO準備プロジェクトにエンジニアとして参加した話 / IPO preparation project
tunemage
1
180
『データモデリングでドメインを駆動する』で繋がる体験 / Drive domain with data modeling
tunemage
0
250
Vueによる自作簡易DSL / Simple DSL with Vue
tunemage
1
240
手離れの良いExcel VBA / non-personalized-excel-vba
tunemage
1
150
本を年100冊読むためにしている事 / my-way-to-read-100-books-a-year
tunemage
1
820
システム監査についての学びと今後の課題 / learning-about-system-auditing
tunemage
1
1.7k
業務システムの概要とその選択肢_公開用_.pdf/Overview of business system
tunemage
2
1.7k
Other Decks in Programming
See All in Programming
ソースコード→AST→オペコード、の旅を覗いてみる
o0h
PRO
1
140
Agentic AI & UI: Arcitecture, HITL, Emerging Standards
manfredsteyer
PRO
0
130
実践ハーネスエンジニアリング:ステアリングループを実例から読み解く / Practical Harness Engineering: Understanding Steering Loops Through Real-World Examples
nrslib
6
6.1k
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
250
Hive Metastoreを通して学ぶIceberg REST Catalog ― 仕様から実装まで
okumin
0
240
1人1案件のプロダクトエンジニア時代に、"プロセス監督"としてチャレンジしたこと
non0113
0
160
ReactとSvelteのその先、Ripple-TS / Beyond React and Svelte: Ripple-TS
ssssota
2
520
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
140
Kubernetesを使わない環境にもCloud Nativeなデプロイを実現する / Enabling Cloud Native deployments without the complexity of Kubernetes
linyows
3
440
次世代リンターで探る、tsgo 時代における型認識カスタムルールの現実解
ytakahashii
1
740
~ 秘伝のタレ化した『神スプシ』と戦う ~ 関数型パラダイムで壊れない仕組みへ
h0r15h0
1
120
My daily life on Ruby
a_matsuda
3
430
Featured
See All Featured
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
300
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.4k
Optimizing for Happiness
mojombo
378
71k
A designer walks into a library…
pauljervisheath
211
24k
Writing Fast Ruby
sferik
630
63k
Designing for Timeless Needs
cassininazir
1
220
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
10k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Transcript
システム内製の原則 @tunemage
自己紹介 • つねまげ(@tunemage) • 現職(1年半) • 製造業の社内SE的なポジション(研究開発も少し) • 社内基幹システムの開発・運用がメイン •
前職(6年) • ERPパッケージ開発 • それ以前 • Webやスマホアプリなど色々
•昨年、スクラッチ開発の社内基幹システムをロー ンチしました •本日は開発の中で意識した「原則」についてお話 します
開発の流れ • 4〜6月(アーキテクチャ選定・基本設計・参照実装) • 2人体制(もう1人のメンバーがフロントエンドに明るくて助かりました) • 画面設計・DB設計・ライブラリの検証・クラウド環境の選定・最初の2画 面実装 • 7〜9月(機能実装)
• 1.2人体制 • 4画面 ・共通コンポーネント・CI • 10〜12月(追加開発) • 1人体制 • 追加2画面・細かな要望&不具合対応・ユニットテスト導入
構成 • 機能 • 画面✕8 • 帳票✕4 • CSV出力✕2 •
システム構成 • サーバーサイド • Kotlin (一部Java) • Spring Boot • クライアントサイド • TypeScript(結構JavaScript) • NuxtJS • プラットフォーム • GAE(一部Heroku)
•比較的少ないリソースの中で、曲がりなりにもリ リースにまで辿り着けた •その中で大事にした原則は2つ
原則①YAGNI( You ain't gonna need it ) • 手を抜ける箇所は絶妙に手を抜く •
変更コストの高い部分に集中 • ただし、単なる付け焼き刃はNG
原則②機構と方針の分離 「計算機科学における設計原則の1つ。機構(操作の認可と資源配分 を制御するシステム実装部分)は、どの操作を認可するかやどの資 源を割り当てるかといった決定を行う際の方針を表すべきでない (あるいは過度に制限すべきでない)という考え方である。 (Wikipedia)」 • よく分からんので具体例を(次ページ)
実際の例)簡易帳票エンジンの実装 見積データ 帳票エンジン Excel テンプレート 方針 機構 出力帳票
原則②機構と方針の分離 • 機構(エンジン)側は方針(条件分岐・レイアウト等)を意識し なくて良い • ハードコーディングによるif文地獄に陥らない • メンテナンス性向上 • 帳票エンジンの他にも、部署ごとに異なる作業工程の定義や権限
まわりでも応用しています
原則②機構と方針の分離(その他の例) 機構 方針 カードキー カードリーダー・通信プロトコル セキュリティサーバの権限データ Maven・npm等 実行エンジン pom.xml、package.json 会計システム
仕訳エンジン 勘定科目マスタ 承認申請機能 画面コンポーネント 権限マスタのデータ ワークフロー ワークフローエンジン ワークフローの定義
まとめ • YAGNIと称した付け焼き刃はNG • 可変ポイントを見極めて適切な役割分担を促す設計が重要 • 業務ドメインと技術ドメインの全体感を見る • まだまだ未対応の問題は山ほどあるので楽しみです
参考文献 • マルチパラダイムデザイン(ジェームズ・O. コプリン) • 機構と方針の分離(Wikipedia) https://ja.wikipedia.org/wiki/%E6%A9%9F%E6%A7%8B%E3%8 1%A8%E6%96%B9%E9%87%9D%E3%81%AE%E5%88%86%E9 %9B%A2