Más contenido relacionado
La actualidad más candente (20)
Similar a RUNNING Smalltalk - 実践Smalltalk (20)
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/
- 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月一般公開
- 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
- 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だよだよね
- 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
- 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.
- 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にセッション枯渇をされないようにする
- 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回のペースでリリース
- 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が欲しい
- 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本家でやっているけど
どうやるんでしょうか
- 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は
学習コストが
低い言語です
他言語のユーザーも歓迎です
- 94. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
募集職種
• Smalltalker
• プログラマー
• モバイルアプリケーションエンジニア
• デザイナー
• インフラエンジニア
- 95. Copyright © 2015 SORABITO Co., Ltd. All Rights Reserved.
こんな方探しています
• 東南アジアの自然言語ができるエンジニア
• UI/UXに詳しい方
• セキュリティ面で知識のある方
• Allstockerのマーティング等をやってみたい方