SlideShare a Scribd company logo
SORABITO SERIES
RUNNING
Smalltalk実践Smalltalk
第75回 Smalltalk勉強会
クラウドとSmalltalkで
日本発の世界向けサービスを始める方法
Sho Yoshida
SORABITO株式会社
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
知らない方のために
RUNNING LEAN
アッシュ・マウリャ (著), 渡辺 千賀 (解説)
出版 オライリー・ジャパン
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
プロフィール
• 吉田 翔(よしだしょう)
• 1986年生まれ
• Smalltalker
twitter: @newapplesho
facebook: newapplesho
RUNNING Smalltalk - 実践Smalltalk
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Smalltalkの人に
なって他の言語が
できなくなった
Smalltalk大好きって言いすぎたら
PHPやるんですね・・・。
Rubyやるんですね・・・。
Javaやるんですね・・・。
Smalltalkって最高ですね
Always Shooting https://www.flickr.com/photos/alwaysshooting/15315019007/
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Smalltalkって最高ですね
最近本も出版されている
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Smalltalkって最高ですね
http://www.softumeya.com/pyonkee/ja/
アプリだってリリースされている
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.
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Smalltalk
活用事例
今日のSmalltalk勉強会
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Smalltalkの活用事例(Pharo)
http://pharo.org/success
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Smalltalkの活用事例(VisualWorks)
http://smalltalk.cincom.jp/main/successes/
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
いっぱいありますね
でも・・・
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Henry Burrows https://www.flickr.com/photos/foilman/8015746124/
どこで使われているの?え!
ある勉強会の懇親会での出来事
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Smalltalkで
クラウドサービス
つくるぞ
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
建設機械・重機・車両の流通を
支えるプラットフォーム
Mikata
https://mikatacloud.com
2014年9月一般公開
第68回 Smalltalk勉強会
• 2014年9月に発表

• あれから半年経ちました
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
トップページが変わりました
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
メディアに掲載されました
2015年01月12日の日経経済新聞 朝刊の新興中小企業欄
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Henry Burrows https://www.flickr.com/photos/foilman/8015746124/
Smalltalkなんだってそうなんだ
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
ただ誰でも参加できるわけではない
簡単にいうと
クローズドな中古売買サービス
(建設機械レンタル会社と貿易会社専用)
Mikata
グループウェアに近いサービス
もっと自由に使いたい
Always Shooting https://www.flickr.com/photos/alwaysshooting/15315019007/
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
ALLSTOCKER
世界中の建設機械のオンラインマーケットプレイス
2015年2月末
新しいサービスを始めました
https://allstocker.com
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
全世界向け
クラウドサービス
建設機械って?
26
ブラジル
27
スイス
エジプト
インドネシア
新品は高額…
¥16,000,000-
中古機は人気!
¥6,000,000-
欲しい中古建設機械は
なかなか見つからない
インターネットが活用されていない
探すのが非常に困難
一方、売り手もお客さんを探している…
ALLSTOCKER
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
ALLSTOCKER
世界中の建設機械のオンラインマーケットプレイス
経済産業省
「先端課題対応型ベンチャー事業化支援等事業」に採択
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Henry Burrows https://www.flickr.com/photos/foilman/8015746124/
きっとSmalltalkだよだよね
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
コードネーム
Mikata Asia
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Henry Burrows https://www.flickr.com/photos/foilman/8015746124/
1週間で作ってねえ
企画を含めて2週間で作らなければならなかった
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
どう作るか
• サービスの拡大に合わせてスケールできるクラウドサー
バーを利用
• Smalltalkのダイナミックな開発能力を利用する
• 機械毎に異なる情報を保存するためNoSQLを活用
• 写真はオリジナルファイルだけを保存
Mikataのノウハウをベースに開発
詳しくは第68回Smalltalk勉強会の資料にて
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
利用しているサービス
• EC2(仮想サーバー)
• ELB(ロードバランサー)
• Route53(DNS)
• Amazon RDS for PostgreSQL(RDB)
• Amazon DynamoDB(NoSQL)
• S3(写真,ログ等のストレージ)
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
構成図
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
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
AWS SDK
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.
サービスで使えば、メンテナンスもされるはず
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Allstocker をCSS Framework
SeasideのBoostrapパッケージは使わない
Allstocker
Mikata 独自のCSS Framework
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
その他
• 画像やCSSは外部url参照
• メール送信はUTF8非対応クライアントもあるためRubyに
任せる
• メールを送信はSendGridを活用
• 画像アップロードやリサイズはNginxに任せる(Smalltalkで
処理しない)
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Seasideのデザイン反映プロセス
モック
作成
レビュー Seaside リリース
HTMLをSmalltalkに変換する作業
非常に大変
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
トップページのデザインは

