オイシックスのフレームワーク
TRANSCRIPT
![Page 1: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/1.jpg)
Oisixの
フレームワークの変遷
2011年6月17日 オイシックス株式会社
![Page 2: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/2.jpg)
自己紹介
•山下 寛人 •システム本部 本部長 •2000年の創業時から一貫してシステムを担当
![Page 3: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/3.jpg)
2000年
![Page 4: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/4.jpg)
2000年のできごと
•オイシックス創業 •10月にOisix.comグランドオープン •はじめてJavaで本格的な開発を行った
![Page 5: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/5.jpg)
最初のフレームワーク
•MVC、O/Rマッピングとも独自フレームワーク •当時はStrutsもHibernateも存在しなかった •簡単なフレームワークながら簡略版のStrutsやHibernateのようになっている •HTMLからビジネスロジックを分離したり、DBのデータをオブジェクトとして扱える、など •今も使い続けている
![Page 6: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/6.jpg)
問題点
•いろいろ細かい欠点がある •URLに必ずクエリ文字列を必要としたのでSEOに不向き(対策済み) •DBのフィールドを追加したときに直す箇所が多い •など
しかし、直接的に売上を上げる開発をしないと生き残れないのでフレームワークを改善している暇がない むしろMS AccessみたいにWebアプリケーションを簡単に作れないか
![Page 7: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/7.jpg)
2002年
![Page 8: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/8.jpg)
2002年のできごと
•2001年から自社で倉庫を持ったので在庫管理システムが必要になった •いろいろあって自社開発した •システム名はOisystem-ZS(在庫・仕入管理)
![Page 9: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/9.jpg)
ZSのフレームワーク
•MVCは新たに独自作成 •DBまわりはEJB(バージョン2) •独自フレームワークから業界標準を採用 •いろいろ大変なEJBをできるだけ楽に使う工夫
![Page 10: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/10.jpg)
問題点
•MVCまわりはだいぶ改善したものの使っているとよりよい機能がほしくなる •EJBもだいぶ効率的に使えるようにしたもののやはりいろいろな制限もあるし重い •EJB2は実質的に絶滅した
![Page 11: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/11.jpg)
2005年
![Page 12: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/12.jpg)
2005年のできごと
•急成長を目指してメルマガ会員を一気に100万人にするという目標を立てた
•大規模な配信、きめ細かいセグメント分割などができるようメルマガのシステムを構築 •システム名はOisystem-MM(メルマガ)
![Page 13: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/13.jpg)
MMのフレームワーク
•JSF + EJB2 •独自フレームワーク部分がほとんどなくなった •Eclipseでビジュアル開発? •EJBにしたのは非同期処理ができるMessage Driven BeanやEJB Timer Serviceを使いたかったから
![Page 14: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/14.jpg)
問題点
•eclipseも使い始めこれでビジュアル開発ができるようになると思われたが夢に終わった •JSFはHTMLの世界と若干違っていてサーバーでコンポーネントモデルを持っている •HTMLだと簡単にできることが結構難しい •1リクエストごとにサーバー内でコンポーネントモデルを作るので公開サイトで使うには負荷が怖い
![Page 15: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/15.jpg)
2008年
![Page 16: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/16.jpg)
2008年のできごと
•オイシックスはこだわりの商品を販売するビジネスなので、商品情報は非常に重要 •商品管理システムを構築 •システム名はOisystem-SK(商品管理) •PHP3の販売管理システムをJavaに移行し始める •システム名はOisystem-TS2(通販Sales management)
![Page 17: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/17.jpg)
SK,TS2のフレームワーク
•SKはStruts2 + JPA •Struts2はほぼ理想 •JPAは若干問題あり •TS2はStruts2 + Hibernate •oisix.comの独自フレームワークと併用できるようラッパを作成
![Page 18: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/18.jpg)
JPAの問題点
•本当に基本的な機能しかなく実際はHibernateなどのJPA実装を使う必要がある •例えばevictがない(JPA2.0では仕様が定義されたもよう)
![Page 19: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/19.jpg)
Struts2の概要
•Struts1.xとは別物だが基本形は似ていて覚えやすい •XMLがほとんどいらない •ActionクラスやJSPはURLの規約により決定される(XMLやアノテーションで指定もできる) •ActionクラスはPOJOになっていてテストしやすい •OGNL式が強力で細かいところでこんなふうにできないかなと思ったことはだいたいできる
![Page 20: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/20.jpg)
Struts2の概要
画面
public class KaritourokuInputAction extends ActionSupport {
private String kokyakuIdList;
private int binId;
private List<KokyakuTeikiKanri> kokyakuList = new
LinkedList<KokyakuTeikiKanri>();
@SkipValidation
public String execute() {
return INPUT;
}
public String input() throws Exception {
:
return result;
}
}
画面の入力値がActionクラスの変数に入り ボタンクリックでメソッドが実行される
![Page 21: オイシックスのフレームワーク](https://reader033.vdocuments.pub/reader033/viewer/2022060200/559810ec1a28ab2b1f8b46d0/html5/thumbnails/21.jpg)
今後
•Oisix.com既存フレームワークを修正してStruts2と共存できるようにする •Seasar系のフレームワークも検証