28
 ゲットーの斜め上をゆく ゲットーの斜め上をゆく Web Webアプリケーション アプリケーション フレームワークの開発 フレームワークの開発 高橋“ 高橋“ masaka” masaka” 正和 正和

ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

  • Upload
    emasaka

  • View
    5.135

  • Download
    1

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

ゲットーの斜め上をゆくゲットーの斜め上をゆく

WebWebアプリケーションアプリケーションフレームワークの開発フレームワークの開発

高橋“高橋“masaka” masaka” 正和正和

Page 2: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

まずは自己紹介

● 本名:高橋正和

● 通称:masaka、emasaka

Page 3: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

●仕事:文系サラリーマン–どっちかというと営業

Page 4: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

去年のOSC Tokyo/Spring● まるごとシリーズとか会場販売してました

Page 5: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

PHP、Java、Perl、JavaScript...

次はやっぱり...

Page 6: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

まるごとbash● 略して「まるばつ」● (注:嘘です)

Page 7: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

本題本題

Bash on RailsBash on Railsの開発の開発

日本日本bashbashユーザ会 ネタ担当ユーザ会 ネタ担当

高橋“高橋“masaka” masaka” 正和正和

Page 8: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

Bash on Railsとは

● pure bashで書かれたWebアプリケーションフレームワーク

● 実用性を無視し、「いかにRuby on Railsの真似をするか」のみを追求したネタソフト

– ぶっちゃけ、Ruby on Railsのソースをめちゃめちゃ参考にしてます

Page 9: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

目指すノリ

'80年代「Ah!SKI」誌で

公開された伝説のOS「UNI+」(ゆにっくろす)(注:40才以上限定ネタ)

Page 10: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

pure bashってなに?

● Bash内蔵コマンドだけで シェルスクリプトとして実装

–現在1,600行ちょい

Page 11: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

こうしたコマンドは使わない

● sed● grep● cat● tr● …などなど

Page 12: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

もちろん使わない

●awk●Perl●Python●Ruby

Page 13: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

使っちゃったもの

●Apache–これはしょうがないですよね

Page 14: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

使っちゃったもの(続)

● RDBMSのコマンドラインフロントエンド

– SQLite3を利用

– ようするにテキストの表形式をパースしてる

– いちおうconnection_adapterとして抽象化

Page 15: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

心ならずも使った外部コマンド

●mkdir● rm● ln●(正直くやしい)

Page 16: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

そのほか使った外部コマンド

●make–Ruby on Railsでrakeを使うノリを重視したつもり

Page 17: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

Ruby on Railsインスパイヤ(1)

メタプログラミングで

言語内DSLでDRY!

Page 18: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

データベース定義# database configurationdevelopment:    adapter: sqlite3    database: db/development.sqlite3    timeout: 5000

test:    adapter: sqlite3    database: db/test.sqlite3    timeout: 5000

production:    adapter: sqlite3    database: db/production.sqlite3    timeout: 5000

YAML?

いいえ、シェルスクリプトです

Page 19: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

モデル定義

create_table members t    t.column name string    t.column mailaddress string    t.column comment stringelbat_etaerc もちろんシェルスクリプトです

Page 20: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

Routing定義

map.connect '/meibo/:controller/:action/:id'

やっぱりシェルスクリプトです

Page 21: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

Ruby on Railsインスパイヤ(2)bashでオブジェクト指向

●名づけてbashOO●(ばしょー)

Page 22: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

bashでオブジェクト指向(続)function Presen::instance.takahashi() {    local self=$1    local msg=$2    echo "大きい文字:" $msg}

function Presen::instance.takesako() {    local self=$1    local msg=$2    echo "会場で調整:" $msg}

Object.extend Presen

takahashiメソッド

takesakoメソッド

どう見てもシェルスクリプトです

Page 23: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

Ruby on Railsインスパイヤ(3)O/Rマッパー

●Active Recordもどき

●名づけてSHar–(しゃー)–O/Rといいつつjoin未対応

Page 24: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

Ruby on Railsインスパイヤ(4)テンプレートエンジンeBash<html>

<head><title>members</title></head><body>

<% for column in $members_columns; do %>  <% var="current_item_${column}" %>  <p>    <b><%=column%>:</b> <% echo ­n "${!var}" %>  </p><% done %>

<% link_to 'Edit' :action='edit' :id="$current_item_id" %><% link_to 'Back' :action='list' %>

</body></html>

eRuby風ですが

Page 25: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

Ruby on Railsインスパイヤ(4)テンプレートエンジンeBash<html>

<head><title>members</title></head><body>

<% for column in $members_columns; do %>  <% var="current_item_${column}" %>  <p>    <b><%=column%>:</b> <% echo ­n "${!var}" %>  </p><% done %>

<% link_to 'Edit' :action='edit' :id="$current_item_id" %><% link_to 'Back' :action='list' %>

</body></html>

もちろん埋め込んでるのはシェルスクリプトです

Page 26: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

その他やったことはいろいろ省略

Page 27: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

やってないこと

● 安全性、安定性、実用性

– XSSとかSQL injectionとかばりばり

Page 28: ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発

   

DEMO

残りの時間で

簡単なWebアプリを作ります