mushtache(テンプレート)で対応
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}}
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.
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.
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
ローカライズ
日本語 英語
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
そういえば自分ローカライズやってことないや
https://twitter.com/newapplesho/status/573645403356143616
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
NaturalLanguageTranslator
空っぽ!! よくあること
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の拡張機能
パッケージのロード
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
SeasideでGettextを使うために
StringクラスにローカルID(ja, en)を指定して
翻訳するためのmethodを用意する
String >> mtranslatedTo:
Hello mtranslatedTo: ja . こんにちは
完成イメージ
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Gettextの利用方法
GetTextExporter exportTemplateIncluding:#mtranslatedTo:.
TextDomainManager
registerCategoryPrefix: 'Mikata-Asia'
domain: 'Mikata'.
設定
テンプレートファイル(potファイル)を出力
#mtranslatedTo: を送ったメッセージもテンプレートに出力される
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Gettextの利用方法
pot
ja.po
en.po en.mo
ja.mo
poエディターなどで翻訳
テンプレート
バイナリファイル
Pharoに読み込む
Pharo
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Gettext Translation Editer
https://poedit.net/
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
例
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Gettextの利用方法
String>> mtranslatedTo: isoString
	 ^ (GetTextTranslator availableForLocaleID: (LocaleID isoString: isoString) )
	 translate: self
	 inDomain: 'Mikata'.
