SlideShare a Scribd company logo
5
Most read
7
Most read
11
Most read
今からでも遅くない
Smalltalk入門
Pharoではじめよう!
Smalltalk忘年会2017
合同会社ソフトウメヤ 梅澤真史
Borderless
「垣根がない」
いいところ1
プログラミング言語の壁
▶ アプリを使う人
▶ アプリケーションのユーザ
▶ アプリを作る人
▶ プログラマ
▶ 言語を作る人
▶ プログラミング言語開発者
Smalltalkには垣根が無い
「オブジェクトにメッセージを送る」ことで、
アプリを作るのみならず、
プログラミング言語そのものを変更してい
くことができる
「この言語にはこれがないから…」=>「だったら作ればいいじゃん?」
Simple
「シンプル」
いいところ2
ミニマリズムの言語
▶ 予約語は 6つのみ
▶ nil, true, false, self, super, thisContext
▶ あとは「オブジェクトにメッセージを送る」
「こんなふうに短く書けます」的なシンタックスシュガーはない
安易ではなく、簡潔
少ないルールの組み合わせによって何でも作っていける
Direct「直接つかめる」
いいところ3
動いているオブジェクトに直接触れる
▶ メモリにうかんだオブジェクトをメッセージ
送信で変容させていくスタイル
▶ 常にデバッガの中でプログラムを作っているようなもの
Smalltalker的には、テキストエディタに書かれたプログラムは、「た
だの文字列」で死んでいる
「動いてないし、ある部分を選択してメッセージを送れない」
今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門
自由の世界へ
▶ Kent Beckさんの Facebookでの記事
▶ http://www.facebook.com/notes/kent-beck/design-spa
ce/510856375613898
▶ “The greater my knowledge, the freer I feel. It’s
like walking under a Montana sky instead of being
jostled down a narrow, one-way corridor”
▶ 「知れば知るほど、自由を感じる。狭い一方通行の廊下
に押し込まれて進むのではなく、モンタナの空の下を闊
歩するようなものだ」
Pharoとは
● OSSのSmalltalk処理系で最もポピュラー、開発も活発
○ https://pharo.org
● VMも高速
(https://www.slideshare.net/pharoproject/pharo-vm-performance)
● イメージはWin, Mac, Linuxでバイナリコンパチブル
● ライブラリも豊富 (Catalog Browserですぐに入る)
Zeroconf Scriptで入れてみる
● curlやwgetで気軽に入れる
○ http://get.pharo.org
curl get.pharo.org/64/61+vm | bash
wget -O- get.pharo.org/64/61+vm | bash
● 64部分がないと32ビット版になる(が、おすすめしない)
pharo-ui で起動
./pharo-ui Pharo.image
フォントを日本語に
● デスクトップのクリックでメニューがでる
○ System -> Settings で Settings Browserが開く (Cmd + os)
○ Search for: の検索窓に'font'と打つ
○ Use Free Type をoffしてonにするとフォントを読む
○ Standard font -> Default の箇所で日本語のフォントを指定し
て"Force All"のボタンを押す
ライブラリを入れる
● Tools -> Catalog Browser
○ 検索窓に'soup'と入れてみる
■ 絞り込まれるので
選択して右クリックし
"Install stable version"
● Soup
○ スクレイピング用のHTMLパーサ
■ PythonのBeautiful Soupっぽいもの
特定のリンクを抽出する
● Playgroudを開く (Cmd + ow)
○ Smalltalkコードを書いて評価するためのツール
● http://swikis.ddo.jp/squeak の勉強会関連リンクを取り出す
soup := Soup fromUrl: 'http://swikis.ddo.jp/squeak'.
((soup // 'a') select: [ :each | each text beginsWith: '第'])
collect: [ :each | each text -> (each @ 'href')]
● テキスト選択して右クリックで "Inspect it"
○ あるいは Cmd + i
実行結果は...
画像をまとめて取得し保存
soup := Soup fromUrl: 'http://swikis.ddo.jp/squeak'.
baseUrl := 'http://swikis.ddo.jp' asUrl.
dir := './downloads' asFileReference ensureCreateDirectory.
imageUrls :=((soup // 'img') @ 'src') collect:
[:each | baseUrl / each ].
imageUrls asSet do:
[:each |each saveContentsToFile: dir / each file].
● "Do it" あるいはCmd + d
実行結果は...
Smalltalkの場合、文法よりも体験
● 早わかりSmalltalk
● Smalltalk基本文法編
● Smalltalk入門 (ドットインストール)
● 難しくはないが異質
● 習うよりも慣れろ
● Smalltalk勉強会に参加すると良いことがあるかも
まとめ
● Smalltalkは古くて新しい不思議な言語
○ 味わっておいて損はない
■ 妥協しないピュアなオブジェクト指向
■ オブジェクトがうごめくライブな環境
● まずはPharoがオススメ
○ 開発が活発
○ 実プロジェクトも多い

More Related Content

PDF
今日から使おうSmalltalk
PDF
早わかりSmalltalk
PDF
Smalltalkだめ自慢
PDF
Smalltalkと型について
PDF
プログラムを高速化する話
PDF
オブジェクト指向プログラミングの現在・過去・未来
PPTX
冬のLock free祭り safe
PDF
オブジェクト指向できていますか?
今日から使おうSmalltalk
早わかりSmalltalk
Smalltalkだめ自慢
Smalltalkと型について
プログラムを高速化する話
オブジェクト指向プログラミングの現在・過去・未来
冬のLock free祭り safe
オブジェクト指向できていますか?

What's hot (20)

PDF
Why!? Smalltalk
PDF
不遇の標準ライブラリ - valarray
PDF
C++ マルチスレッド 入門
PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開
PDF
シリコンバレーの「何が」凄いのか
PDF
GoによるWebアプリ開発のキホン
PDF
Marp Tutorial
PDF
目grep入門 +解説
PDF
Mavenの真実とウソ
PPTX
世界一わかりやすいClean Architecture
PDF
中3女子でもわかる constexpr
PDF
Pythonによる黒魔術入門
PDF
SAT/SMTソルバの仕組み
PDF
テストとリファクタリングに関する深い方法論 #wewlc_jp
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PDF
PostgreSQL: XID周回問題に潜む別の問題
PDF
C++ マルチスレッドプログラミング
PDF
明日使えないすごいビット演算
PPTX
ChatGPTでモノづくりを支援してもらった話(移行済)
Why!? Smalltalk
不遇の標準ライブラリ - valarray
C++ マルチスレッド 入門
ヤフー社内でやってるMySQLチューニングセミナー大公開
シリコンバレーの「何が」凄いのか
GoによるWebアプリ開発のキホン
Marp Tutorial
目grep入門 +解説
Mavenの真実とウソ
世界一わかりやすいClean Architecture
中3女子でもわかる constexpr
Pythonによる黒魔術入門
SAT/SMTソルバの仕組み
テストとリファクタリングに関する深い方法論 #wewlc_jp
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PostgreSQL: XID周回問題に潜む別の問題
C++ マルチスレッドプログラミング
明日使えないすごいビット演算
ChatGPTでモノづくりを支援してもらった話(移行済)
Ad

Similar to 今からでも遅くないSmalltalk入門 (12)

PDF
Herlockサービス紹介
PDF
20200803 プログラミングの基礎
PDF
言語処理するのに Python でいいの? #PyDataTokyo
PPTX
PhoneGapユーザー会@大阪 講演資料
PDF
MTプラグイン入門以前
PDF
C#でアプリを作ってみよう! #ngtnet
PDF
Weekend Androidのススメ
PPTX
おばかアプリ勉強会資料 マイクロソフト
PDF
0から教える簡単アプリ開発
PPTX
PDF
iアプリつくろうぜ!~20101020 DevLOVE Android勉強会~
PPTX
Interop2017
Herlockサービス紹介
20200803 プログラミングの基礎
言語処理するのに Python でいいの? #PyDataTokyo
PhoneGapユーザー会@大阪 講演資料
MTプラグイン入門以前
C#でアプリを作ってみよう! #ngtnet
Weekend Androidのススメ
おばかアプリ勉強会資料 マイクロソフト
0から教える簡単アプリ開発
iアプリつくろうぜ!~20101020 DevLOVE Android勉強会~
Interop2017
Ad

More from Masashi Umezawa (20)

PDF
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
PDF
FileManで楽々ファイル操作
PDF
TruffleSqueakの紹介
PDF
SmalltalkBoltでUFFI入門
PDF
TaskItの紹介
PDF
Smalltalk勉強会 - 過去、現在、そして未来へ のその後
PPTX
Revealing ALLSTOCKER
PDF
TarandocでJSONを永続化
PPTX
Dockerizing pharo
PDF
Tarantubeでメッセージキューを使い倒す
PDF
VerStixの紹介
PDF
Oldtalk - あのころの処理系は今
PDF
Pyonkeeを鳴らす
PDF
Smalltalk勉強会 - 過去、現在、そして未来へ
PDF
Tarantalk
PDF
Introduction of Pharo 5.0
PDF
Pillarの紹介
PPT
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
PDF
NanoStrand
PDF
何が変わった? VisualWorks 8.0
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
FileManで楽々ファイル操作
TruffleSqueakの紹介
SmalltalkBoltでUFFI入門
TaskItの紹介
Smalltalk勉強会 - 過去、現在、そして未来へ のその後
Revealing ALLSTOCKER
TarandocでJSONを永続化
Dockerizing pharo
Tarantubeでメッセージキューを使い倒す
VerStixの紹介
Oldtalk - あのころの処理系は今
Pyonkeeを鳴らす
Smalltalk勉強会 - 過去、現在、そして未来へ
Tarantalk
Introduction of Pharo 5.0
Pillarの紹介
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
NanoStrand
何が変わった? VisualWorks 8.0

今からでも遅くないSmalltalk入門