• 検索結果がありません。

mini Recent site activity smalltalkusers.jp

N/A
N/A
Protected

Academic year: 2018

シェア "mini Recent site activity smalltalkusers.jp"

Copied!
36
0
0

読み込み中.... (全文を見る)

全文

(1)

吉田 翔

もしイチゴ農家の園主が

Smalltalk

の「

Seaside

」(で

作られたシステム)を使ってみたら

(2)

http://swikis.ddo.jp/umejava/38

日本初?

Seaside

の紹介ページ

(3)

できた.終了!

作ってみる チュートリアル

実際に一般公開してみた

(4)

いちご狩り予約管理システム

(5)

予約システムの導入経緯1

いちご狩り予約は電話とFAX

記録・管理

日ごとに整理

予約情報は紙に記録

(6)

システム導入前の問題

知りたい情報はどこに?

様子が分からない

•子どもでも取れるのか

•汚れないか

•通路は広いか

(7)

コンセプト

sawadafarm.com

予約管理システム

1分で知って

10

分で予約

澤田農園サイト

sawadafarm.com

サイト全体を予約システムとする

(8)

なぜ

Seaside

• ポータブルな環境であったこと

• 予約画面のプロトタイプは3時間で作って,イメージを持ってもらえた

• ページ遷移の記述が非常に楽なこと

• Smalltalkで作ったシステムを一般公開してみたかった

(9)

フロー制御

一般画面 予約画面 ダー表示カレン 処理

ユーザ操作 システム遷移

予約状況 確認画面 (時間)

年間カレ ンダー

月カレン ダー

予約 クリック

クリック

クリック クリック

クリック クリック

※A

クリック

編集削除 クリック

※C

お客様予約入力遷移

クリック

(10)

フロー制御

Web

開発で悩む処理

認証成功

登録 認証失敗

Login

main page

(11)

login

user register

main

認証成功

(12)

フロー制御

WATask>>goでフロー全体を記述

MyLoginComponent

MyUserRegisterComponent

MyMainComponent MyTask

call:

answer:

認証失敗

(13)

MyTask>>go

! | user |

! loginAnswer:= self call:(MyLoginComponent new).

! loginAnswer = #registerUser ! ! ifTrue:[ user := self call:

(MyUserRegisterComponent new) ] ifFalse:[ user := loginAnswer ].

! user ifNotNil:[

! ! self session login: user.].

self call:(MyMainComponent new). WATask subclass:#MyTask

(14)

公開までの道のり

6月 9月 11 1月

?月

吉田への依頼?

画面設計 仕様調整

Seasideでプロタイプで

イメージを持ってもらう

コンセプトと

意識改革

着手依頼 サーバ構築

Webページ移行

予約システム公開

(15)

コンセプト

(16)

要件

(17)

システム構成

Apache

PostgreSQL Web AP (Smalltalk)

メール配信機能 (バッチ処理)

(18)

公開への道のり(日本語の対応)

|adapter|

WAComancheAdaptor startOn: 8080.

adapter := WAComancheAdaptor default.

adapter codec: (GRCodec forEncoding: 'utf-8').

adapter isRunning

(19)

公開への道のり(開発ツールの削除)

WAAdmin applicationDefaults

removeParent: WADevelopmentConfiguration instance

WAAdmin applicationDefaults

addParent: WADevelopmentConfiguration instance

ツールの削除

(20)

公開への道のり(

Apache

との連携)

Apache

Web AP (Smalltalk) Comanche Server

port:3000

port:80

access.html

静的で可能なページはSeasideで扱わない

ApacheのRewrite機能を使って実現

<VirtualHost *:80>

RewriteEngine On

RewriteRule ^/(swd.*)$ http://localhost:3000/$1 [P,L]

</VirtualHost>

httpd.conf等にrewriteルールを記載する

(21)

