More Related Content
Similar to 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
Similar to 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦 (20)
More from Sho Yoshida (14)
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
- 1. The Passionate Smalltalker:
情熱Smalltalker
SmalltalkとAWSでクラウドサービスを実現するための挑戦
SORABITO株式会社 / 吉田 翔
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 2. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
知らない方のために
情熱プログラマー
Chad Fowler (著), でびあんぐる (翻訳)
出版 オーム社
- 3. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
プロフィール
• 吉田 翔(よしだしょう)
• 1986年生まれ 28歳
• Smalltalker
• 昔,東京の会社のSEだった
• 趣味 昼寝とピアノtwitter: @newapplesho
facebook: newapplesho
- 7. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
30歳までにやりたかった夢
自分たちで考えたサービスを作りたい
- 8. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
Smalltalkerとしての自分
学生時の研究テーマの実装から予約システムなどで
Smalltalkを使い続けてきた
Smalltalkは実戦でも使える
Smalltalkって最高!
もっと日本のSmalltalkの事例を増やしたい
- 11. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
建設機械について
• 油圧ショベル(ユンボ)、ブルドー
ザー、ダンプなど建設現場で使う機械
• 主に建設会社や建設機械レンタル会社
が所持しています
• 新品はすぐには手に入らない
• 生産調整もあって中古の建設機械は重
要(売れます)
• 世界中のどこかで建設機械は使われて
いる
- 12. 市場を選ぶ
• 建設機械業界はIT活用を考え始めている
• レンタル会社が国内の4割の機械を保有している
• レンタル会社は、レンタル・修理・販売・中古機械の
買取を行っている
建設機械の売買について注目
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 18. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
解決案
全国の買取会社に対して査定を
依頼・管理できるクラウドサービス
Mikata
- 22. 2.複数の買取会社へ相見積可能
ウェブでやり取りすることで記録に残る
電話は成約直後だけ
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 25. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
3.案件が管理できる
査定案件が管理できるため、お客様のフォローが容易。
管理者も閲覧することで営業担当のサポートも可能。
- 27. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
どうやって進めていくか
• リーンスタートアップを実践
• 2枚の画面フロー図と10枚のスライドでサービス提案
• アイディアの修正を繰り返し行い,サービス利用者が
見つかるまで作らない
- 28. 査定希望の機械を選択してください
お客様名○○様
ユンボ
形式
PC-28UU
保管場所愛知
期限4/16
担当○○
備考買い替えによる
・査定買取会社録質問2014/03/31
お客様より2014/03/31
希望金額確2014/03/31
希望金額確・・営業担当者・記録に担当・実働時間も・お客様に対MIKATA
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
概要マネージメントサービス「ミカタ」営業担当者様のフロー
作成日2014/04/09 作成者吉田 翔更新者更新日
MIKATA
ID
pass
login
login
オリジナルアカウントで
ログイン
MIKATA
今月は○○件査定中
査定を依頼する
依頼中案件一覧
成約案件処理
menu
MIKATA
ユンボ
ダンプクレーン
溶接機草刈機発電機
select machine
MIKATA
ユンボ査定
メーカー
形式
稼働時間
保管場所
次へ
order form
パスワードを忘れた人はこちら
MIKATA
状況編集
いすず
order list
査定一覧
査定レポート
更新日
更新日
更新日
更新日
更新日
更新日
溶接機
2014/03/
31
2014/03/
31
コマツ
編集
編集
PC-120
2
形式
4
依頼中
2014/03/
31
カテゴリ
草刈機
編集
ユンボ
メーカー
HMA-120
0
相見積
3 依頼中
PC-28UU
査定依頼日
コマツ
no
1
成約
デンヨー
編集
ダンプ
編集
2014/03/
31
5
2014/03/
31
xxx
編集
ゼノア
ユンボ
成約
MIKATA
ユンボ査定
confirm and Q A
買取
カテゴリ
ゴム
キャタ
情報の修正
記録質問査定結果
Q.旋回モーターに漏れはありますか?
Q.引き取り条件を教えてください
Q.希望金額はありますか
ユンボ査定
confirm 記ページめくりで案件を閲覧可能
・ソート可能
・印刷もできるとよい?
・査定に必要な最低入力項目を容易
・機械に合わせ入力フォームを変更する
・入力チェック
・質問のやり取りはウェブ上で可能にする
・質問と回答を全ての買取会社に公開する
更新日
更新日
no 査定依頼日
2014/03/
状況形式
報告
4 2014/03/
31
カテゴリ
草刈機
メーカー
HMA-120
0
成約
ゼノア
成約案件処理
報告
Copyright © 2014 AOKI Development Co., Ltd All Rights Reserved. 社外秘
select
- 30. Nagoya 7/4
Sendai
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
Mikataの営業
6/19
6/24
6/24
6/26
7/1
7/3
Matsuzaka
Tokyo
Fukuoka
Wakayama
Wakayama
- 33. どうやって作るか
• サービスの拡大に合わせてスケールできるクラウドサー
バー(AWS)を利用
• 少数メンバーで運用するためのサービスを活用
• 機械毎に異なる情報を保存するためNoSQLを活用
• 写真はオリジナルファイルだけを保存
• トランザクションメールを配信
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 34. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
AWSで利用したサービス
• EC2(仮想サーバー)
• ELB(ロードバランサー)
• Route53(DNS)
• Amazon RDS for PostgreSQL(RDB)
• Amazon DynamoDB(NoSQL)
• S3(写真,ログ等のストレージ)
- 35. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
Amazon DynamoDB
• キー・バリュー型のNoSQLデータベースサービス
• 管理不要で信頼性が高いデータベース
• データセンター間の自動同期レプリケーション
• 高速なアクセスが可能
• SSDを利用している
• ストレージ容量制限がない
• プロビジョンスループットだけを指定するだけ
• API(SDK)経由で利用できる
- 36. Availability Zone Availability Zone
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
Region
PPoossttggrreeSSQQLL
RDS
PostgreSQL
PPoossttggrreeSSQQLL
RDS
PostgreSQL
DynamoDB
S3
Amazon EC2
Amazon EC2
Internet
Amazon Route
53 Hosted Zone
Elastic Load
Balancing
SSL
SSL
SSL
SSL
構成図
同期同期
- 39. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
Amazonさんに聞いてみた
SmalltalkでAWS(DynamoDB)使い
たいけど,どうしたらいいですか?
MongoDBならパッケージが
あるからいいんですけど・・・
※Smalltalkには
あのKent Beckが作った
MongoDBのパッケージがある
- 40. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
Amazonさんの回答
https://www.flickr.com/photos/mendhak/4850482798/
REST APIを叩くのじゃ
Smalltalkならできるはず
- 43. 別にSmalltalkしかできないわけじゃないんだからね
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
なんでSmalltalk?
• Java プロトタイプ作りで例外ばっかり考えたくない
• PHP デバッグしながら開発できるか不安
• Ruby よい。でもチューニング方法詳しくない
• Scala よい。あこがれ。学習時間がなかった。
• Perl そんなに詳しくない。
• Python そんなに詳しくない。
• Node.js スケールが心配。
I♥️
Smalltalk
すばやく短い期間かつ仕様変更歓迎でやるには
言語は好きなものを使いたい
- 44. The Passionate Smalltalker:
情熱Smalltalker
SmalltalkとAWSでクラウドサービスを実現するための挑戦
愛せよ、さもなくば捨てよ
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 45. SmalltalkでAWS SDKを攻略していみる
AWS Signature Version 4
多くのAWSサービスとやり取りするとき必要
Signature version 4 signing process
http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html
ページをよく読んでSmalltalkで作ってみる
(英語ツラい)
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 46. AWS Signature Version 4 for Smalltalk
SHA256が必要
PharoにはなぜかSHA1しかない
そんなこともあるさ、気にするな
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
冷静にパッケージを追加で対応
MCHttpRepository
location: 'http://smalltalkhub.com/mc/Cryptography/Cryptography/main'
user: ''
password: ''
- 48. SmalltalkでDynamoDB HTTP APIを攻略する
• SSL接続
• URLは全て/。URLで処理内容を指定しない
• ヘッダーのx-amz-targetで処理内容を指定する
• エンドポイントはデーターセンターの場所を指定
• JSON形式で送信、JSON形式で受信
• ヘッダーにx-amz-dateというISO 8601形式(例: 20130315T092054Z)の
日付を入れなければならない
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
DynamoDB HTTP APIについて
詳しくは
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/MakingHTTPRequests.html
- 49. AWS DynamoDB Client for Smalltalk
ISO 8601形式の日付フォーマット出力が必要
Pharoにはなぜか標準装備されていないっぽい
(いつからないの?
知らないだけであるかも。
日付系クラスどうにかして欲しい)
そんなこともあるさ、気にするな
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 50. AWS DynamoDB Client for Smalltalk
文字列データはUTF8でなければならない
Pharoの文字列をマッピングする際に
UTF8にしなければならない
いつものことさ、気にするな
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 51. AWS DynamoDB for Smalltalk
低レベルAPIの必要なところだけ実装
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 52. 例:DynamoDBのテーブルの一覧
dy := DynamoDBRowClient new.
dy awsConfig accessKeyId:'アクセスキー'.
dy awsConfig secretKey:'シークレットキー'.
!
operationName := #ListTables.
requestBody := '{}'.
resp := dy operationName: operationName contents: requestBody.
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 53. AWS DynamoDB for Smalltalkを気をつけること
API作成だけでお金がかかってしまう
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 54. API作成の際にはDynamoDB Localがおすすめ
商用では使えない
APIの確認程度ぐらいしか使えない
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
DynamoDB Local
Javaで動くローカル版DynamoDB
詳しくは
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/
Tools.DynamoDBLocal.html
- 55. DynamoDB Localも対応しております
dy := DynamoDBRowClient new.
dy awsConfig accessKeyId:'アクセスキー'.
dy awsConfig secretKey:'シークレットキー'.
dy awsConfig useSSL: false.
dy endpoint: ‘localhost:8000'.
!
operationName := #ListTables.
requestBody := '{}'.
resp := dy operationName: operationName contents: requestBody.
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 56. PCとmobile対応
データベースメールバッチ
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
システム構成
サービスサービスロジック
ウェブサービス
ブラウザ
営業担当者
取引先担当者
クラスタリングは検討
RDB(MultiAZ), DynamoDB
ログ記録
お客様情報を記録する
簡易API作成Fluentd
RDSとの接続のために
Stunnelを用いる
fileupload module
image filter
冗長化サーバ
ログの保存先はS3
画像の格納先 S3
- 58. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
SeasideとHTML5
Seasideのページによると
WAComponent updateRoot:aHtmlRoot
super updateRoot: aHtmlRoot.
aHtmlRoot beHtml5.
でもXHTMLのよけいな物が残る
そんなこともあるさ、気にするな
- 59. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
SeasideとHTML5
不要な情報は消せばいい
WAComponent updateRoot:aHtmlRoot
super updateRoot: aHtmlRoot.
aHtmlRoot beHtml5.
aHtmlRoot htmlAttributes removeKey:'xml:lang';
at:'lang' put:'ja';
removeKey: 'xmlns'.
self setHtmlHeader: aHtmlRoot.
- 60. SeasideでSSLを攻略する
• Mikataは常時SSL。Seasideのセッションキーを
SSL通信時のみ送信する(セッションジャック
対策)
• セッションの固定化対策をすること
WAComponent (class)initialize
self initialize
| app |
app := (WAAdmin register: self asApplicationAt:'app')
preferenceAt: #sessionClass put: MSession;
yourself.
app preferenceAt: #serverProtocol put: 'https'.
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 61. SmalltalkでRDS for PostgreSQLを攻略する
• RDS for PostgreSQLへの接続はSSL
• PostgresV2はSSL接続対応していない
• Stunnel(SSL Proxy)を使って対応
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 64. その他
• 画像やcssは外部url参照(Smalltalk imageは軽くする)
• 業界的にメール送信はUTF8非対応クライアントもあるた
めRubyに任せる
• メールを送信はSendGrid(https://sendgrid.kke.co.jp/)を
活用
• 画像アップロードやリサイズはNginxに任せる(Smalltalkで
処理しない。Smalltalkに優しくする)
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 65. コマンドライン操作も可能になった
GUIを立ち上げなくてもログレベルだって変更できる
./pharo.sh ./Pharo3.0.image eval NgSettings default logLevel: 0.
Smalltalk snapshot: true andQuit: true.
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
Pharo 3.0でかわったこと
GUIなし起動方法がかわった
nohup ./pharo.sh ./Pharo3.0.image --no-quit /dev/null 21 /dev/null
- 66. Smalltalkで
クラウドサービスを
公開
2014年7月試験運用開始
2014年9月一般公開
https://mikatacloud.com/
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 69. The Passionate Smalltalker:
情熱Smalltalker
SmalltalkとAWSでクラウドサービスを実現するための挑戦
終わりのない道
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 70. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
Seasideについて
• 大きくなり過ぎ
• だいぶ古くなっている(特にCanvas周り)
• 継続であるためAP間のセッションの共有化が難しい
• 画面周りの自動テストが難しい
軽量かつStateless Web Frameworkが欲しい
- 71. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
DB周りについて
• PostgreSQLのドライバーが古すぎる
• O/Rマッピングが苦行(イケていない)
• MySQLもそろそろ使いませんか?(SmalltalkHubにはあるけど修羅な
気が・・・)
• マイグレーションが大変
梅澤さん曰く,「VisualWorksならありますよ」
- 74. The Passionate Smalltalker:
情熱Smalltalker
SmalltalkとAWSでクラウドサービスを実現するための挑戦
昨日よりよく
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 78. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
他のCloudは?
使う機会がないので予定なしです
ご希望があればSDK作ります
- 79. 感想
• Smalltalkはクラウドサービスでも使える
• Web Framework周りを充実すれば、ユーザー向上も狙
えると思う
• Scalaなどを勉強してSmalltalkもう一度学び直したい
• Smalltalkエバンジェリストへの道は遠い
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 80. The Passionate Smalltalker:
情熱Smalltalker
SmalltalkとAWSでクラウドサービスを実現するための挑戦
One more thing…
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
- 81. future := [ self company add: Smalltalker ].
future value.
10月より新たなSmalltalkerがSORABITOにジョイントします
Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.