SlideShare a Scribd company logo
1 of 78
Download to read offline
#ccc_a1
ツール比較しながら語る
O/RマッパーとDBマイグレーション
JJUG-CCC 2018 Fall
日本Javaユーザーズグループ
クロスコミュニティカンファレンス
ベルサール西新宿 2018-12-15
Y.Watanabe
#ccc_a1
(ストップウォッチ スタート確認)
#ccc_a1
Who?
● 渡辺 祐
● (株)ビズリーチ
● SREグループ
○ Site Reliability Engeneering
● twitter: @nabedge
● nabedge@gmail.com
3
#ccc_a1
Software Design 2019 / 1月号に寄稿しました
第2特集
リリースモデルの変更にどう対処する?
Javaのバージョン問題に前向きに
取り組む方法
第3章
Javaをバージョンアップしやすくする
アイデア
進化に臆さず,そのメリットを
享受するために
4
#ccc_a1
今日、伝えたいこと
● アプリケーションの寿命 < DBの寿命
● 流れの速さのギャップに、アプリケーションのテク
ノロジーで、うまいこと付き合う方法ってなんだろ
う?
5
#ccc_a1
さっそくですがアンケート
● MyBatis(iBatis)
● SpringのJdbcTemplate
● Hibernate
● QueryDSL
● jOOQ
● Doma
● DBFlute
● S2JDBC
● Flyway
過去1年であなたが実際に仕事で使ったものは?
6
#ccc_a1
ただし!
● 銀の弾丸は無い
● エンジニアが現場の状況にあわせて
ツールをチョイスして運用するしかない
7
#ccc_a1
もくじ1
1. タイプセーフなO/Rマッパーの特徴
2. DBマイグレーションツールとは?
3. Flywayとは?
8
#ccc_a1
もくじ2
4. 開発のスタート地点は?
CREATE/ALTER文? ER図? テーブル定義書.xls ?
JPAのエンティティクラス.java @Table, @Column
5. 開発用DBはどこにある?
ローカルPC? 共有DBサーバ?
9
#ccc_a1
もくじ3
6. O/Rマッパーのソースコード自動生成を
どのタイミングでやるか
7. 自動生成したコードをgitに入れるか
8. 自動生成したコードとドメインオブジェ
クトのコードを分けるべきか
10
#ccc_a1
もくじ4
9. テストデータをどうやって投入するか
10. 実際に実行されるSQLを見たい
11. RDBMSの独自関数を使いたい
12. テーブル定義書をどう作るか
11
#ccc_a1
もくじ5
13. 複数のO/Rマッパーを同じプロジェクトで使う
or乗り換えるためのヒント
12
#ccc_a1
(盛り込み過ぎ...)
13
#ccc_a1
1. モダンなO/Rマッパーの特徴
14
#ccc_a1
● Hibernate 2001〜
● Spring-JDBC(JdbcTemplate) 2001〜
● iBatis/MyBatis 2005〜
● S2JDBC 2008〜
● QueryDSL 2008〜
● DBFlute 2008〜
● jOOQ 2010〜
テーブル作成済みのDBサー
バからメタデータを読み取っ
てO/Rマッピング用Javaソー
スを自動生成する方式
古い順に並べて超ざっくり分類
SQLを手で埋め込む方式
素人にはおすすめできない(*1,2)
15
#ccc_a1
SpringのJdbcTemplate
List<Book> books = jdbcTemplate.query(
“SELECT ISBN, TITLE FROM BOOKS”
+ “ WHERE ISBN = ? ”,
new Object[]{“hoge”}, // “?”のところに入れたい引数
new BeanPropertyRowMapper(Book.class)
);
16
#ccc_a1
MyBatis
<!-- xmlファイル -->
<select id="selectBook" parameterType=”String”
resultType="Book">
<![CDATA[
SELECT ISBN, TITLE FROM BOOKS
WHERE ISBN = #{isbn}
]]></select>
// Javaコード
List<Book> books = bookRepository.select(“hoge”);
17
#ccc_a1
いま紹介したのは旧来型O/Rマッパー
● メリット
○ とにかくSQLを手で書かないと気が済まない人
● デメリット
○ タイプセーフではない
○ BOOKをBOOKSと書いても実行するまで(バグるまで)ミ
スに気づけない
※想定しているテーブル名はBOOKです。前のページは
わざと間違いを書いています。
18
#ccc_a1
jOOQ(ジュークと読む)
//テーブルのメタデータ情報クラス
Book book = Tables.book;
// SQLを組み立てて実行
List<BookVo> books = dsl
.select(book.isbn, book.title)
.from(book)
.where(book.isbn.eq(“hoge”))
.fetchInto(BookVo.class); // PoJoであれば手作りクラスでも可
タイプセーフ=間違えたらコンパイルエラーでわかる
赤字は自動されたJavaコードを
使っている箇所
19
#ccc_a1
DBFlute
List<Book>books = bookBhv.selectEntity(
condition -> {
condition.query().setBookIsbn_equal("999");
}
); 赤字は自動されたJavaコードを
使っている箇所
20
#ccc_a1
うたぐり深い人へ、本当の話。
1. jOOQはもっと複雑なSQLを組み立てることも可能です。
a. 参考文献
https://docs.google.com/presentation/d/1MvsMo38Bt-2h4b_ZDSSXNSgq_UuweXx9P0HmlbO
y8k8
2. 正直に言うと、DBFluteは group by をサポートしていません。
a. そういうことは「外出しSQL」で書く方向。
b. 外出しSQLの結果マッピングや呼び出しコードの自動生成をサポート。
21
割愛
#ccc_a1
QueryDSL
● jOOQと似てる(ので、サンプルコードは省略)
● NoSQLも積極的(Lucene拡張、MongoDB拡張)
● 2016年9月、QueryDSLのメインなコミッターが
「やりきったから、別の仕事やるわ。」
と事実上の開発停滞宣言。*3
● jOOQ陣営「QueryDSLおつかれ。俺たちはまだやるぜ」宣言。*4
● 2018年5月 約2年ぶりのバージョンアップ
22
#ccc_a1
いま風なO/Rマッパーの共通項
● タイプセーフなJavaコーディングでCRUDを書く
○ ミスったらコンパイルエラー
● DBにピッタリ合わせたJavaコードでCRUDを書く
○ DB変更の影響範囲がコンパイルエラーでわかる
● 上記を実現するために、
○ テーブル作成済みのDBサーバから自動的にメタデータを
読み取って、Javaソースコードを自動生成
23
#ccc_a1
2. DBマイグレーションツールとは?
24
#ccc_a1
ここで言うDBマイグレーションとは
DBに対する変更=DDL文の適用=を管理するツール
● O/Rマッパー同梱型
○ Ruby on Rails
○ DBFlute
○ Hibernate(?)
● 専用ツール型
○ LiquiBase
○ MyBatis Migration
○ Flyway
25
#ccc_a1
「いまの状態のDB -> 変更のDDLをあてる -> 次の状態のDBになる」
1. 「次の状態のDB」のフルDDL(CREATE文)を手で作っておく
2. 「今の状態から変更するためのDDL」も手で作っておく
3. DBFluteの”save-previous”コマンドで今の状態のDBの定義情報を保存
4. 3と1を使ってDBFluteの”alter-check”コマンドで下記を検証できる
今の状態 + 変更のDDL = 次の状態
5. 4の結果を見たDBAは安心して「変更のDDL」を本番DBで実行
6. 開発者はDBFluteの”replace-schema”で手元の開発DBを再構築
26
DBFluteのマイグレーション機能
#ccc_a1
LiquiBase
● 却下。
● 巨大なXMLファイルを手でメンテし続ける前提だから
27
割愛
#ccc_a1
MyBatis Migrations
● 時間が無いので割愛。
● 考え方はFlywayとよく似ている
28
割愛
#ccc_a1
3. Flywayとは
(これが近年の本命)
29
#ccc_a1
基本的な考え方
DBマイグレーションツールが無い世界で
DBA担当がDBに向かってやる基本動作は
究極、これだけ。
1. DDL文を FooBar-0001.sql ファイルに書いて保存。
2. 順に、一度だけ、実行する。
30
#ccc_a1
DB担当者の基本動作を
そのままソース管理&実行管理する
ツールが Flyway だと思えばいい
31
#ccc_a1 32
src/main/resources/db/migration/
V1.1__foo_init.sql <- 去年のサービス開始のとき
V1.2__hoge_alter.sql <- 先月の機能追加のとき
V1.3__add_foobar.sql <- 来週のための機能追加
1. DBに対する変更を.sqlファイルで積み重ねてゆく
2. flywayを実行
$ ./gradlew flywayMigrate
#ccc_a1 33
3. 管理テーブルに無いsqlファイルだけが実行対象となる
> SELECT ... FROM SCHEMA_VERSION
version | script | success
---------+-----------------------+---------
0.1 | << Flyway Baseline >> | true
1.1 | V1.1__foo_init.sql | true
1.2 | V1.2__hoge_alter.sql | true
1.3 <- このレコードは未だ無いのでV1.3__add_foobar.sqlが対象
4. sqlファイルの追加や変更がない状態でもう一度 flywayMigrate して
も、全て実行済みでSCHEMA_VERSIONに記録されていれば、何も起きな
い(べき等性)
#ccc_a1
補足
● 運用中のDBに、途中から導入することも可能
○ Flyway
■ “flyway baseline” でググる
○ DBFlute
■ 詳しくはマニュアルを
■ O/Rマッパーとして使わずとも、他のマイグレーション
支援コマンド群だけ使うことが可能
34
#ccc_a1
ちょっと休憩
35
1. 水を飲む
2. 時間を確認
20分くらい?
#ccc_a1
4. 開発のスタート地点はどこ?
36
#ccc_a1 37
A. 手書きのDDL(を積んでゆくだけ)
最初にCREATE TABLE、 運用しながら ALTER,
CREATE/DROP INDEX, CREATE/DROP TABLE...
B. ER図をまず書く。(そこからDDL文を自動生成)
C. JPAのエンティティクラスを手書きし、Hibernate-JPAでDDL文
を自動生成
D. テーブル定義書.xlsと手書きのDDLを同時に書き続ける
#ccc_a1 38
A. 手書きのDDLをテキスト形式で積み上げる
この方法以外はすべて、なんだかんだで...
● ツールのセットアップと使い方が難しい
● 引き継ぎが難しくなる
● ツールが有償かつツールにロックインされる
● バージョン管理システムとの相性が...
#ccc_a1
5. 開発DBサーバはどこにあるべき?
39
#ccc_a1 40
A. 共有DB方式
チームのエンジニア全員のPCからサーバ室の1台のDBサー
バに接続
B. ローカルDB方式
それぞれのエンジニアのPCに自分専用の開発DBを構築
#ccc_a1
ローカルDB方式 = Docker時代のデファクト
41
$ docker run mysql:5.7
$ ./gradlew flywayMigrate
● 不要なカラムを削除したい
● 不適切な名前のカラムを
RENAMEしたい
● 新しい機能のために新しい
テーブルを追加したい
● 並行して作業できる
● ただしFlywayの場合はsqlファイルのバージョン番号
だけは衝突しないように話し合う
$ docker run mysql:5.7
$ ./gradlew flywayMigrate
#ccc_a1
6. O/Rマッパーのソースコード自動生成を
どのタイミングでやるか
7. 自動生成したコードをgitに入れるか
42
#ccc_a1
ローカルDB方式 + 自動生成型O/R + Flyway の場合
1. エンジニアはそれぞれやりたいDB変更をDDLで書く
書いたら手元PCで ./gradlew flywayMigrate (手元のDBが変更される)
2. エンジニアはそれぞれ手元でO/RマッパのJavaコード生成を実行
自動生成したJavaコードはコミット対象外!(理由は後述)
3. 2.に合わせてアプリのJavaコードも書く
4. 手元のPCでアプリを起動 -> 動作確認
5. プルリクを作る -> masterブランチにマージ
(続く)
43
#ccc_a1
※以下はエンジニアのPCではなくCIサーバが実施
6. 全てのソースコードツリーをチェックアウト
7. CIサーバ内部でDockerでローカルDBを起動
8. ./gradlew flywayMigrate (ローカルDBの再構成)
9. ./gradlew [O/RマッパのJavaコード自動生成コマンド]
10. ./gradlew build ->全てのコードがjar/warファイル化される
11. アプリをデプロイする前に ./gradlew flywayMigrate -DdbHost=...
※今度はDBの向き先をデプロイ先環境内のDBにしておく
12. jar/warをデプロイ
44
#ccc_a1
前頁のポイント
● DB変更とアプリケーションコードの変更を
同じブランチ/プルリクエストで作業できる
○ FlywayのマイグレーションSQLがバッティングしないように、変更内容
と適用順序をエンジニア間で要調整
● O/Rマッパーの自動生成Javaコードはgitコミットしない
● そのかわりに開発者のPCと CIサーバそれぞれで
必要なタイミングで自動生成を実行
45
#ccc_a1
O/Rマッパーの自動生成コードもコミットしたい場合
● マイグレーションSQL文のコミットと、
O/RマッパーのJavaコード自動生成の
実行&コミットを、同時にやるべき。
● ということは、5頁前のような並行作業だとコンフリクトを起こし
やすくなる。
○ 特に自動生成したJavaコード部分のコンフリクト
● ということは、直列にしか作業できない(かもしれない)
46
割愛
#ccc_a1
DBFlute = 自動生成コードをコミットする前提
● 例:他のカラムから導出、計算した結果を入れるプロパティを、
自動生成したエンティティクラスに追加
● 例:共通のWHERE句を組み立て易くするために検索条件生
成クラスに自作のメソッドを追加
(正確には加筆用の継承クラスがあらかじめ自動生成される)
47
#ccc_a1
8. O/Rマッパーが自動生成したJavaコードと
ドメインオブジェクトのコードを
分けるべきか?
注:DDDのそれというよりはDTOに近いかも
48
#ccc_a1
がぜん、分けるべき。
49
RDB
Repository
Logic
O/Rマッパー
自動生成したentity
クラス
ドメインクラス
/DTO
ドメインクラス
/DTO
Controller
ドメインクラス
/DTO
● setter/getterで地
道に詰め替え
● MapStruct,
Dozer, etc
長寿
長寿に
なりがち
コロコロ変
わる
#ccc_a1
ドメインクラスと自動生成クラスの名前衝突に注意
テーブル名
BOOK
O/Rマッパが自動生成したエンティティクラスやメタデータクラス名
Book.java
丹念に手作りしたいDDD的なドメインクラスの名前
Book.java
50
名前衝突
#ccc_a1
// jOOQでのカスタム例
public class FooPrefixGeneratorStrategy extends DefaultGeneratorStrategy {
@Override
public String getJavaClassName(final Definition definition, final Mode mode) {
String name = super.getJavaClassName(definition, mode);
switch (mode) {
case POJO:
return name + "Vo"; // エンティティクラスは BookVo.javaになる
case DEFAULT:
return 'Foo' + name; // メタデータクラスは FooBook.javaになる
}
return name;
}
51
(正確にはTablesクラスの内部クラス)
#ccc_a1
ちょっと休憩
52
1. 水を飲む
2. 時間を確認
35分くらい?
#ccc_a1
9. テストデータの投入方法は?
53
#ccc_a1
テストデータは必須。しかし....
54
● 空っぽのテーブルでアプリケーションの動作確認はできない
● テストデータは固定ではない。特に日付。
○ 「発売前の本」のつもりのデータが常に 2018-12-15 だったら?
#ccc_a1
DBFluteの場合
55
‘replace-schema’コマンドが
1. 全てのテーブル、インデックスを DROP -> CREATE
2. xls, tsv, csvファイルがあればテストデータとしてINSERT
csvファイル上の “$sysdate.addDay(7)” は
コマンド実行時刻の7日後の値がDBカラムに入る
#ccc_a1
他の方法
56
A. RDBMSのcsv, tsvのバルクロード機能
a. 日付の相対指定が難しい
B. INSERT文を用意して実行
a. 大量の手書きINSERT文が今後のDB変更に耐えられるか?
C. 上記A,Bのハイブリッド
a. csvで入れて相対日付カラムはUPDATE文
D. FlywayのJava-Based Migration
a. DB定義変更用PJとは別PJとしてテスデータ用PJを作っておく
b. SQL文ではなくJavaコードを作っておく
c. INSERT文よりは楽。日付の相対指定も可能。
#ccc_a1
Flyway公式マニュアルによると
57
出典 *10
src/main/java/db/migration/V1_2__Another_user.java
src/main/resources/db/migration/V1_3__HogeHoge.sql
./gradlew flywayMigrate でファイル名順に実行される
ループして値を変えながらINSERTすればいい
#ccc_a1
10. O/Rマッパが作るSQLを見たい
58
- 手書きのSQL以外は信用しないタイプのエンジニアのため
に -
#ccc_a1
DBFluteの場合
● デフォルトでこんな感じ
○ SqlLogHandlerでさらに細かい制御も可能
59
出典 *5
結果データも出てる
呼び出し元クラス
#ccc_a1
jOOQのデバッグログ
60
出典 *6
#ccc_a1
O/Rマッパーを問わない方法もある
● JDBCドライバの中継器として稼働しつつ
実行しようとしているSQLをログ出力
(正確にはプリペアドステートメントだけのことがほとんど)
○ p6spy
○ log4jdbc
61
#ccc_a1
11. RDBMSの独自関数を使いたい
62
#ccc_a1
DBFluteの場合
● sql_calc_found_rowsくらいならデ
フォルト対応
● 外出しSQLならなんでも書ける
● フォーマットは2-Way-SQL
● 呼び出し側コード
(WHERE句の調整等)も
自動生成
63
出典 *7
#ccc_a1
jOOQの場合
64
出典 *8,9
#ccc_a1
12. テーブル定義書をどう作るか
65
#ccc_a1
自動生成 一択
66
#ccc_a1
DBFluteの場合
67
‘doc’コマンド一発
#ccc_a1
SchemaSpyの場合
● jarを直接実行、あるいはdocker run (*11)
● ER図も自動生成
68
#ccc_a1
13. 同じプロジェクトで
複数のO/Rマッパーを同時に使う
or乗り換えるためのヒント
69
#ccc_a1
● 複数のO/Rマッパを好きに混ぜて使って、
いいとこどりできたら幸せ。
● 一つのWeb/DBプロジェクトの開発で、
2つ以上のO/Rマッパーを混ぜて使うことは
無理?、危険?
● トランザクション管理ェェ...
70
#ccc_a1
※ Spring Frameworkを使っているとして
71
#ccc_a1 72@Autowired OrderBhv orderBhv; // DBFlute
@Autowired DSLContext dsl; // jOOQ
@Transactional
public void order(String isbn, Long memberId) { // 本を購入するメソッド
Order order = new Order();
order.setIsbn(isbn);
order.setMemberId(memberId);
orderBhv.insert(order);
Book book = Tables.Book;
dsl.update(book)
.set(book.STOCK, book.STOCK.minus(1))
.where(book.ISBN.eq(isbn))
.execute();
}
● DBFluteでINSERT
● jOOQでUPDATE
● 一つのトランザクション
(BIGIN〜 COMMIT)
で実行されていればOK
DBFlute
jOOQ
#ccc_a1
2つのO/Rマッパが使用する
javax.sql.DataSource オブジェクトが
確実に同じ(インスタンス)であれば
正しくトランザクション管理できる。
73
#ccc_a1
@Bean
public javax.sql.DataSource dataSource() {
// コネクションプール機構を使うとして(ここではHikariCP)
HikariConfig config = new HikariConfig();
config.setJdbcUrl(...);
config.setUsername(...);
config.setPassword(...);
HikariDataSource ds = new HikariDataSource(config);
// return ds; // ←こうじゃなくて↓こう
return new TransactionAwareDataSourceProxy(ds);
}
74
詳しくは TransactionAwareDataSourceProxy でググる。
#ccc_a1
まとめ
75
#ccc_a1
Java/DB開発の今どきの手法とツール
● O/Rマッピングライブラリ
○ ソースコード自動生成によるタイプセーフ方式
○ 外部SQLファイル実行方式
● 実行したSQLのロギング
● DBマイグレーションの自動化
● テストデータ投入の自動化
● テーブル定義書の自動作成
● トランザクションに気をつけて複数のO/Rマッパーを同時に使用
76
選択肢と使い方をよく吟味して、レッツ快適開発!
#ccc_a1
Thank you !
77
#ccc_a1
参考文献
1. Hibernateはどのようにして私のキャリアを破滅寸前にしたか
https://www.kaitoy.xyz/2017/02/23/how-hibernate-ruined-my-career/
上記の原文 https://medium.com/@ggajos/how-hibernate-almost-ruined-16f31ba7d381
2. 我々はいかにして技術選択を間違えたのか?
https://blog.cybozu.io/entry/2016/12/28/101500
3. https://groups.google.com/forum/#!msg/querydsl/fNFXliG8P-k/7dy2aAotVQ0J
4. https://blog.jooq.org/2014/05/29/querydsl-vs-jooq-feature-completeness-vs-now-more-than-ever/
5. http://dbflute.seasar.org/ja/manual/function/genbafit/implfit/debuglog/index.html
6. https://www.jooq.org/doc/3.11/manual/sql-execution/logging/
7. http://dbflute.seasar.org/ja/manual/function/ormapper/outsidesql/howto.html
8. https://www.jooq.org/doc/3.11/manual/sql-execution/query-vs-resultquery/
9. https://www.jooq.org/doc/3.11/manual/sql-building/plain-sql
10. https://flywaydb.org/documentation/migrations#java-based-migrations
11. https://hub.docker.com/r/schemaspy/schemaspy/
12.
78

More Related Content

What's hot

jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界Y Watanabe
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座Samir Hammoudi
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方増田 亨
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)Yoshitaka Kawashima
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -onozaty
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本kazuki kumagai
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 Hiroshi Ito
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みTakeshi Ogawa
 
怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション土岐 孝平
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかShogo Wakayama
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説増田 亨
 
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割Recruit Lifestyle Co., Ltd.
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 

What's hot (20)

jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション怖くないSpring Bootのオートコンフィグレーション
怖くないSpring Bootのオートコンフィグレーション
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
 
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
 
WayOfNoTrouble.pptx
WayOfNoTrouble.pptxWayOfNoTrouble.pptx
WayOfNoTrouble.pptx
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 

Similar to ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ

はじめての Azure 開発
はじめての Azure 開発はじめての Azure 開発
はじめての Azure 開発Yoshitaka Seo
 
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み慎一 古賀
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternAtsushi Kambara
 
LightSwitch ~結局何ができるの~ rev 2
LightSwitch ~結局何ができるの~ rev 2LightSwitch ~結局何ができるの~ rev 2
LightSwitch ~結局何ができるの~ rev 2Yoshitaka Seo
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソYoshitaka Seo
 
Visual Studio 2010で楽しくデバッグ
Visual Studio 2010で楽しくデバッグVisual Studio 2010で楽しくデバッグ
Visual Studio 2010で楽しくデバッグKazushi Kamegawa
 
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu GotoInsight Technology, Inc.
 
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignSmart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignRyuji TAKEHARA
 