公開への道のり(画像ファイルと

CSS

WAFileLibraryのsubclassを作成

MyFileLibrary addFileAt:'./css/main.css'.

MyFileLibrary addAllFilesIn: './css/'.

または

Workspace上で以下のコードを実行

(22)

公開への道のり(画像ファイルと

CSS

>>updateRoot:anHtmlRoot

super updateRoot: anHtmlRoot.

anHtmlRoot stylesheet url: MyFileLibrary / #mainCss.

>>(class) initialize

! |app|

! app := (WAAdmin register: self asApplicationAt: '...')

! ! addLibrary: MyFileLibrary.

WAComponent subclass

WAComponent subclass

(23)

公開への道のり(画像ファイルと

CSS

>>updateRoot:anHtmlRoot

super updateRoot: anHtmlRoot.

anHtmlRoot stylesheet resourceUrl: self baseUrl ,'main.css'. WAComponent subclass

今回の方法

Smalltalk imageでcss等を管理しない

imageファイルの軽量化

画像,cssの修正を独立できる

(24)

公開への道のり(バッチの呼び出し)

メール送信機能はSmalltalkで作れなかった

仮予約通知 本予約通知

キャンセルおよび自動キャンセル通知 前日予約集計通知

お客様質問通知

時間がなかった

日本語の取り扱いに懸念点があった

メール送信機能

(25)

公開への道のり(バッチの呼び出し)

OSProcess command:ʼcancelMail.rbʼ.

※実際には絶対パスでスクリプトを指定すること

OSProcessを用いる

MetacelloのプロジェクトのConfigurationOfOSProcess1

導入すればよい

System performOnServer: 'date'

Gemstoneの場合 OSProcessは不要

Web AP (Smalltalk) メール配信機能

(26)

公開への道のり(

PostgreSQL

との接続)

SqueakDatabaseAccessor DefaultDriver:(Smalltalk at: #NativePostgresDriver). ConfigurationOfGlorpDBX project lastVersion load:'Core'.

Glorp1を用いる

Glorpを普通に使いたいならCoreがおすすめ

(27)

公開への道のり(ソースコードの管理)

一般的にはMonticelloおよび

SqueakSourceのサーバを立てて管理

今回

Gitを利用

•HTMLファイル等の管理も行う必要があったため

  ※Source.stを管理するだけ

•SSL通信でアクセス可能

(28)

公開への道のり(バグの管理)

Redmine

チケット管理およびタスク管理が便利

(29)

公開への道のり(おまけ)

自動生成されるXHMTML以外の情報の出力

XML, RSS,SVG...

画像ファイル等のダウンローダ

学生の頃でWard法クラスター分析したのものを

(30)

公開への道のり(おまけ)

renderContentOn: html

! self requestContext respond: [:response |

! ! response

! ! initializeOn: self svg ;

contentType: 'text/xml']

(31)

公開への道のり(おまけ)

(32)
(33)

現在の澤田農園

Web

サイトの状況

• 昨年(2010秋∼2011春)と比べるとサイトアクセス数は2倍

• 予約は好調(平均サイト滞在時間は5分)

• 大きなシステムトラブルはなし

• 予約システム公開後,2回仕様変更(積極的な業務改善)

• 更なる要望なども上がっている

Smalltalkのシステムでも十分満足してもらえる

(34)

Smalltalk

を使って良かった点・悪かった点

良かった点 悪かった点

•プロトタイプがすぐに作れてイ

メージを持ってもらえた

•Smalltalk(Pharo)でもパ

フォーマンスとして問題ないこ とが実感できた

•画面デザインと分業して作ると

大変(SmalltalkでHTMLまでも記

述する欠点?)

•ログ出力ライブラリ

•POSIXの正規表現ライブラリし

(35)

今後の改善

• 画面設計からのSeasideへの反映(画面モックをどのように反映するか)

• 共通ソースの管理(Gitでの管理を容易にする)

• リカバリと障害検知対策の強化(ログ等)

その他

(36)

参照

関連したドキュメント

The categories of prespectra, symmetric spectra and orthogonal spec- tra each carry a cofibrantly generated, proper, topological model structure with fibrations and weak

This “index jumping” phenomenon in order to stay on a “continuous eigenvalue branch” is quite general: It applies to all simple eigenvalues for all boundary conditions on the jump

Arnold This paper deals with recent applications of fractional calculus to dynamical sys- tems in control theory, electrical circuits with fractance, generalized voltage di-

Arnold This paper deals with recent applications of fractional calculus to dynamical sys- tems in control theory, electrical circuits with fractance, generalized voltage di-

Marco Donatelli, University of Insubria Ronny Ramlau, Johan Kepler University Lothar Reichel, Kent State University Giuseppe Rodriguez, University of Cagliari Special volume

In this article we prove a classification theorem (Main theorem) of real planar cubic vector fields which possess two distinct infinite singularities (real or complex) and

In fact, it turns out that most of the geometric invariants of toposes considered in the literature, notably including the property of a topos to be localic (resp. atomic,

The reported areas include: top-efficiency multigrid methods in fluid dynamics; atmospheric data assimilation; PDE solvers on unbounded domains; wave/ray methods for highly