SlideShare a Scribd company logo
H o w
S m a l l t a l k e r
W o r k s
S m a l l t a l k 三 昧 だ っ た 一 年
@newapplesho
今日は忘年会。
今年1年を振り返ります。
S
今年を1文字で表すとしたら
2 0 1 4 年 5 月
h t t p : / / w w w. s o r a b i t o . c o m
SORABITOの立ち上げ
開 発 言 語
5%5%
14%
5%
29%
43%
Smalltalk Ruby Java PHP Perl FileMaker
2 0 1 4 年 7 月 試 験 運 用
2 0 1 4 年 9 月 正 式 公 開
h t t p s : / / m i k a t a c l o u d . c o m
Serviceの立ち上げ
L O V E I T O R L E AV E I T.
I L O V E S M A L LTA L K .
Smalltalkを最も活用した年
最 も 勉 強 会 の 情 報 を
最 も 活 用 して い る 人
か も
お そ ら く ・ ・ ・
http://www.smalltalk-users.jp
サ ー ビ ス 紹 介 で 全 国 め ぐ り
Smalltalkのおかげで色々ありました
ス テ キ な と こ ろで 発 表 し ま し た 。
I L O V E S M A L LTA L K
Smalltalkのおかげで色々ありました
川 に 投 げら れ た り し ま し た
Smalltalkのおかげで色々ありました
パイ を な げら れ た り し ま し た
Smalltalkのおかげで色々ありました
そ ん な
S m a l l t a l k に
還 元 し た い
い ち ご 以 外 で
詳しくは第42回Smalltalk勉強会
S m a l l t a l k A d v e n t C a l e n d a r 2 0 1 4 に 挑 戦
• 10日分担当しました
• 正直大変でした
• 投稿遅れてすみません
http://qiita.com/advent-calendar/2014/smalltalk
A W S S D K f o r S m a l l t a l k
M E R RY C H R I S T M A S
公 開 す る こ と に
し ま し た
開 発 経 緯
Mikata(http://mikatacloud.com)を作るため
今 回 公 開 す る も の
仕事を作成したものはサービスに特化させて作ってしまっ
ため、業務外の時間を使って切り出して一般公開できる
ものを準備しました(いずれはSDK全てを公開しま
す)。
https://mikatacloud.com/
AWS SDK
for Smalltalk
A W S S D K f o r S m a l l t a l k
M E R RY C H R I S T M A S
DynamoDB
N o S Q L って 素 敵 だ け ど ・ ・ ・
• 少数メンバーで運用するのは大変だったりする
• 例えばMongo Replica Setsを構成するには最低各DC
ゾーンに1台ずつ、Arbiter1台、計3台マシンが必要
• メモリやディスクI/Oに左右されたりする
A m a z o n D y n a m o D B
• キー・バリュー型のNoSQLデータベースサービス
• 管理不要で信頼性が高いデータベース
• データセンター間の自動同期レプリケーション
• 高速なアクセスが可能
• SSDを利用している
• ストレージ容量制限がない
• プロビジョンスループットだけを指定するだけ
• API(SDK)経由で利用できる
今 回 公 開 す る も の
• AWSのほとんどのサービスにアクセスするための
Signature V4
• DynamoDBの接続クライアント(低レベル API、エ
ラー処理は未実装)
• DynamoDBの簡易アクセス版(未完成)
サ ポー ト す る デ ー タ 型 ( S U P P O R T S D ATA T Y P E S )
AWS SDK for Smalltalkで対応するデーター型は以下
* スカラーデータ型 - 文字列、数値
* 多値型 - 文字列セット、数値セット。
Amazon DynamoDB for Smalltalk supports the following data types:
* Scalar types – Number, String.
* Multi-valued types – String Set, Number Set.
その他も実装中
だ って 他 にや れ る こ と が な い か ら ね
ということで
DynamoDB使うしかない!
D y n a m o D B L o c a l
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/
Tools.DynamoDBLocal.html
とりあえず試したい人はDynamoDB Local
H o w t o i n s t a l l
The AWS SDK for Pharo Smalltalk enables Smalltalk
developers to easily work with Amazon Web Services
with Amazon DynamoDB. You can get started in minutes
using Metacello and FileTree.
ごめんなさい。間に合いませんでした。後ほど
別途別の資料を用意します
R A W A P I 編
C re a t e Ta b l e s
dy := DynamoDBRawClient new.
operationName := #CreateTable.
requestBody := '{
"AttributeDefinitions": [
{ "AttributeName": "id",
"AttributeType": "S"} ],
"TableName": "dmodeltest1",
"KeySchema": [
{ "AttributeName": "id",
"KeyType": "HASH"}],
"ProvisionedThroughput": {
"ReadCapacityUnits": 10,
"WriteCapacityUnits": 10}
}'.
resp := dy operationName: operationName entityContents:
requestBody.
Used DynamoDB Local Sample
L i s t Ta b l e s
dy := DynamoDBRawClient new.
dy awsConfig accessKeyId:'YOURACCESSKEY'.
dy awsConfig secretKey:'YOURSECRETKEY'.
dy awsConfig useSSL: false.
operationName := #ListTables.
requestBody := '{}'.
resp := dy operationName: operationName entityContents: requestBody.
Json readFrom: (resp contents) readStream.
Used DynamoDB Local Sample
P u t I t e m ( J a v a )
client = new AmazonDynamoDBClient(credentials);
String tableName = "dmodeltest1";
Map<String, AttributeValue> item = new HashMap<String, AttributeValue>();
item.put("Id", new
AttributeValue().withS("babe2d60c42a45fca9120d1c111d8844"));
PutItemRequest putItemRequest = new PutItemRequest()
.withTableName(tableName)
.withItem(item);
PutItemResult result = client.putItem(putItemRequest);
P u t I t e m
dy := DynamoDBRawClient new.
uuid := UUID new primMakeUUID hex.
operationName := 'PutItem'.
json := JsonObject new at:'TableName' put:'dmodeltest1';yourself.
d:= DModelTest1 new.
d id:uuid.
mapper := DynamoDBMapper new.
c := (mapper convertItem:d).
json at:'Item' put: c .
requestBody := json asJsonString .
resp := dy operationName: operationName entityContents: requestBody.
Used DynamoDB Local Sample
G e t I t e m
operationName := 'GetItem'.
json := JsonObject new at:'TableName' put:'dmodeltest1';yourself.
d:= DModelTest1 new.
d id:uuid.
mapper := DynamoDBMapper new.
c := (mapper convertItem:d).
json at:'Key' put: c .
requestBody := json asJsonString .
resp := dy operationName: operationName entityContents: requestBody.
result := Json readFrom: (resp contents) readStream.
mapper loadItem: (result at:'Item') .
Used DynamoDB Local Sample
Q u e r y
operationName := 'Query'.
json := JsonObject new at:'TableName' put:'dmodeltest1';yourself.
d:= DModelTest1 new.
d data at:#id put:uuid.
mapper := DynamoDBMapper new.
c := (mapper convertItem:d).
c := JsonObject new at: (c keys first) put: ((JsonObject new at:'AttributeValueList'
put: (Array with: c anyOne); yourself ) at:'ComparisonOperator' put:'EQ'; yourself);
yourself.
json at:'KeyConditions' put: c .
json at:'Select' put: 'ALL_ATTRIBUTES'.
requestBody := json asJsonString .
resp := dy operationName: operationName entityContents: requestBody.
result := Json readFrom: (resp contents) readStream.
(result at:'Count') > 0 ifTrue:[
^ (result at:'Items') collect:[:v | mapper loadItem:v ].
] .
Used DynamoDB Local Sample
D e l e t e I t e m
operationName := 'DeleteItem'.
json := JsonObject new at:'TableName' put:'dmodeltest1';yourself.
d:= DModelTest1 new.
d id:uuid.
mapper := DynamoDBMapper new.
c := (mapper convertItem:d).
json at:'Key' put: c .
requestBody := json asJsonString.
resp := dy operationName: operationName entityContents: requestBody.
result := Json readFrom: (resp contents) readStream.
Used DynamoDB Local Sample
D e l e t e Ta b l e
operationName := #DeleteTable.
requestBody := JsonObject new at:'TableName' put:'dmodeltest1';
asJsonString .
resp := dy operationName: operationName entityContents: requestBody.
Json readFrom: (resp contents) readStream.
Used DynamoDB Local Sample
簡 易 アク セ ス 版
P u t I t e m
uuid := UUID new primMakeUUID hex.
d:= DModelTest1 new.
d id: uuid.
d save.
Used DynamoDB Local Sample
DynamoDBModelを継承したModelを作成
DynamoDBModelのDictionaryのインスタンス変数dataに
アクセスしてModelを作成するだけ
G e t I t e m
"検索キーを作成"
keyData := DModelTest1 new.
keyData id: uuid.
result := d getItem: keyData.
Used DynamoDB Local Sample
そ の 他
そ の 他
• AWSDynamoDBConfigのendpoint:で接続するRegionを変更可能
• DynamoDB Localにも対応
• 英語が苦手なのでドキュメントの翻訳してくれる方募集
今 後
• DynamoDB改良版
• S3
• EC2
• Elastic Transcoder
2015年公開予定
ただし私のポケットマネーと
相談だったりする
Amazon
EC2
DynamoDB
Amazon Elastic
Transcoder
S3 Bucket
来 年 の 開 発 言 語
20%
15%
5%
15%
45%
Smalltalk Ruby Java PHP Perl FileMaker
Scala
来年も
S