LightSwitchで遊んでみた
LightSwitchで遊んでみたLightSwitchで遊んでみた
LightSwitchで遊んでみたYoshitaka Seo
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはJun-ichi Sakamoto
 
LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2Yoshitaka Seo
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1Y Watanabe
 
わんくまT78 mfcを始めようとしてみた
わんくまT78 mfcを始めようとしてみたわんくまT78 mfcを始めようとしてみた
わんくまT78 mfcを始めようとしてみた伸男 伊藤
 
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.YASUKAZU NAGATOMI
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021Atsushi Nakamura
 
LightSwitch 結局何ができるの
LightSwitch 結局何ができるのLightSwitch 結局何ができるの
LightSwitch 結局何ができるのYoshitaka Seo
 
[2001/05/30] .NET Developers Conference 2001 May / C#の生産性とパフォーマンス
[2001/05/30] .NET Developers Conference 2001 May / C#の生産性とパフォーマンス[2001/05/30] .NET Developers Conference 2001 May / C#の生産性とパフォーマンス
[2001/05/30] .NET Developers Conference 2001 May / C#の生産性とパフォーマンスTatsuhiko Tanaka
 
デブサミ2013【15-D-4】Opsから挑むDevOps
デブサミ2013【15-D-4】Opsから挑むDevOpsデブサミ2013【15-D-4】Opsから挑むDevOps
デブサミ2013【15-D-4】Opsから挑むDevOpsDevelopers Summit
 

