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.

RUNNING Smalltalk - 実践Smalltalk

1,971 views

Published on

第75Smalltalk勉強会の資料( http://www.smalltalk-users.jp/Home/gao-zhi/dai75kaismalltalkbenkyoukai ) クラウドとSmalltalkで日本発の世界向けサービスを始める方法
中古建設機械販売検索サービス https://allstocker.com の話です。

Published in: Technology
  • Be the first to comment

RUNNING Smalltalk - 実践Smalltalk

  1. 1. SORABITO SERIES RUNNING Smalltalk実践Smalltalk 第75回 Smalltalk勉強会 クラウドとSmalltalkで 日本発の世界向けサービスを始める方法 Sho Yoshida SORABITO株式会社
  2. 2. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 知らない方のために RUNNING LEAN アッシュ・マウリャ (著), 渡辺 千賀 (解説) 出版 オライリー・ジャパン
  3. 3. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. プロフィール • 吉田 翔(よしだしょう) • 1986年生まれ • Smalltalker twitter: @newapplesho facebook: newapplesho
  4. 4. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalkの人に なって他の言語が できなくなった Smalltalk大好きって言いすぎたら PHPやるんですね・・・。 Rubyやるんですね・・・。 Javaやるんですね・・・。
  5. 5. Smalltalkって最高ですね Always Shooting https://www.flickr.com/photos/alwaysshooting/15315019007/
  6. 6. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalkって最高ですね 最近本も出版されている
  7. 7. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalkって最高ですね http://www.softumeya.com/pyonkee/ja/ アプリだってリリースされている
  8. 8. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalkって最高ですね https://www.kickstarter.com/projects/1520902870/canadian-smalltalk-competition Smalltalk is a revolutionary language that has the power to transform the future of software development.
  9. 9. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalk 活用事例 今日のSmalltalk勉強会
  10. 10. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalkの活用事例(Pharo) http://pharo.org/success
  11. 11. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalkの活用事例(VisualWorks) http://smalltalk.cincom.jp/main/successes/
  12. 12. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. いっぱいありますね でも・・・
  13. 13. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Henry Burrows https://www.flickr.com/photos/foilman/8015746124/ どこで使われているの?え! ある勉強会の懇親会での出来事
  14. 14. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalkで クラウドサービス つくるぞ
  15. 15. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 建設機械・重機・車両の流通を 支えるプラットフォーム Mikata https://mikatacloud.com 2014年9月一般公開
  16. 16. 第68回 Smalltalk勉強会 • 2014年9月に発表 • あれから半年経ちました
  17. 17. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. トップページが変わりました
  18. 18. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. メディアに掲載されました 2015年01月12日の日経経済新聞 朝刊の新興中小企業欄
  19. 19. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Henry Burrows https://www.flickr.com/photos/foilman/8015746124/ Smalltalkなんだってそうなんだ
  20. 20. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ただ誰でも参加できるわけではない 簡単にいうと クローズドな中古売買サービス (建設機械レンタル会社と貿易会社専用) Mikata グループウェアに近いサービス
  21. 21. もっと自由に使いたい Always Shooting https://www.flickr.com/photos/alwaysshooting/15315019007/
  22. 22. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ALLSTOCKER 世界中の建設機械のオンラインマーケットプレイス 2015年2月末 新しいサービスを始めました https://allstocker.com
  23. 23. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 全世界向け クラウドサービス
  24. 24. 建設機械って?
  25. 25. 26 ブラジル
  26. 26. 27 スイス
  27. 27. エジプト
  28. 28. インドネシア
  29. 29. 新品は高額… ¥16,000,000-
  30. 30. 中古機は人気! ¥6,000,000-
  31. 31. 欲しい中古建設機械は なかなか見つからない
  32. 32. インターネットが活用されていない
  33. 33. 探すのが非常に困難
  34. 34. 一方、売り手もお客さんを探している…
  35. 35. ALLSTOCKER
  36. 36. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ALLSTOCKER 世界中の建設機械のオンラインマーケットプレイス 経済産業省 「先端課題対応型ベンチャー事業化支援等事業」に採択
  37. 37. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Henry Burrows https://www.flickr.com/photos/foilman/8015746124/ きっとSmalltalkだよだよね
  38. 38. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. コードネーム Mikata Asia
  39. 39. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Henry Burrows https://www.flickr.com/photos/foilman/8015746124/ 1週間で作ってねえ 企画を含めて2週間で作らなければならなかった
  40. 40. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. どう作るか • サービスの拡大に合わせてスケールできるクラウドサー バーを利用 • Smalltalkのダイナミックな開発能力を利用する • 機械毎に異なる情報を保存するためNoSQLを活用 • 写真はオリジナルファイルだけを保存 Mikataのノウハウをベースに開発 詳しくは第68回Smalltalk勉強会の資料にて
  41. 41. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 利用しているサービス • EC2(仮想サーバー) • ELB(ロードバランサー) • Route53(DNS) • Amazon RDS for PostgreSQL(RDB) • Amazon DynamoDB(NoSQL) • S3(写真,ログ等のストレージ)
  42. 42. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Region Availability Zone Availability Zone PostgreSQLPostgreSQL RDS PostgreSQL PostgreSQLPostgreSQL RDS PostgreSQL DynamoDB S3 Amazon EC2 Amazon EC2 Internet Amazon Route 53 Hosted Zone Elastic Load Balancing SSL SSL SSL SSL 構成図
  43. 43. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Allstocker を支えるSmalltalk 開発言語 Smalltalk(Pharo 3.0) Web Framework Seaside 3.1 + mushtache RDB Glorp(PostgreSQL) ログ Nagare(Fluentd) NoSQL AWS SDK for Smalltalk
  44. 44. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. AWS SDK
  45. 45. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. AWS SDK for Smalltalkのインストール Gofer new url:'http://smalltalkhub.com/mc/newapplesho/aws-sdk-smalltalk/main'; package: 'ConfigurationOfAWS'; load. (Smalltalk at: #ConfigurationOfAWS) load. サービスで使えば、メンテナンスもされるはず
  46. 46. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Allstocker をCSS Framework SeasideのBoostrapパッケージは使わない Allstocker Mikata 独自のCSS Framework
  47. 47. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. その他 • 画像やCSSは外部url参照 • メール送信はUTF8非対応クライアントもあるためRubyに 任せる • メールを送信はSendGridを活用 • 画像アップロードやリサイズはNginxに任せる(Smalltalkで 処理しない)
  48. 48. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Seasideのデザイン反映プロセス モック 作成 レビュー Seaside リリース HTMLをSmalltalkに変換する作業 非常に大変
  49. 49. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. トップページのデザインは mushtache(テンプレート)で対応
  50. 50. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Mustache {{^isLoggedIn}} <p> <a href="{{baseUrl}}signup" class="btn btn-small btn-green">新規会員登録(無料)</a> <a href="{{baseUrl}}login" class="btn btn-small btn-blue">ログイン</a> </p> {{/isLoggedIn}}
  51. 51. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Mustacheのインストール Gofer it url: 'http://mc.stfx.eu/Neo'; package: 'Neo-JSON-Core'; load. Gofer it smalltalkhubUser: 'NorbertHartl' project: 'Mustache'; configurationOf: 'Mustache'; loadStable.
  52. 52. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Mustacheの利用 value := Dictionary new. value at:'isLoggedIn' put: self session isLoggedIn. "テンプレートへの適用" result := (MustacheTemplate on: templateString) value: value.
  53. 53. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ローカライズ 日本語 英語
  54. 54. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. そういえば自分ローカライズやってことないや https://twitter.com/newapplesho/status/573645403356143616
  55. 55. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. NaturalLanguageTranslator 空っぽ!! よくあること
  56. 56. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Gettextを利用 http://smalltalkhub.com/#!/~PharoExtras/Gettext/ ConfigurationOfGettext load. http://www.gnu.org/software/gettext/gettext gettextは国際化と地域化に対応するライブラリ構成要素の一つであり、様々な地域の 言語に対応した地域化ソフトウェアを開発する際に用いられる。(Wikipediaより) Pharoの拡張機能 パッケージのロード
  57. 57. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. SeasideでGettextを使うために StringクラスにローカルID(ja, en)を指定して 翻訳するためのmethodを用意する String >> mtranslatedTo: Hello mtranslatedTo: ja . こんにちは 完成イメージ
  58. 58. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Gettextの利用方法 GetTextExporter exportTemplateIncluding:#mtranslatedTo:. TextDomainManager registerCategoryPrefix: 'Mikata-Asia' domain: 'Mikata'. 設定 テンプレートファイル(potファイル)を出力 #mtranslatedTo: を送ったメッセージもテンプレートに出力される
  59. 59. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Gettextの利用方法 pot ja.po en.po en.mo ja.mo poエディターなどで翻訳 テンプレート バイナリファイル Pharoに読み込む Pharo
  60. 60. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Gettext Translation Editer https://poedit.net/
  61. 61. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Gettextの利用方法 GetTextTranslator reset. バイナリファイルの読み込み locale/<localID>/LC_MESSAGES/Mikata.mo バイナリファイルの配置 XX.app/Contents/Resources/locale/ja/LC_MESSAGES/Mikata.mo 例
  62. 62. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Gettextの利用方法 String>> mtranslatedTo: isoString ^ (GetTextTranslator availableForLocaleID: (LocaleID isoString: isoString) ) translate: self inDomain: 'Mikata'. Stringクラスの拡張
  63. 63. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Seasideのセッション管理の設定 app := (WAAdmin register: self asApplicationAt:'app') preferenceAt: #sessionClass put: MASession; yourself. app preferenceAt: #trackingStrategy put: WACookieForBrowserIPForCrawlerTrackingStrategy new. 公開タイプで検索機能があるようなサイトの場合は 上記のようにするとよい botにセッション枯渇をされないようにする
  64. 64. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. サービス開始直前 適用後適用前
  65. 65. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. パーマリンク https://allstocker.com/app/ja/machinery/dozer/539fffd185674bec813be5228d25d306
  66. 66. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. パーマリンク • Mikataと違い、オープンなシステムなのでURLは非常に 重要になってくる • Seasideらしさは失われつつある(むしろ別のがい い・・・コソ)
  67. 67. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ソースコード管理 • Metacello + FileTreeかつGitを使って管理 • ConfigurationOfMikataA を作りSmalltalk Hubなどから Allstockerに必要なパッケージをinstall可能にする • BaselineOfを継承したBaselineOfMikataAと作成し、 ローカルのGitリポジトリからAllstockerのコードを読み 込む
  68. 68. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ソースコード管理 FileTreeのパッケージを順番に読み込む
  69. 69. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ソースコード管理 Smalltalker Git Smalltalker Git pull request pull
  70. 70. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. デプロイ Amazon EC2 Instance S3 S3(ストレージサービス)からEC2にデプロイ 約1日1回のペースでリリース
  71. 71. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
  72. 72. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 60各国以上からのアクセス 日本最大の在庫掲載台数
  73. 73. セントビンセント・グレナディーン https://www.flickr.com/photos/jimg944/113546501/
  74. 74. アジア圧倒的No.1 2015年中に
  75. 75. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Allstocker • 豊富な品数 • 業界にはなかった充実な機能 • 安心・安全な取引の実現 もっとも重たいものを扱うベンチャー
  76. 76. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 今後やりたいこと • エッジロケーションの利用 • 全文検索 • ログ解析 • Web Frameworkの見直し • モバイルアプリ対応 • Angular.jsの導入
  77. 77. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 全文検索について • RDS(PostgreSQL)は日本語全文検索をサポートしていな い • 全文検索を対応するためにElasticSearchを導入予定 GitHubとかに使われているらしいです
  78. 78. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ログ解析 • 現在fluentd(Nagare)を使ってログは収集しているが、エラー以外 は活用できていない • Kibanaによりメンバー全員が簡単にユーザーの分析を把握でき るようにする
  79. 79. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Web Frameworkの見直し • 継続であるためAP間のセッションの共有化が難しい • 継続を使いたくても使えないときが多くなってきた • だいぶ古くなっている(特にCanvas周り) • 画面周りの自動テストが難しい 軽量かつStateless Web Frameworkが欲しい
  80. 80. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
  81. 81. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
  82. 82. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. DBまわりなんとかしたい • PostgreSQLのドライバーが古すぎる • O/Rマッピングが苦行(イケていない) • マイグレーションが大変
  83. 83. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. CI環境の構築 Git 1日の価値提供の回数を増やしたい Pharo本家でやっているけど どうやるんでしょうか
  84. 84. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. お知らせ
  85. 85. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. SORABITO Co., Ltd.
  86. 86. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Henry Burrows https://www.flickr.com/photos/foilman/8015746124/ Smalltalkだよねだよね
  87. 87. Smalltalkerのみなさん助けてください
  88. 88. Allstocker 開発のためのSmalltalker募集 Smalltalker以外のプログラマーも募集しております
  89. 89. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalkは 学習コストが 低い言語です 他言語のユーザーも歓迎です
  90. 90. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 外国人の方も歓迎です
  91. 91. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 外部で 協力もありです
  92. 92. Smalltalkerをもっと集めたい Smalltalkerを増やしたい Always Shooting https://www.flickr.com/photos/alwaysshooting/15315019007/
  93. 93. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 募集職種 • Smalltalker • プログラマー • モバイルアプリケーションエンジニア • デザイナー • インフラエンジニア
  94. 94. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. こんな方探しています • 東南アジアの自然言語ができるエンジニア • UI/UXに詳しい方 • セキュリティ面で知識のある方 • Allstockerのマーティング等をやってみたい方
  95. 95. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
  96. 96. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
  97. 97. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
  98. 98. 気になる方はメールください smalltalker@sorabito.com
  99. 99. 世界最大の働く機械の プラットフォームの実現

×