SlideShare a Scribd company logo
マジックビーンズ 
Twitter: @a_suenami 
Github: a-suenami 
id: a_suenami
自己紹介 
• 末並晃(すえなみあきら) 
• @a_suenami 
• 髪切りました / 痩せました 
• RubyとかPHPとかJavaScriptとか 
• いわゆる”Web系”エンジニア 
• どちらかというと自然キー/複合キー容認派 
• どちらかというとNULL撲滅したい派
マジックビーンズとは 
MVC アーキテクチャにおいて、 
M ( モデル ) の設計や実装を単純化するために、 
すべてのモデルをアクティブレコードの 
継承クラスにするというアンチパターン
アクティブレコードとは 
データベーステーブルあるいはビューの1行が1つのクラスにラップさ 
れ、オブジェクトのインスタンスがそのデータベースの1つの行に結合 
される。このクラスはデータベースアクセスのカプセル化も行う。オブ 
ジェクトの生成後は、保存メソッドで新しい行がデータベースに追加 
される。 オブジェクトが更新されると、データベースの対応する行も 
また更新される。 
出典: http://ja.wikipedia.org/wiki/Active_Record
アクティブレコードとは 
# 1 件取得 
bug = Bug.find(1234) # SELECT * FROM bugs 
! 
# 新規作成 
bug = new Bug.new 
bug.summary = ‘保存時にクラッシュが発生’ 
bug.save # INSERT INTO bugs (summary) VALUES (‘保存時にクラッシュが発生’) 
! 
# 更新 
bug = Bug.find(1234) # SELECT * FROM bugs 
bug.summary = ‘保存時にクラッシュが発生’ 
bug.save # UPDATE bugs SET summary = ‘保存時にクラッシュが発生’ WHERE id = 1234 
! 
# 削除 
bug = Bug.find(1234) # SELECT * FROM bugs 
bug.delete # DELETE FROM bugs WHERE id = 1234
弊害1: モデルがデータベーススキーマに依存する 
• アクティブレコードを用いると、n 個のテーブルがある場合、n 個の 
モデルクラスが必要になる。 
• データベースをリファクタリングする際にモデルクラスだけでなく、 
それを使う側のコードまで変更する必要がある。
弊害2: CRUD 機能を公開してしまう 
• アクティブレコードを用いると find, create, update, delete などの 
メソッドを公開メソッドとして直接呼び出せてしまう。 
• ビジネスロジックとして実装されたメソッドを利用せず、公開 
CRUD メソッドを利用できてしまう結果、要件を満たさないコード 
が書かれる可能性がある。 
• 書籍中ではバグ担当者をアサインしたらメール通知するはずだが、 
メール通知が迂回されてしまうという例で紹介されている。 
• 仮に要件を満たせたとしても、公開 CRUD メソッドの利用はビジネ 
スロジックがアプリケーション層まで流出する結果になる。また、 
複数箇所に同じロジックが重複する可能性がある。
弊害3: ドメインモデル貧血症をもたらす 
• モデルがデータアクセスオブジェクトとしてしか利用されず、ビジ 
ネスロジックの多くがアプリケーション層にあるコントローラーオ 
ブジェクトやサービスオブジェクトに記述されている状態を「ドメ 
インモデル貧血症」という。 
• 参考: http://capsctrl.que.jp/kdmsnr/wiki/bliki/? 
AnemicDomainModel 
• CRUD メソッドを公開してしまった結果として起こりやすい。 
• ビジネスロジックを持たないモデルと巨大で手続き的なサービスオ 
ブジェクトで構成されることになり保守性が低下する。オブジェク 
ト指向のカプセル化の考え方に完全に違反している。
弊害4: ユニットテストが困難 
• モデル、ビュー、コントローラ、すべてのレイヤーにおいてユニット 
テストが困難になる。 
• モデル: データベースと密結合になるため、本番と同等のデータベー 
ススキーマを準備して実際に接続する必要がある。 
• ビュー: モデルが単なるデータコンテナとして使われると表示処理に 
も複雑なロジックが生じるため、実際のレスポンスとして返される 
HTML を生成し、それに対してテストする必要がある。 
• コントローラ: ビジネスロジックがアプリケーション層に漏れだして 
いるため、ビジネスロジックのテストのために HTTP リクエストとレ 
スポンスをエミュレートする必要があり煩雑になる。
“Railsの”アクティブレコードのさらなる弊害 
Rails のアクティブレコードの場合、データベースに加えてフォームと 
も密結合になる。 
<%= form_for(@bug) do |f| %> 
<div class="field"> 
<%= f.label :summary %><br> 
<%= f.text_field :summary %> 
</div> 
<div class="field"> 
<%= f.label :description %><br> 
<%= f.text_area :description %> 
</div> 
<div class="actions"> 
<%= f.submit %> 
</div> 
<% end %>
“Railsの”アクティブレコードのさらなる弊害 
• テーブルとフォームが綺麗に対応しない場合にはモデルにフォーム 
由来の実装が現れる。 
• (例) メールアドレスの確認入力 
• (例) 「利用規約に同意する」チェックボックス 
• バリデーションルールやエラーメッセージの管理もモデルの責務とし 
て実装される。 
• Rails でアンチパターンに陥ると、モデルにはバリデーションルール 
のみがあり、ビジネスロジックはコントローラに流出してしまう。
アンチパターンの見つけ方 
• 「モデルにカスタム SQL クエリを渡すにはどうすればいい?」 
• モデルにカスタム SQL を渡す必要はない。クエリをカプセル化し、アプリ 
ケーション層から隠ぺいする。 
• 「複雑なモデル操作をすべてのコントローラにコピーすればいいのだろうか、 
それとも、親の抽象コント ローラクラスに 1 回だけコーディングすればいいの 
だろうか」 
• どちらの方法でも安定性や保守性は得られない。複雑な手続きがあるのであ 
ればモデルのメソッドとして公開する必要がある。 
• 「モデルのユニットテストを行うために、データベースフィクスチャをもっと書 
かなければならない」 
• モデルのテストではなくデータアクセスのテストをしている可能性がある。
アンチパターンを用いてもよい場合 
• アクティブレコードそのものは優れたデータアクセスパターンであ 
り、それ自体はアンチパターンではない。 
• テーブルの各行に対してシンプルな CRUD 操作ができるだけで十分 
なアプリケーションも多く、その場合には DAO とモデルを同一の 
ものにすることで設計を単純化できる。 
• プロトタイプ作成においては作業省力化の役に立つ。
http://a-suenami.hatenablog.com/entry/2014/11/12/221805 
“何が必要か/本当に必要かがわかるまでは開発しないか最低限の開発で検証を 
重ねるのがいいと思いますし、その結果コアドメインが姿を表したらユビキタ 
ス言語を構築してモデリングをするべきでしょう。逆にノンコアドメインにつ 
いてはフレームワークや既存のパターンを使って低コストに済ませてしまうの 
がよいと思います。”
解決策 
• モデルがアクティブレコードを「持つ」ようにする 
• モデルを理解する 
• ドメインモデルの使用 
• プレーンなオブジェクトのテスト 
• 現実的に考える
レイヤー化アーキテクチャ 
• 「エリックエヴァンスのドメイン駆動設計」で紹介されているアー 
キテクチャパターン。 
• ある層の要素は同じ層の別の要素か、より下の層の要素にしか依存 
しないことを原則とする。 
ユーザ・インターフェース層ユーザへの情報の表示、ユーザからの入力の解釈を責務 
として負う。 
アプリケーション層 
ソフトウェアがやるべき仕事を定義し、問題を解決でき 
るようにドメインオブジェクト間の調整をする。ドメイ 
ンに対する知識を持たず、薄く保たれる層。 
ドメイン層ビジネス上の概念やビジネスルールを表す責務を負う。 
インフラストラクチャ層上位のレイヤを支える技術的機能を提供することを責務 
とする。
オブジェクトの責務の割当てパターン ( GRASP ) 
• 情報エキスパート ( Information Expert ) 
• 生成者 ( Creator ) 
• 疎結合性(Low Coupling) 
• 高凝集性(High Cohesion)
ドメインモデル 
• ドメインモデルについては「エリック・ 
エヴァンスのドメイン駆動設計」で詳し 
く述べられている。 
• ドメインモデルとは対象ドメインに関心 
事をアプリケーションで表現したもので 
あり、MVC アーキテクチャにおける本来 
の「モデル」もそうであるべきである。 
• エリック・エヴァンスの書籍では永続化 
層とドメイン層の仲介役としてリポジト 
リパターンが紹介されている。
プレーンオブジェクト 
• データベースの構造に依存しないプレーンなオブジェクトはテストしや 
すく、またテストの実行速度も速い。 
• 特に実装言語が Java の場合、それが特定のフレームワークやアーキテ 
クチャに依存してないことを強調するために POJO ( Plain Old Java 
Object ) と呼ばれる。 
• 他の言語でも同様に POXO ( X は言語の頭文字 ) と呼ぶケースはあ 
る。 
• ドメインモデルを正しく設計してビジネスロジックをそこに隠蔽すると、 
コントローラやビューのテストではそれらのモデルをモックやスタブに 
差し替えることができ、数多くの分岐をテストしなくてよくなる。
Before & After 
出典: 『SQLアンチパターン』P269, P276
ちなみに… 
若干古い書籍ですが、「エンタープライズ 
Rails」という書籍に models/physical と 
models/logical を作成して、同様のことを 
実現する方法が紹介されているのでご興味 
ある人はぜひ。 
※まわし者ではありません。 
※時間なくて詳細を資料に盛り込めません 
でした、すいません。
最後にちょっと小話。 
Rails を使ってる場合の現実的な 
落とし所について。
公開メソッドについて 
• モジュールの include で見た目の複雑性を下げる。 
• コードレビューによるチェックで基底クラスの公開メソッドを使わ 
ないようにする。
フォーム / サービスオブジェクトの利用 
http://a-suenami.hatenablog.com/entry/2013/12/06/092146
まとめ 
データベースとモデルは区別しましょう。 
! 
DOA の人とモデルの人は殴りあってないで 
もっと仲良くしましょう。(マジで)

