Publicidad
Publicidad

Más contenido relacionado

Presentaciones para ti(20)

Similar a 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦(20)

Publicidad
Publicidad

情熱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
  4. SORABITO株式会社(http://www.sorabito.com) • サービス企画・開発・運営 • 相見積業務改善サービス「Mikata(ミカタ)」 Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. • ウェブシステム開発 • ウェブ制作・ウェブマーケティング
  5. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. メンバーよりMacが多い
  6. 開封の儀をするとシリーズがそろう Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  7. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. 30歳までにやりたかった夢 自分たちで考えたサービスを作りたい
  8. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. Smalltalkerとしての自分 学生時の研究テーマの実装から予約システムなどで Smalltalkを使い続けてきた Smalltalkは実戦でも使える Smalltalkって最高! もっと日本のSmalltalkの事例を増やしたい
  9. Smalltalkで クラウドサービスを 作ってみよう やっちまったな・・・・ Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  10. 建設機械相見積もりクラウドサービス Mikata https://mikatacloud.com/ Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  11. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. 建設機械について • 油圧ショベル(ユンボ)、ブルドー ザー、ダンプなど建設現場で使う機械 • 主に建設会社や建設機械レンタル会社 が所持しています • 新品はすぐには手に入らない • 生産調整もあって中古の建設機械は重 要(売れます) • 世界中のどこかで建設機械は使われて いる
  12. 市場を選ぶ • 建設機械業界はIT活用を考え始めている • レンタル会社が国内の4割の機械を保有している • レンタル会社は、レンタル・修理・販売・中古機械の 買取を行っている 建設機械の売買について注目 Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  13. レンタル会社の建設機械売買について よくあるご質問 %
  14. ・相見積もりが必要 ・自社保有機だけではなく,客先機械も売買する Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. ' $# #%
  15. !
  16. 相見積もりの問題 • 営業担当者の貴重な時間が少なくなり,他の営業活動 の機会が損なわれる • 何度も同じ質問を返答することがある • メールの誤送信の可能性 Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  17. メールサーバーの容量が小さいことが多々あり Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. 写真の送付作業について リサイズメール DRYじゃない
  18. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. 解決案 全国の買取会社に対して査定を 依頼・管理できるクラウドサービス Mikata
  19. サービスの特徴 1. いつでもどこでも入力項目に従うだけで利用可能 2. 複数の買取会社に相見積もり可能 3. 案件の管理・マネージメントができる 4. 新たなソフトウェアは不要 Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  20. 1.ウェブからいつでもどこでも利用可能 機械ごとに査定に必要な情報を入力するだけ Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  21. 1.ウェブからいつでもどこでも利用可能 Mikata 写真はそのままアップロード。 リサイズ作業は「Mikata」にお任せください。 Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  22. 2.複数の買取会社へ相見積可能 ウェブでやり取りすることで記録に残る 電話は成約直後だけ Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  23. Mikata
  24. 2.複数の買取会社へ相見積可能 査定機械の質問・回答画面 Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  25. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. 3.案件が管理できる 査定案件が管理できるため、お客様のフォローが容易。 管理者も閲覧することで営業担当のサポートも可能。
  26. 4.新たなソフトウェアは不要 ミカタ ブラウザで利用可能。 ソフトウェアの更新は不要。常に最新機能が利用可能。 Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  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
  29. Smalltalkで クラウドサービスを はじめてみる https://mikatacloud.com/ Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  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
  31. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. 川にも飛び込む
  32. ※映像は開発途中の画面であるため実際と異なる場合がございます Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. Mikata紹介ビデオ http://youtu.be/dw5wyykigWw
  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 構成図 同期同期
  37. SmalltalkerがAWSを使う際の問題 nodeJS Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. iOS iOS Java Javascript Net PHP Python nodeJS Android Ruby Ruby あれSmalltalkは?
  38. SmalltalkerがAWSを使う際の問題 ないじゃないか! Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  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ならできるはず
  41. AmazonさんのMongoDBへの回答 https://www.flickr.com/photos/mendhak/4850482798/ スケール時に大丈夫? バックアップとか大丈夫? マシン台数いるから費用も大丈夫? Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  42. クラウドサーバー「Mikata」を支えるSmalltalk 開発言語Smalltalk(Pharo 3.0beta) Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. Web Framework Seaside 3.1(継続ベースの Web Framework) O/RマッピングGlorp ログNagare(Fluentd) AWS SDK 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: ''
  47. AWS Signature Version 4 for Smalltalk Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  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
  57. Smalltalk(Seaside)でHTML5を攻略する • Mikataはスマートフォン,タブレット,PC対応 Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. • ウェブブラウザで利用可能 • HTML5を使えばファイルアップロードも可能 • UIはLESSを使って独自CSS Frameworkを構築
  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.
  62. Smalltalkでログを攻略する • @UmejavaさんのNagare(Fluentd)を使いましょう • ソフトウメヤ 梅澤さんありがとうございます! • Fluentdのプラグインを用いてログはS3に出力 https://github.com/mumez/nagare-logger Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. nagare-logger
  63. RDBをNoSQLのハイブリッドの実現 • DynamoDBのクエリは物足りない • NoSQLはスキーマレスが必要なところだけ利用 • スキーマが固定できるのはRDBにマッピングして利用 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.
  67. The Passionate Smalltalker: 情熱Smalltalker Smalltalkプログラマーの幸せへの挑戦 Demo Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  68. Mikata 建設機械・重機・車両の売買に関わる方のための エコインフラシステム「Mikata」 No.1 クラウドサービスを目指します http://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ならありますよ」
  72. 開発力からデプロイ数向上へ Smalltalkのデバッガー開きながら構築するのは最高 • imageを育てることをそろそろやめたい • 「Immutable Infrastructure」みたいに「Immutable Smalltalk Image」を実現したい Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  73. インフラの管理ツールとしての道 • Smalltalkで仮想サーバーをコントロールしたり,inspecterで素早く 状態確認ができたらいいのでは? • SmalltalkならEC2の操作も容易にできる気がする Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. • EC2 for Smalltalk検討中 • AWS CLIはちょっと複雑な気がする
  74. The Passionate Smalltalker: 情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦 昨日よりよく Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  75. Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved. SmalltalkでGCP
  76. 最初にGCPで対応したいサービス Google Cloud DataStore(NoSQL) GCP for Smalltalk作成予定 Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
  77. 実はGCP上ではSmalltalkは動いている 先日某大学の簡易書籍管理システムで Smalltalk(Seaside)を使ったWeb Systemを Google Cloud Compute Engineで動かしている 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.
  82. Smalltalkでクラウドサーバーを使ってみたい方は SORABITO株式会社にご相談ください http://www.sorabito.com Copyright © 2014 SORABITO Co., Ltd. All Rights Reserved.
Publicidad