Stringクラスの拡張
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にセッション枯渇をされないようにする
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
サービス開始直前
適用後適用前
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
パーマリンク
https://allstocker.com/app/ja/machinery/dozer/539fffd185674bec813be5228d25d306
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
パーマリンク
• Mikataと違い、オープンなシステムなのでURLは非常に
重要になってくる
• Seasideらしさは失われつつある(むしろ別のがい
い・・・コソ)
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
ソースコード管理
• Metacello + FileTreeかつGitを使って管理
• ConfigurationOfMikataA を作りSmalltalk Hubなどから
Allstockerに必要なパッケージをinstall可能にする
• BaselineOfを継承したBaselineOfMikataAと作成し、
ローカルのGitリポジトリからAllstockerのコードを読み
込む
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
ソースコード管理
FileTreeのパッケージを順番に読み込む
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
ソースコード管理
Smalltalker
Git
Smalltalker
Git
pull request
pull
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
デプロイ
Amazon EC2
Instance
S3
S3(ストレージサービス)からEC2にデプロイ
約1日1回のペースでリリース
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
60各国以上からのアクセス
日本最大の在庫掲載台数
セントビンセント・グレナディーン
https://www.flickr.com/photos/jimg944/113546501/
アジア圧倒的No.1
2015年中に
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Allstocker
• 豊富な品数
• 業界にはなかった充実な機能
• 安心・安全な取引の実現
もっとも重たいものを扱うベンチャー
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
今後やりたいこと
• エッジロケーションの利用
• 全文検索
• ログ解析
• Web Frameworkの見直し
• モバイルアプリ対応
• Angular.jsの導入
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
全文検索について
• RDS(PostgreSQL)は日本語全文検索をサポートしていな
い
• 全文検索を対応するためにElasticSearchを導入予定
GitHubとかに使われているらしいです
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
ログ解析
• 現在fluentd(Nagare)を使ってログは収集しているが、エラー以外
は活用できていない
• Kibanaによりメンバー全員が簡単にユーザーの分析を把握でき
るようにする
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Web Frameworkの見直し
• 継続であるためAP間のセッションの共有化が難しい
• 継続を使いたくても使えないときが多くなってきた
• だいぶ古くなっている(特にCanvas周り)
• 画面周りの自動テストが難しい
軽量かつStateless Web Frameworkが欲しい
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
DBまわりなんとかしたい
• PostgreSQLのドライバーが古すぎる
• O/Rマッピングが苦行(イケていない)
• マイグレーションが大変
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
CI環境の構築
Git
1日の価値提供の回数を増やしたい
Pharo本家でやっているけど
どうやるんでしょうか
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
お知らせ
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
SORABITO Co., Ltd.
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Henry Burrows https://www.flickr.com/photos/foilman/8015746124/
Smalltalkだよねだよね
Smalltalkerのみなさん助けてください
Allstocker
開発のためのSmalltalker募集
Smalltalker以外のプログラマーも募集しております
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Smalltalkは
学習コストが
低い言語です
他言語のユーザーも歓迎です
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
外国人の方も歓迎です
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
外部で
協力もありです
Smalltalkerをもっと集めたい
Smalltalkerを増やしたい
Always Shooting https://www.flickr.com/photos/alwaysshooting/15315019007/
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
募集職種
• Smalltalker
• プログラマー
• モバイルアプリケーションエンジニア
• デザイナー
• インフラエンジニア
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
こんな方探しています
• 東南アジアの自然言語ができるエンジニア
• UI/UXに詳しい方
• セキュリティ面で知識のある方
• Allstockerのマーティング等をやってみたい方
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
気になる方はメールください
smalltalker@sorabito.com
世界最大の働く機械の
プラットフォームの実現

More Related Content

PDF
愛せよ、さもなくば捨てよ。
PDF
東京Node学園 今できる通信高速化にトライしてみた
PPTX
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
PPTX
FxOSコードリーディングミートアップ#16 Vibration APIも読んでみた
PDF
社内ツールが支えるドリコムの社内勉強会文化 #metabenkyokai
PPTX
Spring I/O 2015 報告
PPTX
Firefox OSアーキテクチャクイックツアー - FxOSコードリーディングミートアップ#21向け追記版
PDF
2014年を振り返る 今年の技術トレンドとDockerについて
愛せよ、さもなくば捨てよ。
東京Node学園 今できる通信高速化にトライしてみた
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
FxOSコードリーディングミートアップ#16 Vibration APIも読んでみた
社内ツールが支えるドリコムの社内勉強会文化 #metabenkyokai
Spring I/O 2015 報告
Firefox OSアーキテクチャクイックツアー - FxOSコードリーディングミートアップ#21向け追記版
2014年を振り返る 今年の技術トレンドとDockerについて

What's hot (20)