More Related Content

What's hot

日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについてkumake
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
 
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話
ichirin2501
 
MySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいことMySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいこと
yoku0825
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南
Mikiya Okuno
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
 
What's New in MySQL 5.7 InnoDB
What's New in MySQL 5.7 InnoDBWhat's New in MySQL 5.7 InnoDB
What's New in MySQL 5.7 InnoDB
Mikiya Okuno
 
Tackling Complexity
Tackling ComplexityTackling Complexity
Tackling Complexity
Yoshitaka Kawashima
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
 
MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較
Shinya Sugiyama
 
SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)Tomoaki Uchida
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
 
SQLアンチパターン読書会 第10章 サーティワンフレーバー
SQLアンチパターン読書会 第10章 サーティワンフレーバーSQLアンチパターン読書会 第10章 サーティワンフレーバー
SQLアンチパターン読書会 第10章 サーティワンフレーバー
tkfuji
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
増田 亨
 

What's hot (20)

日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
 
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話
 
MySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいことMySQL 8.0で憶えておいてほしいこと
MySQL 8.0で憶えておいてほしいこと
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
What's New in MySQL 5.7 InnoDB
What's New in MySQL 5.7 InnoDBWhat's New in MySQL 5.7 InnoDB
What's New in MySQL 5.7 InnoDB
 
