はじめてのSeaside

Similar documents
: _ ( ) := ( + ) ^ ( )

JavaScript 演習 2 1

スケジューリングおよび通知フォーム のカスタマイズ

PowerPoint プレゼンテーション

ボタンイベントアプリイベント処理を含むアプリとして, ボタンをもち, ボタンを押すと文字列を表示するアプリを作る. このアプリは,HelloWorld アプリを改造して作成するため, アプリ作成の途中からの手順を示す. 1. ボタンの設置 (1) レイアウトにボタンを追加するパレットの フォーム ウ

Microsoft Word 基_シラバス.doc

10th Developer Camp - B5

JP-2-Develop Websites and Components in AEM v6x_(V3_after QA)_1111

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

メディプロ1 Javaサーブレット補足資料.ppt

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

CodeGear Developer Camp

IBM Business Process Manager CSS による Coach レイアウト制御ガイド WebSphere 2014 IBM Corporation

Si 知識情報処理

LightSwitch で申請システム Windows ストアアプリで受付システムを構築してみた 情報政策グループ技術職員金森浩治 1. はじめに総合情報基盤センターでは 仮想サーバホスティングサービスや ソフトウェアライセンス貸与といった さまざまなエンドユーザ向けサービスを行っている 上記のよう

◎phpapi.indd

(8) [ 全般 ] タブをクリックします (9) [ インターネット一時ファイル ] の [ 設定 ] ボタンをクリックします (10) [ 保存しているページの新しいバージョンの確認 ] から [ ページを表示するごとに確認する ] をクリックします (11) [OK] ボタンをクリックしていき

XAMPP で CMS のお手軽 テスト環境を手に入れよう 2011/5/21 上村崇 1

Blue Asterisk template

WinXp-Rmenu

C#の基本

目次 概要... 2 フォームレイアウトデザイナー機能の設定... 3 設定したフォームレイアウトデザイナーの確認...14 その他スタイルの設定...15 フォームレイアウトデザイナーをエクスポート...17 フォームレイアウトデザイナーをインポート...18 インポート時の制限事項...19 リ

PowerPoint プレゼンテーション

インターネット EDI システムを使用する前の準備 目次 動作環境について... 2 Internet Explorer7.0 / 8.0 をご利用の場合の設定方法... 3 [1] インターネット EDI システムを利用するための標準的な設定... 3 [2] ブラウザ型で帳票を利用する場合に必要

WebARENA SuiteX V2 EC-CUBE 2.13 インストールマニュアル ( 標準 MySQL+ 非 SSL ) 作成 :2014 年 2 月 Ver.1.1

Javaの作成の前に

スライド 1

Microsoft PowerPoint - G-1_Flexでつくる初めてのRIA.ppt

Microsoft PowerPoint ï½žéł»å�’å–¥æœ�ㇷㇹㅃㅀ㇤ㅳㇹㅋㅼㅫ曉逃.ppt [äº™æ‘łã…¢ã…¼ã…›]

2. 生田仮想デスクトップ PC の接続方法 生田仮想デスクトップ PC に接続する方法は 次の 2 通りです 1. HTML アクセス Internet Explorer や Safari などのブラウザを用います PC に特別なソフトウェアをインストールす る必要が無いので 管理者権限をもってい

はじめに このマニュアルは BACREX-R を実際に使用する前に知っておいて頂きたい内容として 使用する前の設定や 動作に関する注意事項を記述したものです 最初に必ずお読み頂き 各設定を行ってください 実際に表示される画面と マニュアルの画面とが異なる場合があります BACREX-R は お客様の

電子入札システム利用時に必要な Internet Explorer のオプション設定手順 2011 年 3 月版 電子入札システムを利用する上で必要な Internet Explorer の設定について下記に示します ご利用の OS とブラウザのバージョンを確認し 設定を行ってください 1. Win

更新履歴 変更履歴 版数 リリース日 更新内容 第 1 版 2017/5/15 第 1 版発行 第 2 版 2017/7/13 更新履歴 変更内容を追加 (2ページ) 編集の前に を追加(8 ページ ) ブロックエディタ スマートモード エディタモード の説明を追加 (10~12 ページ ) ブロッ

テキストファイルの入出力1

3 アドレスバーに URL を入力し ( 移動ボタン ) をタップします 入力した URL のホームページに移動します ネットワークへのログオン 画面が表示された場合は ユーザー名 を確 認し パスワード を入力して OK をタップしてください ホームページがうまく表示されないときは Opera B