PDF
JavaScript.Next Returns
PDF
Java scriptの進化
PDF
ドリコムを支える課金ライブラリを支えるJenkins
PDF
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
PDF
JVM のいろはにほ #javajo
PDF
Ruby way-openstack.keynote
PPTX
Chunked encoding を使った高速化の考察
PDF
ご注文は監視自動化ですか?
PDF
インフラ自動化とHashicorp tools
PDF
JavaScript.Next
PDF
PHPの今とこれから2016
PDF
WebAssemblyのWeb以外のことぜんぶ話す
PPTX
2018/1/30 Django勉強会
PPTX
オタク×Node.js勉強会
PDF
SpringOne 2016 報告 Reactive APIの設計・実装・使用
PDF
Shadow Server on Fluentd at Fluentd Casual Talks #3
PDF
Serfが面白いと俺の中で話題にwwwwww
PDF
ソーシャルアプリを分析してみた
PDF
PHPでのSWF編集とその応用
PDF
ピタゴラなんとかスイッチを作って破壊した話
JavaScript.Next Returns
Java scriptの進化
ドリコムを支える課金ライブラリを支えるJenkins
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
JVM のいろはにほ #javajo
Ruby way-openstack.keynote
Chunked encoding を使った高速化の考察
ご注文は監視自動化ですか?
インフラ自動化とHashicorp tools
JavaScript.Next
PHPの今とこれから2016
WebAssemblyのWeb以外のことぜんぶ話す
2018/1/30 Django勉強会
オタク×Node.js勉強会
SpringOne 2016 報告 Reactive APIの設計・実装・使用
Shadow Server on Fluentd at Fluentd Casual Talks #3
Serfが面白いと俺の中で話題にwwwwww
ソーシャルアプリを分析してみた
PHPでのSWF編集とその応用
ピタゴラなんとかスイッチを作って破壊した話
Ad

Viewers also liked (20)

PDF
Smalltalkと型について
PDF
Smaltalk驚異の開発(私が使い続ける2012年の話)
PDF
今日から使おうSmalltalk
PDF
Smalltalkだめ自慢
KEY
フラットなPHPからフレームワークへ
PDF
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
PDF
Parquet performance tuning: the missing guide
PDF
Scikit learnで学ぶ機械学習入門
PDF
逆説のカスタマーサクセス
PDF
早わかりSmalltalk
PDF
Introduction of Pharo 5.0
PDF
ベトナムでのアジャイルオフショア開発への挑戦
PPTX
The use of blogs in teaching and learning literature in FL
PPTX
Mediación escolar e implantación de un plan de mediación en un centro educativo
PDF
Lluvias en el norte 24.03.17
PDF
kintone Café Akita Vol.1 対面開発
PDF
Gender gap in public speaking
PDF
パケットが教えてくれた ルートサーバが 13個の理由
PPTX
Emergencias oncológicas (Diplomado UniRemington) Parte 4/6
PPT
Quimioterapia paliativa (Diplomado UniRemington) Parte 5c/6
Smalltalkと型について
Smaltalk驚異の開発(私が使い続ける2012年の話)
今日から使おうSmalltalk
Smalltalkだめ自慢
フラットなPHPからフレームワークへ
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
Parquet performance tuning: the missing guide
Scikit learnで学ぶ機械学習入門
逆説のカスタマーサクセス
早わかりSmalltalk
Introduction of Pharo 5.0
ベトナムでのアジャイルオフショア開発への挑戦
The use of blogs in teaching and learning literature in FL
Mediación escolar e implantación de un plan de mediación en un centro educativo
Lluvias en el norte 24.03.17
kintone Café Akita Vol.1 対面開発
Gender gap in public speaking
パケットが教えてくれた ルートサーバが 13個の理由
Emergencias oncológicas (Diplomado UniRemington) Parte 4/6
Quimioterapia paliativa (Diplomado UniRemington) Parte 5c/6
Ad

Similar to RUNNING Smalltalk - 実践Smalltalk (20)