Tackling Complexity
Tackling ComplexityTackling Complexity
Tackling Complexity
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較
 
SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
 
SQLアンチパターン読書会 第10章 サーティワンフレーバー
SQLアンチパターン読書会 第10章 サーティワンフレーバーSQLアンチパターン読書会 第10章 サーティワンフレーバー
SQLアンチパターン読書会 第10章 サーティワンフレーバー
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
 

Similar to マジックビーンズ

DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発Tomoharu ASAMI
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
normalian
 
Laravelの検索機能の実装方法
Laravelの検索機能の実装方法Laravelの検索機能の実装方法
Laravelの検索機能の実装方法
yoshitaro yoyo
 
Mvc conf session_1_osada
Mvc conf session_1_osadaMvc conf session_1_osada
Mvc conf session_1_osada
Hiroshi Okunushi
 
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
Yoshitaka Seo
 
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
gree_tech
 
はじめての ASP.NET MVC
はじめての ASP.NET MVCはじめての ASP.NET MVC
はじめての ASP.NET MVC
jz5 MATSUE
 
はじめてのASP.NET MVC5
はじめてのASP.NET MVC5はじめてのASP.NET MVC5
はじめてのASP.NET MVC5
Tomo Mizoe
 
MvcのFatモデルに立ち向かう
MvcのFatモデルに立ち向かうMvcのFatモデルに立ち向かう
MvcのFatモデルに立ち向かう
Shun Hikita
 