More Related Content

What's hot

Titanium Mobile
Titanium MobileTitanium Mobile
Titanium MobileNaoya Ito
 
WordBench京都12月、WordCampUSからのWP REST APIな話
WordBench京都12月、WordCampUSからのWP REST APIな話WordBench京都12月、WordCampUSからのWP REST APIな話
WordBench京都12月、WordCampUSからのWP REST APIな話
Hidetaka Okamoto
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
Masashi Shinbara
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
Narami Kiyokura
 
いまどきのPHP
いまどきのPHPいまどきのPHP
いまどきのPHP
Masashi Shinbara
 
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
nabe-abk
 
Echo server implementation for Python
Echo server implementation for PythonEcho server implementation for Python
Echo server implementation for Python
Toshiki Tsuboi
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
 
Zabbix API
Zabbix APIZabbix API
Zabbix API
Shuhei Hayashibara
 
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題Masahiro Nagano
 
OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニックOSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック
庸介 高橋
 
実践Realm
実践Realm実践Realm
実践Realm
Yu Sugawara
 
Apache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでApache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject Introspectionで
Kouhei Sutou
 
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
Nao Minami
 
RubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入りRubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入り
Kouhei Sutou
 
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
Yu Sugawara
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
charsbar
 
【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI
虎の穴 開発室
 