PDF
Mroongaを社内クラウド的なMySQLプラットフォームに標準搭載している話 #groonga
PDF
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
PPTX
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
PDF
初心者にも丸わかり!Soft layeroverlaynetworkの魅力
PDF
リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介
PDF
2015年5月期 AITCオープンラボ 「第二回 デジタルガジェット祭り!」
PDF
第六回コンテナ型仮想化情報交換会_LinuxContainerLivemigrationCRIU
PDF
Automation with SoftLayer and Zabbix
PDF
TV会議をオープンソースで実現!RED5によるストリーミング配信講座
PPTX
技術勉強会(Solr入門編)
PDF
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
PDF
Pepperのアプリ開発について - ABC2015 Summer -
PDF
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
PPTX
オレ流クラウドデザイン
PDF
mod_perlプログラマーがYAPCで語るレガシー開発論
PDF
MT LT 20091209
PDF
ぼっけもんデザイナーへの道
PPTX
SkyWay HandsOn
PDF
rdflintのvscode拡張の紹介とその実装方法
PDF
Jazug-8th: Azure AKS & FIWARE & Robot
Mroongaを社内クラウド的なMySQLプラットフォームに標準搭載している話 #groonga
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
初心者にも丸わかり!Soft layeroverlaynetworkの魅力
リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介
2015年5月期 AITCオープンラボ 「第二回 デジタルガジェット祭り!」
第六回コンテナ型仮想化情報交換会_LinuxContainerLivemigrationCRIU
Automation with SoftLayer and Zabbix
TV会議をオープンソースで実現!RED5によるストリーミング配信講座
技術勉強会(Solr入門編)
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Pepperのアプリ開発について - ABC2015 Summer -
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
オレ流クラウドデザイン
mod_perlプログラマーがYAPCで語るレガシー開発論
MT LT 20091209
ぼっけもんデザイナーへの道
SkyWay HandsOn
rdflintのvscode拡張の紹介とその実装方法
Jazug-8th: Azure AKS & FIWARE & Robot

More from Sho Yoshida (12)

PDF
OpenRestyを用いてイケイケなサービスを作る方法
PDF
Continuous Integration for Pharo Smalltalk Part 2 (Smalltalk and Travis CI)
PDF
今時なウェブ開発をSmalltalkでやってみる?
PDF
Continuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーション
PDF
Elasticsearch for Pharo Smalltalk
PDF
Source Code Management with Pharo Smalltalk - Pharo Smalltalkソースコード管理方法
PDF
AWS SDK for Smalltalk
PDF
How Smalltalker Works
PDF
もしイチゴ農家の園主がSmalltalkの「Seaside」(で作られたシステム)を使ってみたら
PDF
エコSmalltalk
PDF
Iliad or Seaside
PDF
Pharo(Smalltalk)でAPI作りをはじめよう
OpenRestyを用いてイケイケなサービスを作る方法
Continuous Integration for Pharo Smalltalk Part 2 (Smalltalk and Travis CI)
今時なウェブ開発をSmalltalkでやってみる?
Continuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーション
Elasticsearch for Pharo Smalltalk
Source Code Management with Pharo Smalltalk - Pharo Smalltalkソースコード管理方法
AWS SDK for Smalltalk
How Smalltalker Works
もしイチゴ農家の園主がSmalltalkの「Seaside」(で作られたシステム)を使ってみたら
エコSmalltalk
Iliad or Seaside
Pharo(Smalltalk)でAPI作りをはじめよう

