SlideShare a Scribd company logo
1 of 17
Download to read offline
CONFIDENTIAL
【事例紹介】
Scalaで物流倉庫業務システム作ったよ
Tomokazu Matsushita
tilerline inc
@copylight.2017 Tierline .inc all right reserved. 1
2017.09.08
CONFIDENTIAL
発表内容
@copylight.2017 Tierline .inc all right reserved. 2
 自己紹介
 開発履歴
 背景
 協力会社、どんなシステム?
 設計:システム構成
 デモ
 実装方法
 まとめ
 質問タイム
CONFIDENTIAL
自己紹介
 松下誠和
 株式会社ティアライン
 代表取締役
 プログラマー
 システム開発、クラウドサービス(POS、ホテルPMS)、教育、コンサルティング
 37歳
 プログラマ歴12年
 好きなプログラミング言語
 Scala,Java ->固くて扱いやすい言語ならOK
 趣味
 筋力トレーニング
 中年太り → ダイエット効果を狙う → 結果:筋肉増量、2kg増える
@copylight.2017 Tierline .inc all right reserved. 3
CONFIDENTIAL
注意点
@copylight.2017 Tierline .inc all right reserved. 4
松下個人、もしくは、株式会社ティアラインの見解であり
Scala関西グループとは関係ありません
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年目社員(再教育)
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
CONFIDENTIAL
背景:協力会社
@copylight.2017 Tierline .inc all right reserved. 7
株式会社ウィルコム
西宮甲子園浜
加工製造業務
保管業務
年間売上16億
物流倉庫管理
システム
Rapide S
2016年初頭… ある相談が
CONFIDENTIAL
背景:どんな業務システム??
@copylight.2017 Tierline .inc all right reserved. 8
入庫 在庫 出庫
商品
商品
商品
200
150 180
50
商品
注:説明のために簡略化してます
入庫荷役料 出庫荷役料保管料:3期制+ +
請求書
CONFIDENTIAL
@copylight.2017 Tierline .inc all right reserved. 9
Producer-Consumerパターン
プロデューサ・コンシューマ
生産者 データストック 消費者
これは…デザインパターン?!
注:詳しくはGoFオブジェクト指向における再利用のためのデザインパターン
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
CONFIDENTIAL
@copylight.2017 Tierline .inc all right reserved. 11
1 years later… (1年後)
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
CONFIDENTIAL
ソースコード1
@copylight.2017 Tierline .inc all right reserved. 13
React.js Form
Validator
CONFIDENTIAL
ソースコード2
@copylight.2017 Tierline .inc all right reserved. 14
Action
API
Reactコンポーネントから呼ばれる
クライアントサイドのActionから
サーバサイドのAPIを直接呼べる
(JSONも自動変換)
CONFIDENTIAL
まとめ
@copylight.2017 Tierline .inc all right reserved. 15
良いところダメなところ
型に守られているから安心
拡張性が高いライブラリ
Getter Setterがないのはうれしい
object, case classは便利
関数をオブジェクトとして使える
ソースコード量が少なくて済む
堅牢で保守性が高く保つことができる
コンパイル遅い
プログラマ少ない
わかりにくい構文がある
業務システムでも十分使える
むしろ積極的に使っていくべき!!
知ってほしいところ
Prayframework以外もある
Scalatra,Scalate,Squeryl
TomcatとかJettyでも動く
CONFIDENTIAL
告知
@copylight.2017 Tierline .inc all right reserved. 16
エンジニア絶賛募集
Scala案件
Tierlineまで
CONFIDENTIAL
@copylight.2017 Tierline .inc all right reserved. 17
Question time (ご質問どうぞ)

More Related Content

What's hot

ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.js
takezoe
 
線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる
啓 小笠原
 
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
SFDG ROOKIES
 
Chatopsのおかけでエンジニアがルーティンワークから解放された話
Chatopsのおかけでエンジニアがルーティンワークから解放された話Chatopsのおかけでエンジニアがルーティンワークから解放された話
Chatopsのおかけでエンジニアがルーティンワークから解放された話
葛 飛
 

What's hot (20)

ユーザーデータ基盤を1からScalaでつくった話し
ユーザーデータ基盤を1からScalaでつくった話しユーザーデータ基盤を1からScalaでつくった話し
ユーザーデータ基盤を1からScalaでつくった話し
 
アドテク企業のScala導入について振り返るlt
アドテク企業のScala導入について振り返るltアドテク企業のScala導入について振り返るlt
アドテク企業のScala導入について振り返るlt
 
ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.js
 
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニアヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
 
マイクロサービスのためのフレームワークGoaのご紹介
マイクロサービスのためのフレームワークGoaのご紹介マイクロサービスのためのフレームワークGoaのご紹介
マイクロサービスのためのフレームワークGoaのご紹介
 
Fun tech#14 AlibabaCloud - EDAS(Enterprise Distributed Application Service)
Fun tech#14 AlibabaCloud - EDAS(Enterprise Distributed Application Service)Fun tech#14 AlibabaCloud - EDAS(Enterprise Distributed Application Service)
Fun tech#14 AlibabaCloud - EDAS(Enterprise Distributed Application Service)
 
DevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話し
DevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話しDevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話し
DevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話し
 
足を地に着け落ち着いて考える
足を地に着け落ち着いて考える足を地に着け落ち着いて考える
足を地に着け落ち着いて考える
 
線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる
 
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoyauroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
 
herokuもおもしろそうだよ(よこはまクラウド勉強会LT資料)
herokuもおもしろそうだよ(よこはまクラウド勉強会LT資料)herokuもおもしろそうだよ(よこはまクラウド勉強会LT資料)
herokuもおもしろそうだよ(よこはまクラウド勉強会LT資料)
 
20211217 Alibaba Cloudでだってテスト駆動インフラ構築したい
20211217 Alibaba Cloudでだってテスト駆動インフラ構築したい20211217 Alibaba Cloudでだってテスト駆動インフラ構築したい
20211217 Alibaba Cloudでだってテスト駆動インフラ構築したい
 
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
 
Apexで作成したrest apiをしっかり保護する方法
Apexで作成したrest apiをしっかり保護する方法Apexで作成したrest apiをしっかり保護する方法
Apexで作成したrest apiをしっかり保護する方法
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門
 
生粋のRubyistがJavaを好きになった理由
生粋のRubyistがJavaを好きになった理由生粋のRubyistがJavaを好きになった理由
生粋のRubyistがJavaを好きになった理由
 
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
 
サーバレスアーキテクチャを実戦投入するにあたって知るべきこと
サーバレスアーキテクチャを実戦投入するにあたって知るべきことサーバレスアーキテクチャを実戦投入するにあたって知るべきこと
サーバレスアーキテクチャを実戦投入するにあたって知るべきこと
 
Chatopsのおかけでエンジニアがルーティンワークから解放された話
Chatopsのおかけでエンジニアがルーティンワークから解放された話Chatopsのおかけでエンジニアがルーティンワークから解放された話
Chatopsのおかけでエンジニアがルーティンワークから解放された話
 
PySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphPySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL Graph
 

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

CloudFormationを使って複数のSAP環境を構築してみよう
CloudFormationを使って複数のSAP環境を構築してみようCloudFormationを使って複数のSAP環境を構築してみよう
CloudFormationを使って複数のSAP環境を構築してみよう
REALTECHJP
 
Realm platform2019
Realm platform2019Realm platform2019
Realm platform2019
昌桓 李
 
基調講演「データのグループウェア化」
基調講演「データのグループウェア化」基調講演「データのグループウェア化」
基調講演「データのグループウェア化」
Cybozucommunity
 

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

ゲームだけじゃないHTML5
ゲームだけじゃないHTML5ゲームだけじゃないHTML5
ゲームだけじゃないHTML5
 
ユーザーからみたre:Inventのこれまでと今後
ユーザーからみたre:Inventのこれまでと今後ユーザーからみたre:Inventのこれまでと今後
ユーザーからみたre:Inventのこれまでと今後
 
Ecsとlambdaのバッチ処理
Ecsとlambdaのバッチ処理Ecsとlambdaのバッチ処理
Ecsとlambdaのバッチ処理
 
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
[db tech showcase Tokyo 2016] A25: ACIDトランザクションをサポートするエンタープライズ向けNoSQL Databas...
 
Japan elasticusergroup01 Acroquest
Japan elasticusergroup01 AcroquestJapan elasticusergroup01 Acroquest
Japan elasticusergroup01 Acroquest
 
【IVS CTO Night & Day】AWS re:Invent 2017 振り返り
【IVS CTO Night & Day】AWS re:Invent 2017 振り返り【IVS CTO Night & Day】AWS re:Invent 2017 振り返り
【IVS CTO Night & Day】AWS re:Invent 2017 振り返り
 
Microsoft Ignite Fall 2021 Data Platform Update Topics
Microsoft Ignite Fall 2021 Data Platform Update TopicsMicrosoft Ignite Fall 2021 Data Platform Update Topics
Microsoft Ignite Fall 2021 Data Platform Update Topics
 
FutureStack Tokyo 19 -[パートナー講演]アマゾン ウェブ サービス ジャパン株式会社: New Relicを活用したAWSへのアプリ...
FutureStack Tokyo 19 -[パートナー講演]アマゾン ウェブ サービス ジャパン株式会社: New Relicを活用したAWSへのアプリ...FutureStack Tokyo 19 -[パートナー講演]アマゾン ウェブ サービス ジャパン株式会社: New Relicを活用したAWSへのアプリ...
FutureStack Tokyo 19 -[パートナー講演]アマゾン ウェブ サービス ジャパン株式会社: New Relicを活用したAWSへのアプリ...
 
Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2
 
[CTO Night & Day 2019] ML services: MLOps #ctonight
[CTO Night & Day 2019] ML services: MLOps #ctonight[CTO Night & Day 2019] ML services: MLOps #ctonight
[CTO Night & Day 2019] ML services: MLOps #ctonight
 
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
 