Similar to ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ (20)

はじめての Azure 開発
はじめての Azure 開発はじめての Azure 開発
はじめての Azure 開発
 
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
 
LightSwitch ~結局何ができるの~ rev 2
LightSwitch ~結局何ができるの~ rev 2LightSwitch ~結局何ができるの~ rev 2
LightSwitch ~結局何ができるの~ rev 2
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
 
Visual Studio 2010で楽しくデバッグ
Visual Studio 2010で楽しくデバッグVisual Studio 2010で楽しくデバッグ
Visual Studio 2010で楽しくデバッグ
 
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
 
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignSmart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless Design
 
LightSwitchで遊んでみた
LightSwitchで遊んでみたLightSwitchで遊んでみた
LightSwitchで遊んでみた
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2LightSwitch で遊んでみた Rev. 2
LightSwitch で遊んでみた Rev. 2
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
 
わんくまT78 mfcを始めようとしてみた
わんくまT78 mfcを始めようとしてみたわんくまT78 mfcを始めようとしてみた
わんくまT78 mfcを始めようとしてみた
 
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
Webアプリ開発向け ゆるふわDocker使いがCloud Naive開発に必要そうなetc.
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
 
The evolution of c#
The evolution of c#The evolution of c#
The evolution of c#
 
LightSwitch 結局何ができるの
LightSwitch 結局何ができるのLightSwitch 結局何ができるの
LightSwitch 結局何ができるの
 