KeyWeb Creator 概要 What s KeyWeb Creator? 動的なホームページを作成するためのツール!! 従来の Web ページ DB を利用した Web ページ <HTML> <HEAD> <TITLE>show_book</TITLE> </HEAD> <BODY> <DI

2. 生田仮想デスクトップ PC の接続方法 生田仮想デスクトップ PC に接続する方法は 次の 2 通りです 1. HTML アクセス Internet Explorer や Safari などのブラウザを用います PC に特別なソフトウェアをインストールす る必要が無いので 管理者権限をもってい

Microsoft Word - Gmail-mailsoft設定2016_ docx

メディプロ1 Javaプログラミング補足資料.ppt

. はじめに 動作環境の全ブラウザで 本書の設定を行ってください 本設定を行わない場合 システムが 正常に動作しない可能性がありますので 必ず設定をお願いいたします また 本書の中で 画 像に番号を付与している箇所以外の設定は お使いの環境のままでご使用ください 参考 : 動作環境の全ブラウザについ

Visual Studio 2017 RC インストール & ファーストステップガイド 2016 年 11 月 16 日 (V1.0)

WinXp-Rmenu

Windowsユーザでも 手軽に作れるiPhoneアプリ

AppsWF ワークフロー設定ガイド Ver.1.1 株式会社オプロ

【お試し版】Web制作者のためのCSS設計の教科書(非売品)

Microsoft PowerPoint - Tutorial_6.ppt

Prog2_6th

Prog2_12th

Cuoreテンプレート

JACi400のご紹介~RPGとHTMLで簡単Web化~