2017年春のPerl
2017年春のPerl2017年春のPerl
2017年春のPerl
charsbar
 
Rubyのソースコードを読んでみよう(入門編)
Rubyのソースコードを読んでみよう(入門編)Rubyのソースコードを読んでみよう(入門編)
Rubyのソースコードを読んでみよう(入門編)baban ba-n
 

What's hot (20)

Titanium Mobile
Titanium MobileTitanium Mobile
Titanium Mobile
 
WordBench京都12月、WordCampUSからのWP REST APIな話
WordBench京都12月、WordCampUSからのWP REST APIな話WordBench京都12月、WordCampUSからのWP REST APIな話
WordBench京都12月、WordCampUSからのWP REST APIな話
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
 
いまどきのPHP
いまどきのPHPいまどきのPHP
いまどきのPHP
 
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
 
Echo server implementation for Python
Echo server implementation for PythonEcho server implementation for Python
Echo server implementation for Python
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
Zabbix API
Zabbix APIZabbix API
Zabbix API
 
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
 
OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニックOSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック
 
実践Realm
実践Realm実践Realm
実践Realm
 
Apache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでApache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject Introspectionで
 
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
 
RubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入りRubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入り
 
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
 
【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI【20211202_toranoana.deno#3】denoでFFI
【20211202_toranoana.deno#3】denoでFFI
 