ASP.NET MVC Part 2
ASP.NET MVC Part 2ASP.NET MVC Part 2
ASP.NET MVC Part 2
 
[2001/05/30] .NET Developers Conference 2001 May / C#の生産性とパフォーマンス
[2001/05/30] .NET Developers Conference 2001 May / C#の生産性とパフォーマンス[2001/05/30] .NET Developers Conference 2001 May / C#の生産性とパフォーマンス
[2001/05/30] .NET Developers Conference 2001 May / C#の生産性とパフォーマンス
 
デブサミ2013【15-D-4】Opsから挑むDevOps
デブサミ2013【15-D-4】Opsから挑むDevOpsデブサミ2013【15-D-4】Opsから挑むDevOps
デブサミ2013【15-D-4】Opsから挑むDevOps
 

More from Y Watanabe

クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーククラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-RetryフレームワークY Watanabe
 
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩Y Watanabe
 
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田Y Watanabe
 
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所Y Watanabe
 
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略Y Watanabe
 
properties, yaml, and me
properties, yaml, and meproperties, yaml, and me
properties, yaml, and meY Watanabe
 
テストゼロからイチに進むための戦略と戦術
テストゼロからイチに進むための戦略と戦術テストゼロからイチに進むための戦略と戦術
テストゼロからイチに進むための戦略と戦術Y Watanabe
 