リクルートにおけるFirefox OSアプリへの取り組み ~0.8人月でできるアプリ!?~
リクルートにおけるFirefox OSアプリへの取り組み ~0.8人月でできるアプリ!?~リクルートにおけるFirefox OSアプリへの取り組み ~0.8人月でできるアプリ!?~
リクルートにおけるFirefox OSアプリへの取り組み ~0.8人月でできるアプリ!?~
 
CloudFormationを使って複数のSAP環境を構築してみよう
CloudFormationを使って複数のSAP環境を構築してみようCloudFormationを使って複数のSAP環境を構築してみよう
CloudFormationを使って複数のSAP環境を構築してみよう
 
(2017.6.2) Azure HDInsightで実現するスケーラブル分析環境
(2017.6.2) Azure HDInsightで実現するスケーラブル分析環境(2017.6.2) Azure HDInsightで実現するスケーラブル分析環境
(2017.6.2) Azure HDInsightで実現するスケーラブル分析環境
 
GraphQL入門 (AWS AppSync)
GraphQL入門 (AWS AppSync)GraphQL入門 (AWS AppSync)
GraphQL入門 (AWS AppSync)
 
db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也
 
Realm platform2019
Realm platform2019Realm platform2019
Realm platform2019
 
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
 
基調講演「データのグループウェア化」
基調講演「データのグループウェア化」基調講演「データのグループウェア化」
基調講演「データのグループウェア化」
 
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。 複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
複数DBのバックアップ・切り戻し運用手順が異なって大変?!運用性の大幅改善、その先に。。
 

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

  • 2. CONFIDENTIAL 発表内容 @copylight.2017 Tierline .inc all right reserved. 2  自己紹介  開発履歴  背景  協力会社、どんなシステム?  設計:システム構成  デモ  実装方法  まとめ  質問タイム
  • 3. CONFIDENTIAL 自己紹介  松下誠和  株式会社ティアライン  代表取締役  プログラマー  システム開発、クラウドサービス(POS、ホテルPMS)、教育、コンサルティング  37歳  プログラマ歴12年  好きなプログラミング言語  Scala,Java ->固くて扱いやすい言語ならOK  趣味  筋力トレーニング  中年太り → ダイエット効果を狙う → 結果:筋肉増量、2kg増える @copylight.2017 Tierline .inc all right reserved. 3
  • 4. CONFIDENTIAL 注意点 @copylight.2017 Tierline .inc all right reserved. 4 松下個人、もしくは、株式会社ティアラインの見解であり Scala関西グループとは関係ありません
  • 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. 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. CONFIDENTIAL 背景:協力会社 @copylight.2017 Tierline .inc all right reserved. 7 株式会社ウィルコム 西宮甲子園浜 加工製造業務 保管業務 年間売上16億 物流倉庫管理 システム Rapide S 2016年初頭… ある相談が
  • 8. CONFIDENTIAL 背景:どんな業務システム?? @copylight.2017 Tierline .inc all right reserved. 8 入庫 在庫 出庫 商品 商品 商品 200 150 180 50 商品 注:説明のために簡略化してます 入庫荷役料 出庫荷役料保管料:3期制+ + 請求書
  • 9. CONFIDENTIAL @copylight.2017 Tierline .inc all right reserved. 9 Producer-Consumerパターン プロデューサ・コンシューマ 生産者 データストック 消費者 これは…デザインパターン?! 注:詳しくはGoFオブジェクト指向における再利用のためのデザインパターン
  • 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. CONFIDENTIAL @copylight.2017 Tierline .inc all right reserved. 11 1 years later… (1年後)
  • 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. CONFIDENTIAL ソースコード1 @copylight.2017 Tierline .inc all right reserved. 13 React.js Form Validator
  • 14. CONFIDENTIAL ソースコード2 @copylight.2017 Tierline .inc all right reserved. 14 Action API Reactコンポーネントから呼ばれる クライアントサイドのActionから サーバサイドのAPIを直接呼べる (JSONも自動変換)
  • 15. CONFIDENTIAL まとめ @copylight.2017 Tierline .inc all right reserved. 15 良いところダメなところ 型に守られているから安心 拡張性が高いライブラリ Getter Setterがないのはうれしい object, case classは便利 関数をオブジェクトとして使える ソースコード量が少なくて済む 堅牢で保守性が高く保つことができる コンパイル遅い プログラマ少ない わかりにくい構文がある 業務システムでも十分使える むしろ積極的に使っていくべき!! 知ってほしいところ Prayframework以外もある Scalatra,Scalate,Squeryl TomcatとかJettyでも動く
  • 16. CONFIDENTIAL 告知 @copylight.2017 Tierline .inc all right reserved. 16 エンジニア絶賛募集 Scala案件 Tierlineまで
  • 17. CONFIDENTIAL @copylight.2017 Tierline .inc all right reserved. 17 Question time (ご質問どうぞ)