2017年春のPerl
2017年春のPerl2017年春のPerl
2017年春のPerl
 
Rubyのソースコードを読んでみよう(入門編)
Rubyのソースコードを読んでみよう(入門編)Rubyのソースコードを読んでみよう(入門編)
Rubyのソースコードを読んでみよう(入門編)
 

Similar to How Smalltalker Works

Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶHiroshi Oyamada
 
WebRTC meetup Tokyo 1
WebRTC meetup  Tokyo 1WebRTC meetup  Tokyo 1
WebRTC meetup Tokyo 1
mganeko
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 
Tide - SmalltalkでSPA
Tide - SmalltalkでSPATide - SmalltalkでSPA
Tide - SmalltalkでSPA
Masashi Umezawa
 
第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo
yayamamo @ DBCLS Kashiwanoha
 
20200528_AWSでサーバーレスなLINEBotLIFFアプリ環境をIaCな感じで構築するよ!.pdf
20200528_AWSでサーバーレスなLINEBotLIFFアプリ環境をIaCな感じで構築するよ!.pdf20200528_AWSでサーバーレスなLINEBotLIFFアプリ環境をIaCな感じで構築するよ!.pdf
20200528_AWSでサーバーレスなLINEBotLIFFアプリ環境をIaCな感じで構築するよ!.pdf
Sumihiro Kagawa
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Kazuya Wada
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
Shigeru UCHIYAMA
 
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talkmitamex4u
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorp
Masahito Zembutsu
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめる
Shuhei Iitsuka
 
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQLハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
Taisuke Fukuno
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
Toru Yamaguchi
 
5分程度で分かる? Appceleratorの方のAlloy
5分程度で分かる? Appceleratorの方のAlloy5分程度で分かる? Appceleratorの方のAlloy
5分程度で分かる? Appceleratorの方のAlloy
Masato Kitao
 
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOWebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOKohei Noda
 
Dev for Citizen Manual
Dev for Citizen ManualDev for Citizen Manual
Dev for Citizen Manual
テスト データ
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternAtsushi Kambara
 

Similar to How Smalltalker Works (20)

Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶ
 
WebRTC meetup Tokyo 1
WebRTC meetup  Tokyo 1WebRTC meetup  Tokyo 1
WebRTC meetup Tokyo 1
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
Tide - SmalltalkでSPA
Tide - SmalltalkでSPATide - SmalltalkでSPA
Tide - SmalltalkでSPA
 
第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo
 
20200528_AWSでサーバーレスなLINEBotLIFFアプリ環境をIaCな感じで構築するよ!.pdf
20200528_AWSでサーバーレスなLINEBotLIFFアプリ環境をIaCな感じで構築するよ!.pdf20200528_AWSでサーバーレスなLINEBotLIFFアプリ環境をIaCな感じで構築するよ!.pdf
20200528_AWSでサーバーレスなLINEBotLIFFアプリ環境をIaCな感じで構築するよ!.pdf
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
 
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
名古屋Ruby会議01 A3.製造業向け3Dデータ変換ソリューションにおけるRuby活用事例
 
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorp
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめる
 
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQLハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
5分程度で分かる? Appceleratorの方のAlloy
5分程度で分かる? Appceleratorの方のAlloy5分程度で分かる? Appceleratorの方のAlloy
5分程度で分かる? Appceleratorの方のAlloy
 
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOWebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
 