The cost of learning - advantage of mixer2
The cost of learning - advantage of mixer2The cost of learning - advantage of mixer2
The cost of learning - advantage of mixer2Y Watanabe
 
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話Y Watanabe
 
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なことY Watanabe
 
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料Y Watanabe
 
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷javaY Watanabe
 
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトークSeleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトークY Watanabe
 
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園Y Watanabe
 
Mixer2によるdynamic css sprite 201309第三回渋谷java
Mixer2によるdynamic css sprite 201309第三回渋谷javaMixer2によるdynamic css sprite 201309第三回渋谷java
Mixer2によるdynamic css sprite 201309第三回渋谷javaY Watanabe
 
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LTY Watanabe
 
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer220130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer2Y Watanabe
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugY Watanabe
 

More from Y Watanabe (18)

クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーククラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーク
 
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
 
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
 
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
 
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
 
properties, yaml, and me
properties, yaml, and meproperties, yaml, and me
properties, yaml, and me
 
テストゼロからイチに進むための戦略と戦術
テストゼロからイチに進むための戦略と戦術テストゼロからイチに進むための戦略と戦術
テストゼロからイチに進むための戦略と戦術
 
The cost of learning - advantage of mixer2
The cost of learning - advantage of mixer2The cost of learning - advantage of mixer2
The cost of learning - advantage of mixer2
 
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
 
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
 
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
 
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
 
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトークSeleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
 
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
 
Mixer2によるdynamic css sprite 201309第三回渋谷java
Mixer2によるdynamic css sprite 201309第三回渋谷javaMixer2によるdynamic css sprite 201309第三回渋谷java
Mixer2によるdynamic css sprite 201309第三回渋谷java
 
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
 
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer220130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
 

Recently uploaded

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Recently uploaded (8)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