【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)
Sosuke Kimura
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...Akira Inoue
 
The Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in CorporationsThe Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in CorporationsKoichiro Ohba
 
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
Masashi Shinbara
 
Rubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーションRubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーションNaoto Hori
 
Jubatusでマルウェア分類
Jubatusでマルウェア分類Jubatusでマルウェア分類
Jubatusでマルウェア分類
Shuzo Kashihara
 
オープンソースを利用したモデル駆動トライアル
オープンソースを利用したモデル駆動トライアルオープンソースを利用したモデル駆動トライアル
オープンソースを利用したモデル駆動トライアル
Akira Tanaka
 
MVCのつぎは・・・
MVCのつぎは・・・MVCのつぎは・・・
MVCのつぎは・・・
Net Penguin
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
Daisuke Nishino
 
Tech fun rails_workshop
Tech fun rails_workshopTech fun rails_workshop
Tech fun rails_workshop
OMEGA (@equal_001)
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
youku
 

Similar to マジックビーンズ (20)

DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
 
Laravelの検索機能の実装方法
Laravelの検索機能の実装方法Laravelの検索機能の実装方法
Laravelの検索機能の実装方法
 
Mvc conf session_1_osada
Mvc conf session_1_osadaMvc conf session_1_osada
Mvc conf session_1_osada
 
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
 
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
 
はじめての ASP.NET MVC
はじめての ASP.NET MVCはじめての ASP.NET MVC
はじめての ASP.NET MVC
 
はじめてのASP.NET MVC5
はじめてのASP.NET MVC5はじめてのASP.NET MVC5
はじめてのASP.NET MVC5
 
MvcのFatモデルに立ち向かう
MvcのFatモデルに立ち向かうMvcのFatモデルに立ち向かう
MvcのFatモデルに立ち向かう
 
【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
 
The Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in CorporationsThe Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in Corporations
 
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
 
Rubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーションRubyで作るtwitter風webアプリケーション
Rubyで作るtwitter風webアプリケーション
 
Jubatusでマルウェア分類
Jubatusでマルウェア分類Jubatusでマルウェア分類
Jubatusでマルウェア分類
 
オープンソースを利用したモデル駆動トライアル
オープンソースを利用したモデル駆動トライアルオープンソースを利用したモデル駆動トライアル
オープンソースを利用したモデル駆動トライアル
 
MVCのつぎは・・・
MVCのつぎは・・・MVCのつぎは・・・
MVCのつぎは・・・
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
 
Tech fun rails_workshop
Tech fun rails_workshopTech fun rails_workshop
Tech fun rails_workshop
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 

More from Akira Suenami

糖質とプログラミングと私
糖質とプログラミングと私糖質とプログラミングと私
糖質とプログラミングと私
Akira Suenami
 