Dev for Citizen Manual
Dev for Citizen ManualDev for Citizen Manual
Dev for Citizen Manual
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
 

More from Sho Yoshida

OpenRestyを用いてイケイケなサービスを作る方法
OpenRestyを用いてイケイケなサービスを作る方法OpenRestyを用いてイケイケなサービスを作る方法
OpenRestyを用いてイケイケなサービスを作る方法
Sho Yoshida
 
Continuous Integration for Pharo Smalltalk Part 2 (Smalltalk and Travis CI)
Continuous Integration for Pharo Smalltalk Part 2 (Smalltalk and Travis CI)Continuous Integration for Pharo Smalltalk Part 2 (Smalltalk and Travis CI)
Continuous Integration for Pharo Smalltalk Part 2 (Smalltalk and Travis CI)
Sho Yoshida
 
今時なウェブ開発をSmalltalkでやってみる?
今時なウェブ開発をSmalltalkでやってみる?今時なウェブ開発をSmalltalkでやってみる?
今時なウェブ開発をSmalltalkでやってみる?
Sho Yoshida
 
Continuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーション
Continuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーションContinuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーション
Continuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーション
Sho Yoshida
 
Elasticsearch for Pharo Smalltalk
Elasticsearch for Pharo Smalltalk Elasticsearch for Pharo Smalltalk
Elasticsearch for Pharo Smalltalk
Sho Yoshida
 
Source Code Management with Pharo Smalltalk - Pharo Smalltalkソースコード管理方法
Source Code Management with Pharo Smalltalk - Pharo Smalltalkソースコード管理方法Source Code Management with Pharo Smalltalk - Pharo Smalltalkソースコード管理方法
Source Code Management with Pharo Smalltalk - Pharo Smalltalkソースコード管理方法
Sho Yoshida
 
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkRUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践Smalltalk
Sho Yoshida
 
Smaltalk驚異の開発(私が使い続ける2012年の話)
Smaltalk驚異の開発(私が使い続ける2012年の話)Smaltalk驚異の開発(私が使い続ける2012年の話)
Smaltalk驚異の開発(私が使い続ける2012年の話)
Sho Yoshida
 
愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。
Sho Yoshida
 
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
Sho Yoshida
 
もしイチゴ農家の園主がSmalltalkの「Seaside」(で作られたシステム)を使ってみたら
もしイチゴ農家の園主がSmalltalkの「Seaside」(で作られたシステム)を使ってみたらもしイチゴ農家の園主がSmalltalkの「Seaside」(で作られたシステム)を使ってみたら
もしイチゴ農家の園主がSmalltalkの「Seaside」(で作られたシステム)を使ってみたらSho Yoshida
 
今日から使おうSmalltalk
今日から使おうSmalltalk今日から使おうSmalltalk
今日から使おうSmalltalkSho Yoshida
 
Iliad or Seaside
Iliad or SeasideIliad or Seaside
Iliad or SeasideSho Yoshida
 
Pharo(Smalltalk)でAPI作りをはじめよう
Pharo(Smalltalk)でAPI作りをはじめようPharo(Smalltalk)でAPI作りをはじめよう
Pharo(Smalltalk)でAPI作りをはじめよう
Sho Yoshida
 

More from Sho Yoshida (15)

OpenRestyを用いてイケイケなサービスを作る方法
OpenRestyを用いてイケイケなサービスを作る方法OpenRestyを用いてイケイケなサービスを作る方法
OpenRestyを用いてイケイケなサービスを作る方法
 
Continuous Integration for Pharo Smalltalk Part 2 (Smalltalk and Travis CI)
Continuous Integration for Pharo Smalltalk Part 2 (Smalltalk and Travis CI)Continuous Integration for Pharo Smalltalk Part 2 (Smalltalk and Travis CI)
Continuous Integration for Pharo Smalltalk Part 2 (Smalltalk and Travis CI)
 