Microsoft Word - EndNoteWeb( _.doc

9 WEB監視

CodeGear Developer Camp

目次 1 はじめに 基本的な仕組み セットアップ方法 発行する サイトコンテンツに追加する 使い方 初期画面 申請タイプ定義の管理 登録と編集 添付ファイル..

2 目次 1. 基本操作 ウィジェットとは何か ウィジェットの目的と構成 ウィジェットの設置 ウィジェットのカスタマイズ ウィジェットコードの構成 ウィジェットの外観を変更する..

Microsoft Word - RefWorksコース( _.doc

平成30年度 パソコン・ネットワークの設定について

(Microsoft PowerPoint - ClickFramework.ppt [\214\335\212\267\203\202\201[\203h])

Microsoft Word - (修正)Internet Explorer 8 9設定手順 受注者.DOC

PowerPoint プレゼンテーション

vi 目次 画像のサイズ設定 画像の効果 画面の取り込みとトリミング Office の共通基本操作 図形 図形の挿入と削除 図形の編集 図形の背景色の透過 Office

Java言語 第1回

Delphi/400でFlash動画の実装

Rmenuフレームワーク

ファイルを直接編集する画面を切り替えることができる. 図 3 標準のレイアウトを削除する (2) グラフィカル レイアウト画面で LinearLayout(Vertical) を追加するパレットウィンドウの レイアウト の中にある LinearLayout(Vertical) をドラッグして, 編集

Create!Form V11 - 機能リファレンス - テスト実行

プロアクシアコンサルティング株式会社 Outlook アドインマニュアル Office365 社外メール送信警告 & 添付ファイル暗号化アドイン (WEB 版 )V1.3.2 内容 添付ファイルの暗号化... 2 パスワード通知メールの送信... 8 社外メール送信時の警告 デスクトップ

Prog2_6th

任意の間隔での FTP 画像送信イベントの設定方法 はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページ

1. マイページの取得 学情主催イベント原稿入稿システム URL 上記 URL にアクセスしてください ( ブラウザに直接入力してください ) 1-1. メールアドレスの入力 トップページ 上記の学情主催イベント原

KDDI ホスティングサービス G120 KDDI ホスティングサービス G200 WordPress インストールガイド ( ご参考資料 ) rev.1.2 KDDI 株式会社 1

PowerPoint Presentation

VB実用Ⅲ⑩ フリーデータベースⅡ

プログラミング基礎I(再)

プレポスト【問題】

intra-mart ワークフローデザイナ

JavaScript演習

スライド 1

1. 報告依頼業務 報告書集計システムを利用して 本部の報告依頼者が 売上実績見通しを各支社から収集し 報告書を作成します 依頼側の業務 1

BACREX-R クライアント利用者用ドキュメント

PowerPoint プレゼンテーション

ご存知ですか? データ転送

PowerPoint Presentation

Confidential

専門研修プログラム検索システムマニュアル(一般)

数のディジタル化

brieart変換設定画面マニュアル

本文中の記号の意味 本文中で使用している記号の意味について以下に示します システムの操作上または処理の手続き上において 特に注意していただきたい事項を記載しています 記載内容を必ずお読みください システムの操作上または処理の手続き上において 参考にしていただきたい事項を記載しています 必要に応じてお

SAMBA Stunnel(Mac) 編 1. インストール 1 セキュア SAMBA の URL にアクセスし ログインを行います xxxxx 部分は会社様によって異なります xxxxx 2 Mac OS 版ダウンロー

新規インストールガイド Microsoft Office Professional Plus 2016 本書は Download Station から Microsoft Office Professional Plus 2016( 以下 Office) をダウンロ ドし 新規インストールを行う手順

Microsoft Word - XOOPS インストールマニュアルv12.doc

KDDI Smart Mobile Safety Manager Apple Business Manager(ABM) 運用マニュアル 最終更新日 2019 年 4 月 25 日 Document ver1.1 (Web サイト ver.9.6.0)

Mobile Access簡易設定ガイド

Oracle SALTを使用してTuxedoサービスをSOAP Webサービスとして公開する方法

変更履歴 日付 ver 変更箇所 変更内容 2016/8/ 新規作成 2017/1/ 全体 参照 以下 等に係る記載揺れの統一 2017/2/ 全体 参照先の記載を修正 2017/5/ ASM に情報登録 リンクの URL を修正 参考リンク集

Microsoft Word - RefWorksコース doc

メール設定

R76/Gaia ブリッジ構成設定ガイド

11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS デザインパターンとは? デザインパターン 過去のソフトウェア設計者が生み出したオブジェクト指向設計に関して, ノウハウを蓄積し 名前をつけ 再利用しやすいようにカタログ化したもの 各デ

改訂履歴 項番版数作成日 / 改訂日変更箇所変更内容. 平成 28 年 5 月 3 日新規章構成の変更, 分冊化に伴い新規作成 (i)

Transcription:

はじめての Seaside - 異端の Web アプリケーションフレームワーク - 梅澤真史 <ume@softumeya.com>

Seaside のコンセプト 異端 であること 長年にわたって Web の世界では開発のためのベストプラクティスが蓄積されてきた 出来る限り状態を保持しない注意深く吟味された意味のある URL を使うモデルと表示を分離するためにテンプレートを用いる等である Seaside はこうしたルールを全て破った Web アプリケーションフレームワークだ Web 開発でこれまで叡智とされてきたことを放棄してみると何が得られるのか? 実に多くのことが 得られたのだ --Avi Bryant

Seaside の特徴 継続 による状態の保持 ステートフルな Web ユーザの実行段階ごとに状態を保持 URL は自動的に作られる REST と違うアプローチ 実行状態を維持するために存在 テンプレートの否定 ページではなくコンポーネントを意識 HTML はあくまでコード (Smalltalk) で生成 =>Web アプリ開発にオブジェクト指向を取り戻した

Seaside の MVC よく Web 系にみられる なんちゃって MVC ではない C が手続きの集合 V は表示テンプレート M はただのデータホルダ などというものが MVC と呼ばれているが... Seaside の MVC は GUI で見られる本来の MVC にきわめて近い VC 一体型の MVC( コンポーネントモデル ) 高度に抽象化されており Web に関する雑多な知識が不要 (HTTP HTML JavaScript など ) 本当に GUI アプリを作る感覚でよい

インストール SeasideJOne を使うのが最も簡単 http://swikis.ddo.jp/umejava/seasidejone zip を展開して 起動するのみ ダウンロードから 10 秒で立ち上がる Web アプリケーションサーバ + 開発環境 Seaside 2.8 + 日本語化パッチ (SeasideJ) Windows, Mac, Linux 共通 USB メモリに入れて持ち運べば どこでも開発できる!

最初のアクセス 管理ツールにアクセス http://localhost:9090/seaside/config ユーザ名 : admin パスワード : seaside Seaside サーバが提供しているアプリケーション ( コンポーネント ) 群が表示される

デモの確認 Counter にアクセス http://localhost:9090/seaside/examples/counter ++ や--のリンクをクリックしてみる ブラウザのbackボタンを押してみる 複数のブラウザを立ち上げてアクセスしてみる

何がうれしいのか? 継続 (Continuation) の威力 アプリケーションの状態をきめ細かくサーバ側に保持 リクエストごとに接続が切れる HTTP なのに! ブラウザの Back ボタンを押しても大丈夫

URL の秘密 自動生成される URL をよく見ると... http://localhost:9090/seaside/examples/coun ter?_s=dprpbmsjowwmwoki&_k=vatuosrj _s=dprpbmsjowwmwoki セッション ID ユーザを特定 _k=vatuosrj 継続 ID ユーザのアクションを特定

ステートフルな Web ユーザのアクションごとに状態を保持 あるアクションを何度でも実行できる Web アプリでもっとも苦労する部分を気にしなくとも良い

充実の開発環境 Web ブラウザから ハロー インスペクタ ブラウザ スタイルシートエディタ プロファイラ さらに Smalltalk のデバッガと連携 インタラクティブな開発環境が 強力に開発を支援してくれる

コンポーネントとは MVC の V と C に該当する部品 HTML を生成して (V) ユーザからのイベントを受け付ける (C) WAComponent コンポーネントの抽象クラス Seaside でアプリを作るときは まずこのクラスを継承する

コンポーネントの定義 WAComponent のサブクラスとして MyComponent を定義 MyComponent を Seaside に登録する MyComponent class>>initialize self registerasapplication: 'sample' 定義して MyComponent initialize を do it http://localhost:9090/seaside/sample 白紙の画面が表示される

コンポーネントの表示 ( レンダリング ) HTML を直に書かない 他の Web アプリ開発フレームワークで見られるような いわゆるテンプレートは使わない テンプレートは生きたコードではない 正しい HTML になるかのチェックが大変 デバッグも面倒 Smalltalk の開発環境でチェックできない メッセージ送信でより簡単に HTML を生成できる

001 レンダリングの手順 WAComponent>>renderContentOn: html をオーバーライド 引数として WARenderCanvas のインスタンスがやってくる MyComponent>>renderContentOn: html html text: ' こんにちは '

002 レンダリングの例 リスト html orderedlist: [ #(foo bar) do: [:each html listitem: [ html text: each]]]. テーブル html table: [ html tablerow: [ #(foo bar) do: [:each html tabledata: [html text: each]]]]. イメージ html image form: ActiveWorld submorphs first imageform.

002-2 見栄えの指定は? レンダリング時に class: や id: などで css のスタイルを設定 MyComponent>>renderContentOn: html html heading class: 'topic'; with: ' 見出しです '. html paragraph class: 'contents'; with: ' これが Seaside'. html div class: 'cool'; with: [ html orderedlist: [ #(foo bar) do: [:each html listitem: [ html text: each]]]. ]

002-2 スタイルシートメソッド WAComponent>>style をオーバーライド css の文字列を返す ブラウザからCSSエディタで編集 確認が可能 MyComponent>>style ' h1 { test-align: center; }.topic { color: red;}.contents { color: blue; }.cool { margin: 5%; } li { background-color: #ecf3e1; border: 1px solid #c5dea1; } '

003 コンポーネントの処理 ( コールバック ) GUI でいうところの イベントハンドラ リンクやフォームのボタンが押されたときの処理を記述する Smalltalk のブロックで書く html anchor callback: [self inform: Time now]; with: ' 今の時刻は?'

004 コールバックの例 フォームの場合 morph morph := ActiveWorld submorphs first. html form: [ html textinput value: morph extent; callback: [:value morph extent: (Point readfrom: value)]. html submitbutton value: ' サイズ変更 '. ]. html image form: morph imageform

005 簡略版コールバック on:of: を使ってモデルと関連づける html form: [ html textinput on: #name of: customer. html textinput on: #address of: customer. html submitbutton. ] callback: の簡略版 customer の name address メソッドが呼ばれて値が表示される Submit すると customer の name: address: メソッドが呼ばれて値が入る

状態の保持 単にコンポーネントにインスタンス変数を定義すればよい 手動でセッションの辞書に値を出し入れなどしない 継続により状態を保持したい変数群については states メソッドで明示的に示す ( ブラウザの Back ボタン対応 ) MyComponent>>states Array with: object. object は self でもインスタンス変数でも良い

005-2 コンポーネントの遷移 call: とanswer: 別のコンポーネントに制御を移すにはcall: を使う 新たな ( モーダル ) ダイアログを開くイメージ いつでも answer: で call: した側に戻ることができる 画面遷移のための XML など不要! answer: B A>>methodA value := self call: (B new) B>>methodB self answer: value A call:

継続の制御 Back ボタンで戻ることができない処理の区切りを作りたい場合 WAComponent>>isolate: を使う 継続の区切り ブロック内でしか 行き来できない ワークフロー的な処理の流れを示すための WATask クラスが用意されている WATask>>go をオーバーライドする WAStoreTask を参照のこと

ワークフロー記述の例 MyShoppingTask>>go cart := WAStoreCart new. self isolate: [[self fillcart. self confirmcontentsofcart] whilefalse]. self isolate: [ shipping shipping := self getshippingaddress. self shipto: shipping]. self displayconfirmation.

Seaside の得意分野 複雑な処理の流れを持つ Web アプリであっても簡単に作れる 継続の威力 単純な CRUD であれば Rails でいいが... オブジェクト指向を駆使したくなるような複雑なドメインの Web アプリ構築に向いている

その他 便利な部品群 WASimpleNavigation タブを使ったページの切り替え WATableReport リッチなテーブルの表示 ( ソート機能など ) WALabelledFormDialog ラベル付きフォームの生成 WABatchedList 複数ページビュー ( ページング ) の作成

Seaside の拡張 ShoreComponents 便利なウィジェット群 http://www.squeaksource.com/shorecomponents.html BeachSand Configuration をファイルに保存 http://squeaksource.blueplane.jp/beachsand.html Magritte モデルのメタ情報からコンポーネントを自動生成する http://www.lukas-renggli.ch/smalltalk/magritte Scriptaculous Scristaculous (Web 2.0 系の JavaScript ライブラリ群 ) JavaScript を意識せずに Seaside から利用できる 2.6 から Seaside に搭載済み

008 Scriptaculous の例 onclick: で effect を指定 MyComponent>>renderContentOn: html html heading id: 'topic'; with: ' 見出しです '. html anchor onclick: (html effect id: 'topic'; toggleblind); with: ' これが Seaside'. Configure リンクの Libraries から SULibrary を MyComponent に追加

モデルや DB との接続 コンポーネントとモデルの分離 モデルは コンポーネントとはまったく独立して定義できる コンポーネントは 単にモデルをインスタンス変数で保持すればよい DB との接続 RDB を想定しない モデルをどのような永続化の仕組みで保存しようが自由 RDB, OODB, File など

運用について Squeak を headless モード ( 画面無し ) で起動 squeak headless <your.image> Apache との組み合わせ ProxyPass と ProxyPassReverse を httpd.conf で設定 SSL の使用 ProxyPass /seaside/ http://localhost:9090/seaside/ ProxyPassReverse /seaside/ http://localhost:9090/seaside/ Seaside そのものは SSL をサポートしない Stunnel などを間に置くことで代用 http://www.stunnel.org/

システム開発事例 (1) Dabble DB (Seaside) Web 上の簡単データベース スプレッドシートの UI を用いて Web 上に自分用のデータベースアプリを簡単につくることができる http://www.dabbledb.com/

システム開発事例 (2) CMS BOX Seaside+Scriptaculous ベースの CMS 全てのページをインラインで編集 D&D や Undo のサポート http://www.cmsbox.ch/

システム開発事例 (3) Gjallar バグトラッキングシステム ワークフロー フォームなどを自由にカスタマイズ可能 http://www.gjallar.se/

GLASS GemStone, Linux, Apache, Seaside, and Smalltalk の略 http://seaside.gemstone.com/ Seaside のバックエンドを GemStone にしてしまう OR マッピングが不要 Continuation が永続化できる まだベータ版 登録すればダウンロードが可能

seabreeze Georg Heeg ek 製の Seaside 拡張 http://seabreeze.heeg.de/ Web ブラウザから WYSIWYG で Seaside の画面を作成できる

まとめ Seasideは Webアプリケーションを迅速に作るためのフレームワーク Webのしがらみを離れて すべてをオブジェクト指向で 自然に 書いていくことができる Ver. 2.9の開発が急速に進行中 Watchしていればきっと時代の最先端 http://seaside.st 連載 : SeasideへGO!! オージス総研 オブジェクトの広場 で 7 月から http://www.ogis-ri.co.jp/otc/hiroba/index.html