糖質制限超入門
糖質制限超入門糖質制限超入門
糖質制限超入門
Akira Suenami
 
今年かかった麻疹まとめ2014
今年かかった麻疹まとめ2014今年かかった麻疹まとめ2014
今年かかった麻疹まとめ2014
Akira Suenami
 
Symfony温泉2014 自己紹介LT
Symfony温泉2014 自己紹介LTSymfony温泉2014 自己紹介LT
Symfony温泉2014 自己紹介LT
Akira Suenami
 
シュードキーニートフリーク
シュードキーニートフリークシュードキーニートフリーク
シュードキーニートフリーク
Akira Suenami
 
Tdd is really dead ?
Tdd is really dead ?Tdd is really dead ?
Tdd is really dead ?
Akira Suenami
 
Wip prをやってみた
Wip prをやってみたWip prをやってみた
Wip prをやってみたAkira Suenami
 
俺がモデルだ!問題に立ち向かう
俺がモデルだ!問題に立ち向かう俺がモデルだ!問題に立ち向かう
俺がモデルだ!問題に立ち向かう
Akira Suenami
 
今年かかった麻疹まとめ
今年かかった麻疹まとめ今年かかった麻疹まとめ
今年かかった麻疹まとめ
Akira Suenami
 
デザイナのためのGit講座
デザイナのためのGit講座デザイナのためのGit講座
デザイナのためのGit講座
Akira Suenami
 
アジャイル開発振り返り
アジャイル開発振り返りアジャイル開発振り返り
アジャイル開発振り返り
Akira Suenami
 
Xp祭りに行ってきた
Xp祭りに行ってきたXp祭りに行ってきた
Xp祭りに行ってきた
Akira Suenami
 
テストとの上手な付き合い方
テストとの上手な付き合い方テストとの上手な付き合い方
テストとの上手な付き合い方
Akira Suenami
 

More from Akira Suenami (13)

糖質とプログラミングと私
糖質とプログラミングと私糖質とプログラミングと私
糖質とプログラミングと私
 
糖質制限超入門
糖質制限超入門糖質制限超入門
糖質制限超入門
 
今年かかった麻疹まとめ2014
今年かかった麻疹まとめ2014今年かかった麻疹まとめ2014
今年かかった麻疹まとめ2014
 
Symfony温泉2014 自己紹介LT
Symfony温泉2014 自己紹介LTSymfony温泉2014 自己紹介LT
Symfony温泉2014 自己紹介LT
 
シュードキーニートフリーク
シュードキーニートフリークシュードキーニートフリーク
シュードキーニートフリーク
 
Tdd is really dead ?
Tdd is really dead ?Tdd is really dead ?
Tdd is really dead ?
 
Wip prをやってみた
Wip prをやってみたWip prをやってみた
Wip prをやってみた
 
俺がモデルだ!問題に立ち向かう
俺がモデルだ!問題に立ち向かう俺がモデルだ!問題に立ち向かう
俺がモデルだ!問題に立ち向かう
 
今年かかった麻疹まとめ
今年かかった麻疹まとめ今年かかった麻疹まとめ
今年かかった麻疹まとめ
 
デザイナのためのGit講座
デザイナのためのGit講座デザイナのためのGit講座
デザイナのためのGit講座
 
アジャイル開発振り返り
アジャイル開発振り返りアジャイル開発振り返り
アジャイル開発振り返り
 
Xp祭りに行ってきた
Xp祭りに行ってきたXp祭りに行ってきた
Xp祭りに行ってきた
 
テストとの上手な付き合い方
テストとの上手な付き合い方テストとの上手な付き合い方
テストとの上手な付き合い方
 

Recently uploaded

生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
Osaka University
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
ARISE analytics
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
Yuki Miyazaki
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
kitamisetagayaxxx
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
sugiuralab
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 

Recently uploaded (10)

生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 

マジックビーンズ