今時なウェブ開発をSmalltalkでやってみる?
今時なウェブ開発をSmalltalkでやってみる?今時なウェブ開発をSmalltalkでやってみる?
今時なウェブ開発をSmalltalkでやってみる?
 
Continuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーション
Continuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーションContinuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーション
Continuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーション
 
Elasticsearch for Pharo Smalltalk
Elasticsearch for Pharo Smalltalk Elasticsearch for Pharo Smalltalk
Elasticsearch for Pharo Smalltalk
 
Source Code Management with Pharo Smalltalk - Pharo Smalltalkソースコード管理方法
Source Code Management with Pharo Smalltalk - Pharo Smalltalkソースコード管理方法Source Code Management with Pharo Smalltalk - Pharo Smalltalkソースコード管理方法
Source Code Management with Pharo Smalltalk - Pharo Smalltalkソースコード管理方法
 
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkRUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践Smalltalk
 
Smaltalk驚異の開発(私が使い続ける2012年の話)
Smaltalk驚異の開発(私が使い続ける2012年の話)Smaltalk驚異の開発(私が使い続ける2012年の話)
Smaltalk驚異の開発(私が使い続ける2012年の話)
 
愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。
 
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
 
もしイチゴ農家の園主がSmalltalkの「Seaside」(で作られたシステム)を使ってみたら
もしイチゴ農家の園主がSmalltalkの「Seaside」(で作られたシステム)を使ってみたらもしイチゴ農家の園主がSmalltalkの「Seaside」(で作られたシステム)を使ってみたら
もしイチゴ農家の園主がSmalltalkの「Seaside」(で作られたシステム)を使ってみたら
 
エコSmalltalk
エコSmalltalkエコSmalltalk
エコSmalltalk
 
今日から使おうSmalltalk
今日から使おうSmalltalk今日から使おうSmalltalk
今日から使おうSmalltalk
 
Iliad or Seaside
Iliad or SeasideIliad or Seaside
Iliad or Seaside
 
Pharo(Smalltalk)でAPI作りをはじめよう
Pharo(Smalltalk)でAPI作りをはじめようPharo(Smalltalk)でAPI作りをはじめよう
Pharo(Smalltalk)でAPI作りをはじめよう
 