RUNNING Smalltalk - 実践Smalltalk

  • 2. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 知らない方のために RUNNING LEAN アッシュ・マウリャ (著), 渡辺 千賀 (解説) 出版 オライリー・ジャパン
  • 3. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. プロフィール • 吉田 翔(よしだしょう) • 1986年生まれ • Smalltalker twitter: @newapplesho facebook: newapplesho
  • 5. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalkの人に なって他の言語が できなくなった Smalltalk大好きって言いすぎたら PHPやるんですね・・・。 Rubyやるんですね・・・。 Javaやるんですね・・・。
  • 7. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalkって最高ですね 最近本も出版されている
  • 8. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalkって最高ですね http://www.softumeya.com/pyonkee/ja/ アプリだってリリースされている
  • 9. 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.
  • 10. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalk 活用事例 今日のSmalltalk勉強会
  • 11. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalkの活用事例(Pharo) http://pharo.org/success
  • 12. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalkの活用事例(VisualWorks) http://smalltalk.cincom.jp/main/successes/
  • 13. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. いっぱいありますね でも・・・
  • 14. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Henry Burrows https://www.flickr.com/photos/foilman/8015746124/ どこで使われているの?え! ある勉強会の懇親会での出来事
  • 15. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalkで クラウドサービス つくるぞ
  • 16. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 建設機械・重機・車両の流通を 支えるプラットフォーム Mikata https://mikatacloud.com 2014年9月一般公開
  • 17. 第68回 Smalltalk勉強会 • 2014年9月に発表 • あれから半年経ちました
  • 18. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. トップページが変わりました
  • 19. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. メディアに掲載されました 2015年01月12日の日経経済新聞 朝刊の新興中小企業欄
  • 20. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Henry Burrows https://www.flickr.com/photos/foilman/8015746124/ Smalltalkなんだってそうなんだ
  • 21. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ただ誰でも参加できるわけではない 簡単にいうと クローズドな中古売買サービス (建設機械レンタル会社と貿易会社専用) Mikata グループウェアに近いサービス
  • 23. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ALLSTOCKER 世界中の建設機械のオンラインマーケットプレイス 2015年2月末 新しいサービスを始めました https://allstocker.com
  • 24. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 全世界向け クラウドサービス
  • 37. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ALLSTOCKER 世界中の建設機械のオンラインマーケットプレイス 経済産業省 「先端課題対応型ベンチャー事業化支援等事業」に採択
  • 38. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Henry Burrows https://www.flickr.com/photos/foilman/8015746124/ きっとSmalltalkだよだよね
  • 39. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. コードネーム Mikata Asia
  • 40. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Henry Burrows https://www.flickr.com/photos/foilman/8015746124/ 1週間で作ってねえ 企画を含めて2週間で作らなければならなかった
  • 41. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. どう作るか • サービスの拡大に合わせてスケールできるクラウドサー バーを利用 • Smalltalkのダイナミックな開発能力を利用する • 機械毎に異なる情報を保存するためNoSQLを活用 • 写真はオリジナルファイルだけを保存 Mikataのノウハウをベースに開発 詳しくは第68回Smalltalk勉強会の資料にて
  • 42. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 利用しているサービス • EC2(仮想サーバー) • ELB(ロードバランサー) • Route53(DNS) • Amazon RDS for PostgreSQL(RDB) • Amazon DynamoDB(NoSQL) • S3(写真,ログ等のストレージ)
  • 43. 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 構成図
  • 44. 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
  • 45. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. AWS SDK
  • 46. 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. サービスで使えば、メンテナンスもされるはず
  • 47. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Allstocker をCSS Framework SeasideのBoostrapパッケージは使わない Allstocker Mikata 独自のCSS Framework
  • 48. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. その他 • 画像やCSSは外部url参照 • メール送信はUTF8非対応クライアントもあるためRubyに 任せる • メールを送信はSendGridを活用 • 画像アップロードやリサイズはNginxに任せる(Smalltalkで 処理しない)
  • 49. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Seasideのデザイン反映プロセス モック 作成 レビュー Seaside リリース HTMLをSmalltalkに変換する作業 非常に大変
  • 50. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. トップページのデザインは mushtache(テンプレート)で対応
  • 51. 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}}
  • 52. 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.
  • 53. 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.
  • 54. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ローカライズ 日本語 英語
  • 55. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. そういえば自分ローカライズやってことないや https://twitter.com/newapplesho/status/573645403356143616
  • 56. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. NaturalLanguageTranslator 空っぽ!! よくあること
  • 57. 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の拡張機能 パッケージのロード
  • 58. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. SeasideでGettextを使うために StringクラスにローカルID(ja, en)を指定して 翻訳するためのmethodを用意する String >> mtranslatedTo: Hello mtranslatedTo: ja . こんにちは 完成イメージ
  • 59. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Gettextの利用方法 GetTextExporter exportTemplateIncluding:#mtranslatedTo:. TextDomainManager registerCategoryPrefix: 'Mikata-Asia' domain: 'Mikata'. 設定 テンプレートファイル(potファイル)を出力 #mtranslatedTo: を送ったメッセージもテンプレートに出力される
  • 60. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Gettextの利用方法 pot ja.po en.po en.mo ja.mo poエディターなどで翻訳 テンプレート バイナリファイル Pharoに読み込む Pharo
  • 61. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Gettext Translation Editer https://poedit.net/
  • 62. 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 例
  • 63. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Gettextの利用方法 String>> mtranslatedTo: isoString ^ (GetTextTranslator availableForLocaleID: (LocaleID isoString: isoString) ) translate: self inDomain: 'Mikata'. Stringクラスの拡張
  • 64. 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にセッション枯渇をされないようにする
  • 65. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. サービス開始直前 適用後適用前
  • 66. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. パーマリンク https://allstocker.com/app/ja/machinery/dozer/539fffd185674bec813be5228d25d306
  • 67. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. パーマリンク • Mikataと違い、オープンなシステムなのでURLは非常に 重要になってくる • Seasideらしさは失われつつある(むしろ別のがい い・・・コソ)
  • 68. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ソースコード管理 • Metacello + FileTreeかつGitを使って管理 • ConfigurationOfMikataA を作りSmalltalk Hubなどから Allstockerに必要なパッケージをinstall可能にする • BaselineOfを継承したBaselineOfMikataAと作成し、 ローカルのGitリポジトリからAllstockerのコードを読み 込む
  • 69. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ソースコード管理 FileTreeのパッケージを順番に読み込む
  • 70. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ソースコード管理 Smalltalker Git Smalltalker Git pull request pull
  • 71. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. デプロイ Amazon EC2 Instance S3 S3(ストレージサービス)からEC2にデプロイ 約1日1回のペースでリリース
  • 72. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
  • 73. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 60各国以上からのアクセス 日本最大の在庫掲載台数
  • 76. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Allstocker • 豊富な品数 • 業界にはなかった充実な機能 • 安心・安全な取引の実現 もっとも重たいものを扱うベンチャー
  • 77. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 今後やりたいこと • エッジロケーションの利用 • 全文検索 • ログ解析 • Web Frameworkの見直し • モバイルアプリ対応 • Angular.jsの導入
  • 78. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 全文検索について • RDS(PostgreSQL)は日本語全文検索をサポートしていな い • 全文検索を対応するためにElasticSearchを導入予定 GitHubとかに使われているらしいです
  • 79. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. ログ解析 • 現在fluentd(Nagare)を使ってログは収集しているが、エラー以外 は活用できていない • Kibanaによりメンバー全員が簡単にユーザーの分析を把握でき るようにする
  • 80. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Web Frameworkの見直し • 継続であるためAP間のセッションの共有化が難しい • 継続を使いたくても使えないときが多くなってきた • だいぶ古くなっている(特にCanvas周り) • 画面周りの自動テストが難しい 軽量かつStateless Web Frameworkが欲しい
  • 81. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
  • 82. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
  • 83. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. DBまわりなんとかしたい • PostgreSQLのドライバーが古すぎる • O/Rマッピングが苦行(イケていない) • マイグレーションが大変
  • 84. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. CI環境の構築 Git 1日の価値提供の回数を増やしたい Pharo本家でやっているけど どうやるんでしょうか
  • 85. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. お知らせ
  • 86. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. SORABITO Co., Ltd.
  • 87. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Henry Burrows https://www.flickr.com/photos/foilman/8015746124/ Smalltalkだよねだよね
  • 90. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. Smalltalkは 学習コストが 低い言語です 他言語のユーザーも歓迎です
  • 91. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 外国人の方も歓迎です
  • 92. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 外部で 協力もありです
  • 94. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. 募集職種 • Smalltalker • プログラマー • モバイルアプリケーションエンジニア • デザイナー • インフラエンジニア
  • 95. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved. こんな方探しています • 東南アジアの自然言語ができるエンジニア • UI/UXに詳しい方 • セキュリティ面で知識のある方 • Allstockerのマーティング等をやってみたい方
  • 96. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
  • 97. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
  • 98. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.