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
よいOSSを支える3C
Search
itosho
September 18, 2018
Programming
1
820
よいOSSを支える3C
ランサーズさんとの合同LT大会の発表資料です
itosho
September 18, 2018
Tweet
Share
More Decks by itosho
See All by itosho
インターネットサービスの育て方 / How to Grow and Scale Internet Services
itosho
0
57
打線組という個人サービスを Goで開発している話 / Indie Service Development by Go
itosho
1
160
Components Reconsidered
itosho
1
2.1k
打線組を支える技術 / The Technology Behind Dasengumi
itosho
0
43
組織をスケールさせるためのTech Vision / Connehito Tech Vision for Growing Our Team
itosho
2
610
生きのびるためのインディー開発 / Indie Development to Survive
itosho
0
43
Gopher道場アフターストーリー / Gopher Dojo After Story
itosho
0
140
3分で分かるConnehito Tech Vision / Connehito Tech Vision in 3 minutes
itosho
0
470
CakePHPで学ぶDIコンテナ / Learn a DI Container through CakePHP
itosho
1
1.4k
Other Decks in Programming
See All in Programming
Honoとフロントエンドの 型安全性について
yodaka
7
1.5k
Rubyと自由とAIと
yotii23
6
1.8k
Datadog Workflow Automation で圧倒的価値提供
showwin
1
290
DRFを少しずつ オニオンアーキテクチャに寄せていく DjangoCongress JP 2025
nealle
2
290
1年目の私に伝えたい!テストコードを怖がらなくなるためのヒント/Tips for not being afraid of test code
push_gawa
1
640
pylint custom ruleで始めるレビュー自動化
shogoujiie
0
160
Introduction to kotlinx.rpc
arawn
0
770
新宿駅構内を三人称視点で探索してみる
satoshi7190
2
120
sappoRo.R #12 初心者セッション
kosugitti
0
280
Datadog DBMでなにができる? JDDUG Meetup#7
nealle
0
150
JAWS Days 2025のインフラ
komakichi
1
130
Django NinjaによるAPI開発の効率化とリプレースの実践
kashewnuts
1
290
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Bash Introduction
62gerente
611
210k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Done Done
chrislema
182
16k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Embracing the Ebb and Flow
colly
84
4.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Transcript
よいOSSを支える3C Connehito Inc. @itosho 1
▪ 今日話すこと ・簡単に自己紹介(30〜60秒) ・名前だけでも覚えていただけると嬉しいです ・自作OSS「Easy Query」のご紹介(2〜3分) ・細かい使い方は説明しません(README参照) ・「Easy Query」の開発から学んだこと(3〜4分) ・本日のメイントピック
▪ 自己紹介 ・伊藤 翔 @itosho ・コネヒト株式会社 / Supership株式会社 ・会社ではサーバーサイドエンジニアやっています ・よく書く言語:
PHP / Ruby / Golang ・家ではインディーアプリ開発してます ・詳細はこちら: https://itosho.github.io/ ・Microservicesと野球とアイドルが好きです
自作OSS「Easy Query」のご紹介 4
▪ Easy Queryとは? ・CakePHPのBehavior Plugin ・PHP7.0+, Cake3.5+, MySQL5.6系 ・Bulk Insertが簡単に出来る
・今日は詳しく触れませんが(Bulk)Upsertも出来ます! ・https://github.com/itosho/easy-query ・もうすぐ1,000DL!(トリックあり)
▪ 使い方: Bulk Insert(Model)
▪ 使い方: Bulk Insert(Controller)
▪ 補足 ・bulk系のメソッドに分割処理は入れていません ・max_allowed_packetの上限にご注意ください ・Timestamp Behaviorとの併用をオススメ ・デフォルトでbeforeSave()メソッドを実行します ・PostgreSQL対応してくれる人募集中 ・https://github.com/itosho/easy-query/issues/10
「Easy Query」の開発から学んだこと 9
▪ つくってみて ・もっと使われるOSSをつくりたい! ・自己満で終わりたくない ・個人OSSを社内導入するためのガイドライン作成 ・http://tech.connehito.com/entry/2017/11/16/143923 ・人気のあるOSSを自分なりに研究 ・3つの共通点を抽出してみました
▪ よいOSSを支える3つの共通点 ①Convenience(便利) ②Clearness(明確さ) ③Continuty(継続性)
▪ Convenience: 便利 ・圧倒的に使うメリットがある ・問題が生む痛みよりも、問題を解決する労力のほうが煩わしい ・Easy Queryの場合 ・Cake標準のsaveMany()メソッドにはないパフォーマンス 【検証】tagsテーブルに100件登録 ※環境:
CentOS6, MySQL5.6, CPU 2core, Memory 2GB(Docker for Mac) ⇒saveMany()メソッド: 2.93秒 ⇒bulkInsert()メソッド: 2.01秒
▪ Clearness: 明確さ ・とにかくシュッと使える ・ドキュメントがしっかりしている ・言語やフレームワークの「郷」に従っている ・使い方がシンプルで直感的 ・Easy Queryの場合 ・bulkInsert()メソッドはCake標準のsaveMany()メソッドと同じI/F
▪ Continuity: 継続性 ・重要なのはスター数(だけ)ではない ・移り変わりの激しい世界 ・スター数が多くても半年後使えるかどうかは分からない ・継続して開発しているかどうかも同じくらい大切 ・Easy Queryの場合 ・Cake4系にも対応するぞ!(所信表明)
・標準でサポートして欲しい気持ちもある
まとめ 15
▪ まとめ ・OSSは使われてこそ輝く ・つくること自体にも価値はある ・しかし、誰かの問題を解決するための手段のひとつでありたい ・つくるときは3Cを意識するといいかもしれない ・OSSをつくるのは学びしかない ・普段の業務では身につかない知識が身につく ・これからもつくっていきたい!みなさんも是非!
ご清聴ありがとうございました 17