How Smalltalker Works

  • 1. H o w S m a l l t a l k e r W o r k s S m a l l t a l k 三 昧 だ っ た 一 年 @newapplesho
  • 4. 2 0 1 4 年 5 月 h t t p : / / w w w. s o r a b i t o . c o m SORABITOの立ち上げ
  • 5. 開 発 言 語 5%5% 14% 5% 29% 43% Smalltalk Ruby Java PHP Perl FileMaker
  • 6. 2 0 1 4 年 7 月 試 験 運 用 2 0 1 4 年 9 月 正 式 公 開 h t t p s : / / m i k a t a c l o u d . c o m Serviceの立ち上げ
  • 7. L O V E I T O R L E AV E I T. I L O V E S M A L LTA L K . Smalltalkを最も活用した年
  • 8. 最 も 勉 強 会 の 情 報 を 最 も 活 用 して い る 人 か も お そ ら く ・ ・ ・ http://www.smalltalk-users.jp
  • 9. サ ー ビ ス 紹 介 で 全 国 め ぐ り Smalltalkのおかげで色々ありました
  • 10. ス テ キ な と こ ろで 発 表 し ま し た 。 I L O V E S M A L LTA L K Smalltalkのおかげで色々ありました
  • 11. 川 に 投 げら れ た り し ま し た Smalltalkのおかげで色々ありました
  • 12. パイ を な げら れ た り し ま し た Smalltalkのおかげで色々ありました
  • 13. そ ん な S m a l l t a l k に 還 元 し た い い ち ご 以 外 で 詳しくは第42回Smalltalk勉強会
  • 14.
  • 15. S m a l l t a l k A d v e n t C a l e n d a r 2 0 1 4 に 挑 戦 • 10日分担当しました • 正直大変でした • 投稿遅れてすみません http://qiita.com/advent-calendar/2014/smalltalk
  • 16. A W S S D K f o r S m a l l t a l k M E R RY C H R I S T M A S
  • 17. 公 開 す る こ と に し ま し た
  • 18. 開 発 経 緯 Mikata(http://mikatacloud.com)を作るため
  • 19. 今 回 公 開 す る も の 仕事を作成したものはサービスに特化させて作ってしまっ ため、業務外の時間を使って切り出して一般公開できる ものを準備しました(いずれはSDK全てを公開しま す)。 https://mikatacloud.com/ AWS SDK for Smalltalk
  • 20. A W S S D K f o r S m a l l t a l k M E R RY C H R I S T M A S DynamoDB
  • 21. N o S Q L って 素 敵 だ け ど ・ ・ ・ • 少数メンバーで運用するのは大変だったりする • 例えばMongo Replica Setsを構成するには最低各DC ゾーンに1台ずつ、Arbiter1台、計3台マシンが必要 • メモリやディスクI/Oに左右されたりする
  • 22. A m a z o n D y n a m o D B • キー・バリュー型のNoSQLデータベースサービス • 管理不要で信頼性が高いデータベース • データセンター間の自動同期レプリケーション • 高速なアクセスが可能 • SSDを利用している • ストレージ容量制限がない • プロビジョンスループットだけを指定するだけ • API(SDK)経由で利用できる
  • 23. 今 回 公 開 す る も の • AWSのほとんどのサービスにアクセスするための Signature V4 • DynamoDBの接続クライアント(低レベル API、エ ラー処理は未実装) • DynamoDBの簡易アクセス版(未完成)
  • 24. サ ポー ト す る デ ー タ 型 ( S U P P O R T S D ATA T Y P E S ) AWS SDK for Smalltalkで対応するデーター型は以下 * スカラーデータ型 - 文字列、数値 * 多値型 - 文字列セット、数値セット。 Amazon DynamoDB for Smalltalk supports the following data types: * Scalar types – Number, String. * Multi-valued types – String Set, Number Set. その他も実装中
  • 25. だ って 他 にや れ る こ と が な い か ら ね ということで DynamoDB使うしかない!
  • 26. D y n a m o D B L o c a l http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ Tools.DynamoDBLocal.html とりあえず試したい人はDynamoDB Local
  • 27. H o w t o i n s t a l l The AWS SDK for Pharo Smalltalk enables Smalltalk developers to easily work with Amazon Web Services with Amazon DynamoDB. You can get started in minutes using Metacello and FileTree. ごめんなさい。間に合いませんでした。後ほど 別途別の資料を用意します
  • 28. R A W A P I 編
  • 29. C re a t e Ta b l e s dy := DynamoDBRawClient new. operationName := #CreateTable. requestBody := '{ "AttributeDefinitions": [ { "AttributeName": "id", "AttributeType": "S"} ], "TableName": "dmodeltest1", "KeySchema": [ { "AttributeName": "id", "KeyType": "HASH"}], "ProvisionedThroughput": { "ReadCapacityUnits": 10, "WriteCapacityUnits": 10} }'. resp := dy operationName: operationName entityContents: requestBody. Used DynamoDB Local Sample
  • 30. L i s t Ta b l e s dy := DynamoDBRawClient new. dy awsConfig accessKeyId:'YOURACCESSKEY'. dy awsConfig secretKey:'YOURSECRETKEY'. dy awsConfig useSSL: false. operationName := #ListTables. requestBody := '{}'. resp := dy operationName: operationName entityContents: requestBody. Json readFrom: (resp contents) readStream. Used DynamoDB Local Sample
  • 31. P u t I t e m ( J a v a ) client = new AmazonDynamoDBClient(credentials); String tableName = "dmodeltest1"; Map<String, AttributeValue> item = new HashMap<String, AttributeValue>(); item.put("Id", new AttributeValue().withS("babe2d60c42a45fca9120d1c111d8844")); PutItemRequest putItemRequest = new PutItemRequest() .withTableName(tableName) .withItem(item); PutItemResult result = client.putItem(putItemRequest);
  • 32. P u t I t e m dy := DynamoDBRawClient new. uuid := UUID new primMakeUUID hex. operationName := 'PutItem'. json := JsonObject new at:'TableName' put:'dmodeltest1';yourself. d:= DModelTest1 new. d id:uuid. mapper := DynamoDBMapper new. c := (mapper convertItem:d). json at:'Item' put: c . requestBody := json asJsonString . resp := dy operationName: operationName entityContents: requestBody. Used DynamoDB Local Sample
  • 33. G e t I t e m operationName := 'GetItem'. json := JsonObject new at:'TableName' put:'dmodeltest1';yourself. d:= DModelTest1 new. d id:uuid. mapper := DynamoDBMapper new. c := (mapper convertItem:d). json at:'Key' put: c . requestBody := json asJsonString . resp := dy operationName: operationName entityContents: requestBody. result := Json readFrom: (resp contents) readStream. mapper loadItem: (result at:'Item') . Used DynamoDB Local Sample
  • 34. Q u e r y operationName := 'Query'. json := JsonObject new at:'TableName' put:'dmodeltest1';yourself. d:= DModelTest1 new. d data at:#id put:uuid. mapper := DynamoDBMapper new. c := (mapper convertItem:d). c := JsonObject new at: (c keys first) put: ((JsonObject new at:'AttributeValueList' put: (Array with: c anyOne); yourself ) at:'ComparisonOperator' put:'EQ'; yourself); yourself. json at:'KeyConditions' put: c . json at:'Select' put: 'ALL_ATTRIBUTES'. requestBody := json asJsonString . resp := dy operationName: operationName entityContents: requestBody. result := Json readFrom: (resp contents) readStream. (result at:'Count') > 0 ifTrue:[ ^ (result at:'Items') collect:[:v | mapper loadItem:v ]. ] . Used DynamoDB Local Sample
  • 35. D e l e t e I t e m operationName := 'DeleteItem'. json := JsonObject new at:'TableName' put:'dmodeltest1';yourself. d:= DModelTest1 new. d id:uuid. mapper := DynamoDBMapper new. c := (mapper convertItem:d). json at:'Key' put: c . requestBody := json asJsonString. resp := dy operationName: operationName entityContents: requestBody. result := Json readFrom: (resp contents) readStream. Used DynamoDB Local Sample
  • 36. D e l e t e Ta b l e operationName := #DeleteTable. requestBody := JsonObject new at:'TableName' put:'dmodeltest1'; asJsonString . resp := dy operationName: operationName entityContents: requestBody. Json readFrom: (resp contents) readStream. Used DynamoDB Local Sample
  • 37. 簡 易 アク セ ス 版
  • 38. P u t I t e m uuid := UUID new primMakeUUID hex. d:= DModelTest1 new. d id: uuid. d save. Used DynamoDB Local Sample DynamoDBModelを継承したModelを作成 DynamoDBModelのDictionaryのインスタンス変数dataに アクセスしてModelを作成するだけ
  • 39. G e t I t e m "検索キーを作成" keyData := DModelTest1 new. keyData id: uuid. result := d getItem: keyData. Used DynamoDB Local Sample
  • 41. そ の 他 • AWSDynamoDBConfigのendpoint:で接続するRegionを変更可能 • DynamoDB Localにも対応 • 英語が苦手なのでドキュメントの翻訳してくれる方募集
  • 42. 今 後 • DynamoDB改良版 • S3 • EC2 • Elastic Transcoder 2015年公開予定 ただし私のポケットマネーと 相談だったりする Amazon EC2 DynamoDB Amazon Elastic Transcoder S3 Bucket
  • 43. 来 年 の 開 発 言 語 20% 15% 5% 15% 45% Smalltalk Ruby Java PHP Perl FileMaker Scala