Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

[事例紹介]Scalaで物流倉庫システム作ったよ

291 views

Published on

Scala Kansai Summit 2017で事例紹介した時の資料です。

Published in: Software
  • Be the first to comment

[事例紹介]Scalaで物流倉庫システム作ったよ

  1. 1. CONFIDENTIAL 【事例紹介】 Scalaで物流倉庫業務システム作ったよ Tomokazu Matsushita tilerline inc @copylight.2017 Tierline .inc all right reserved. 1 2017.09.08
  2. 2. CONFIDENTIAL 発表内容 @copylight.2017 Tierline .inc all right reserved. 2  自己紹介  開発履歴  背景  協力会社、どんなシステム?  設計:システム構成  デモ  実装方法  まとめ  質問タイム
  3. 3. CONFIDENTIAL 自己紹介  松下誠和  株式会社ティアライン  代表取締役  プログラマー  システム開発、クラウドサービス(POS、ホテルPMS)、教育、コンサルティング  37歳  プログラマ歴12年  好きなプログラミング言語  Scala,Java ->固くて扱いやすい言語ならOK  趣味  筋力トレーニング  中年太り → ダイエット効果を狙う → 結果:筋肉増量、2kg増える @copylight.2017 Tierline .inc all right reserved. 3
  4. 4. CONFIDENTIAL 注意点 @copylight.2017 Tierline .inc all right reserved. 4 松下個人、もしくは、株式会社ティアラインの見解であり Scala関西グループとは関係ありません
  5. 5. CONFIDENTIAL 開発履歴 @copylight.2017 Tierline .inc all right reserved. 5 作業期間 システム名 概要 工程 使用機種 OS/DB 言語 FW H18/2~H18/3 ECシステム ワイン販売オンラインECサイト PG PCサーバ WinXP/MySQL Java Struts H18/4~H18/12 SNSシステム構築(小僧COM) シニア向けSNS、Mixiの仕様を模倣 D,PG PCサーバ WinXP/MySQL Java Struts H19/4~H19/5 システム開発新入社員向け研修講師 Java基礎からサーバサイドのチーム開発まで B,D,PG PCサーバ Windows/MySQL Java Spring H20/4~H20/5 システム開発新入社員向け研修講師 Java基礎からサーバサイドのチーム開発まで B,D,PG PCサーバ Windows/MySQL Java Spring H20/7~H20/9 dcs-netシステム開発 D,PG CentOSサーバ Linux/MySQL Java Spring,JSF,Hibernate H20/10~H21/3 TierSailsフレームワーク 自フレームワーク、ActiveRecordライクな実装 B,D,PG Linux Linux/MySQL Java Spring,JDBC H21/10~H21/12 簡易予約システム B,D,PG CentOSサーバ Linux/MySQL Java Spring,JSF,Hibernate H22/1~H22/3 互助会保証メール配信システム 互助会のメルマガ配信および顧客管理 D,PG CentOSサーバ Linux/MySQL Ruby Ruby on Rails H22/4~H22/7 AVEXファンクラブ会員管理システム 約9万会員を管理するシステムおよび、各ファンクラブのページ を生成するCMSシステム。アーキテクチャ担当 D,PG CentOSサーバ Linux/MySQL Java Spring,JSF,Hibernate H22/9~H22/10 CMSホームページ作成 ホームページの作成 CentOSサーバ Linux/MySQL PHP Joomla H22/11~H22/12 文化財センター入札システム 石器発掘事業の入札情報をメールとページ配信する D,PG CentOSサーバ Linux/MySQL Java Spring,JSF,Hibernate H23/1~H23/3 シニア共済システム D,PG CentOSサーバ Linux/MySQL Java Spring,JSF,Hibernate H23/4~H23/5 会員データベースシステム開発 簡易な会員管理システム B,D,PG CentOSサーバ Linux/MySQL Java Spring,JSF,Hibernate H24/1~H23/4 兵庫県健康増進プログラム 健康診断などの結果に応じて血圧やメタボなどの結果をPDF の帳票に出力するシステム D,PG Windows Windows/SQLLite C# .Net H24/5~H23/7 POSCUBEシステム改修 プラグインの追加と調整 PG CentOSサーバ Linux/MySQL PHP Cake PHP H24/7~H24/12 シニア共済バッチプログラム データを時間、日時で集計するバッチプログラム PG Windows Windows/MySQL Java H25/1~H25/3 はせがわ聖石営業管理システム Ipad連動するサーバサイドのシステム。Jsonで商品のカタログ をipadへ配信する D,PG CentOSサーバ Linux/MySql Scala JSF,Hibernate H25/7~H25/8 バッチシステム単体テスト シニア共済のバッチプログラムをJunitでテスト PG,テスト Windows Windows/MySQL Java H25/9~H25/12 POSシステム(機能追加) PHPで実装された他社製のシステムへ機能追加、機能変更 を実装 PG Linux Linux/MySQL PHP zend framework H25/10~ POSシステム(自開発) 多業種他店舗展開可能なクラウドシステム。温浴施設向け へ販売中。POS端末はノートPC,タブレットで、オーダリングシ ステムはスマホなどの汎用的な機器で動作可能。各種レシー ト出力可。 B,D,PG CentOSサーバ AWSでクラウドサービ スか予定 Linux/MySQL Scala Scalatra,Squeryl SailsActiveRecored(自) SailsScaline(自) H26/4~H27/6 ECサイト在庫管理システム 楽天、Amazon、ポンバレモールなどのECサイトと連動して商 品管理、在庫管理、出荷処理ができるシステム。外部連動 するサーバはScalaで実装し、外部サイトのAPIと連結してい る。クライアント側はC#で実装されたWindowsアプリ D,PG, Windows,Linux オンプレスミス Windows/Linux/MySQL Scala C# C#,Scalatra, SailsActiveRecored(自) SailsScaline(自) H27/7~ ホテル業務管理システム 楽天、じゃらんなどのホテル予約サイトとの在庫連動とホテル 内業務システム(PMS)を兼ねた総合ホテル業務システム。UI にはReact.js、サーバサイドとの通信にはScala.js、サーバサ イドはScalaを採用している。現在開発中 B,D,PG AWS採用予定 Linux/MySQL Scala Scalatra, SailsActiveRecored(自) SailsScaline(自) H28/2~ 物流倉庫システム 入庫、出庫などの管理業務と請求業務をWebアプリケーショ ンとして開発中 B,D,PG AWS Linux/MySQL Scala React.js,Scala.js,Scalatra, SailsActiveRecored(自) SailsScaline(自) H28/6~H28/9 キュレーションサイト向けモバイルアプリ コンテンツをスマホのアプリにiPhoneにAndroidにする D,PG AWS Linux/MySQL javascrip t React.js H28/10~H28/12 音声認識システムテスト支援業務 バイナリ音声データを適切にテキスト変換試験テストケース開 発 PG,テスト Windows Linux/MySQL Scala Ruby H28/12~H29/1 FCMシステム改修業務 大手アパレルメーカー基幹業務システムの改修 PG,テスト Windows Windows/MySQL Java Struts,JSP H29/1~ 不動産仲介業者向けシステム 賃貸物件を仲介御者向けに紹介、予約、本申込を受け付 けるWebシステム D,PG Windows Windows/Oracle PHP Laravel H29/1~ POSシステム,オーダーハンディReact化 POSシステムハンディ端末をSinglePageApplicaitionとして React化する B,D,PG AWS Linux/MySQL Scala React.js,Scala.js,Scalatra, SailsActiveRecored(自) SailsScaline(自) H29/4 FCMシステム性能改善調査提案業務 WEBシステムのボトルネックを調査 システム全体の改善を コンサルティング業務 Windows Windows/MySQL Java Struts,JSP H29/7 システム運用引継支援業務 大手製薬会社向けマーケティングシステムのために運用引継 コンサルティング業務 Windows 講師経歴 クライアント企業名 内容 期間 人数 対象 H19/4~H19/5 トランスコスモス株式会社(日立IA経由) Javaプログラミング基礎 2週間 15名 新人 H20/4~H20/5 トランスコスモス株式会社(日立IA経由) Javaプログラミング基礎 WEBシステム開発演習 プロジェクトマネジメント基礎 ECサイト,仮想クレジット決済サーバ 1ヶ月 20名 新人 2年目社員(再教育)
  6. 6. CONFIDENTIAL Scala開発履歴 @copylight.2017 Tierline .inc all right reserved. 6 フレームワーク 作業期間 システム名 概要 環境 DB 言語 View Controller ORM Test H25/1~H25/3 はせがわ聖石営業管理システム(受託開発) Ipad連動するサーバサイドのシステム。Jsonで商品のカタログをipadへ配 信する レンタルサーバ CentOS/MySQL Scala JSF JSF Hibernate ScalaTtes t H25/10~ POSシステム(自社プロダクト) 多業種他店舗展開可能なクラウドシステム。温浴施設向けへ販売中。 POS端末はノートPC,タブレットで、オーダリングシステムはスマホなどの汎 用的な機器で動作可能。各種レシート出力可 AWS オンプレスミス CentOS/MySQL Scala Scalate Scalatra Scaline(自社) Squeryl SailsActiveRecored(自 社) ScalaTtes t H26/4~H27/6 ECサイト在庫管理システム(受託開発) 楽天、Amazon、ポンバレモールなどのECサイトと連動して商品管理、在 庫管理、出荷処理ができるシステム。外部連動するサーバはScalaで実 装し、外部サイトのAPIと連結している。クライアント側はC#で実装された Windowsアプリ Windows,Lin ux オンプレスミス MySQL Scala C# C# Scalatra Scaline(自社) Squeryl SailsActiveRecored(自 社) ScalaTtes t H27/7~ ホテル業務管理システム(受託開発) 楽天、じゃらんなどのホテル予約サイトとの在庫連動とホテル内業務システ ム(PMS)を兼ねた総合ホテル業務システム。UIにはReact.js、サーバサ イドとの通信にはScala.js、サーバサイドはScalaを採用している。継続、 開発中 AWS採用予定 Linux/MySQL Scala React.js,Scalate,Scala.js Scalatra Scaline(自社) Squeryl SailsActiveRecored(自 社) ScalaTtes t H28/2~ 物流倉庫システム(直受け) 入庫、出庫などの管理業務と請求業務をWebアプリケーションとして開発 中 AWS Linux/MySQL Scala React.js,Scalate,Scala.js Scalatra Scaline(自社) Squeryl SailsActiveRecored(自 社) ScalaTtes t H29/5~ POSシステム,オーダーハンディReact化 POSシステムハンディ端末をSinglePageApplicaitionとしてReact化す る AWS Linux/MySQL Scala React.js,Scalate,Scala.js Scalatra Scaline(自社) Squeryl SailsActiveRecored(自 社) ScalaTtes t Scala 5件 Java 15件 Ruby 2件 PHP 3件 C# 1件 VS H18~H25 H25~H29
  7. 7. CONFIDENTIAL 背景:協力会社 @copylight.2017 Tierline .inc all right reserved. 7 株式会社ウィルコム 西宮甲子園浜 加工製造業務 保管業務 年間売上16億 物流倉庫管理 システム Rapide S 2016年初頭… ある相談が
  8. 8. CONFIDENTIAL 背景:どんな業務システム?? @copylight.2017 Tierline .inc all right reserved. 8 入庫 在庫 出庫 商品 商品 商品 200 150 180 50 商品 注:説明のために簡略化してます 入庫荷役料 出庫荷役料保管料:3期制+ + 請求書
  9. 9. CONFIDENTIAL @copylight.2017 Tierline .inc all right reserved. 9 Producer-Consumerパターン プロデューサ・コンシューマ 生産者 データストック 消費者 これは…デザインパターン?! 注:詳しくはGoFオブジェクト指向における再利用のためのデザインパターン
  10. 10. CONFIDENTIAL 設計:システム構成(好き勝手しちゃおう) @copylight.2017 Tierline .inc all right reserved. 10 React.js Scala.js Scalatra ActiveRecord (Squeryl) プレゼンテーション層(画面) サーバーサイド 永続化層 Domainモデル(DDD) AWS(Amazon Web Servce) SPA(Single Page Application)+ React.js + Scala.js + Scala + AWS
  11. 11. CONFIDENTIAL @copylight.2017 Tierline .inc all right reserved. 11 1 years later… (1年後)
  12. 12. CONFIDENTIAL クライアントサイド サーバサイド(tomcat) Active Record ScalatraScala.jsReact.js 設計:How to implementation @copylight.2017 Tierline .inc all right reserved. 12 Action API Domain モデル Component DTO ビジネス ロジック JSON Mysql DB Scalaで実装 Validator Form
  13. 13. CONFIDENTIAL ソースコード1 @copylight.2017 Tierline .inc all right reserved. 13 React.js Form Validator
  14. 14. CONFIDENTIAL ソースコード2 @copylight.2017 Tierline .inc all right reserved. 14 Action API Reactコンポーネントから呼ばれる クライアントサイドのActionから サーバサイドのAPIを直接呼べる (JSONも自動変換)
  15. 15. CONFIDENTIAL まとめ @copylight.2017 Tierline .inc all right reserved. 15 良いところダメなところ 型に守られているから安心 拡張性が高いライブラリ Getter Setterがないのはうれしい object, case classは便利 関数をオブジェクトとして使える ソースコード量が少なくて済む 堅牢で保守性が高く保つことができる コンパイル遅い プログラマ少ない わかりにくい構文がある 業務システムでも十分使える むしろ積極的に使っていくべき!! 知ってほしいところ Prayframework以外もある Scalatra,Scalate,Squeryl TomcatとかJettyでも動く
  16. 16. CONFIDENTIAL 告知 @copylight.2017 Tierline .inc all right reserved. 16 エンジニア絶賛募集 Scala案件 Tierlineまで
  17. 17. CONFIDENTIAL @copylight.2017 Tierline .inc all right reserved. 17 Question time (ご質問どうぞ)

×