More Related Content Similar to ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発 (20) ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発1. ゲットーの斜め上をゆく
Webアプリケーション
Webアプリケーション
フレームワークの開発
高橋“ masaka” 正和
高橋“masaka” 正和
2. まずは自己紹介
● 本名:高橋正和
●
通称:masaka、emasaka
3. ●
仕事:文系サラリーマン
– どっちかというと営業
7. 本題
Bash on Railsの開発
Bash on Railsの開発
日本 bashユーザ会
日本bashユーザ会 ネタ担当
高橋“ masaka” 正和
高橋“masaka” 正和
8. Bash on Railsとは
●
pure bashで書かれたWebアプリケーションフ
レームワーク
●
実用性を無視し、「いかにRuby on Railsの真似
をするか」のみを追求したネタソフト
– ぶっちゃけ、Ruby on Railsのソースをめちゃめ
ちゃ参考にしてます
9. 目指すノリ
'80年代「Ah!SKI」誌で
公開された伝説のOS
「UNI+」(ゆにっくろす)
(注:40才以上限定ネタ)
12. もちろん使わない
●
awk
●
Perl
●
Python
●
Ruby
14. 使っちゃったもの(続)
●
RDBMSのコマンドラインフロントエンド
– SQLite3を利用
– ようするにテキストの表形式をパースしてる
– いちおうconnection_adapterとして抽象化
18. データベース定義
# database configuration
development:
adapter: sqlite3
database: db/development.sqlite3
timeout: 5000
YAML?
test:
adapter: sqlite3
database: db/test.sqlite3 いいえ、
timeout: 5000 シェルスクリプトです
production:
adapter: sqlite3
database: db/production.sqlite3
timeout: 5000
19. モデル定義
create_table members t
t.column name string
t.column mailaddress string
t.column comment string
elbat_etaerc もちろんシェルスクリプトです
20. Routing定義
map.connect '/meibo/:controller/:action/:id'
やっぱりシェルスクリプトです
22. bashでオブジェクト指向(続)
function Presen::instance.takahashi() {
local self=$1
local msg=$2 takahashiメソッド
echo "大きい文字:" $msg
}
function Presen::instance.takesako() {
local self=$1
local msg=$2 takesakoメソッド
echo "会場で調整:" $msg
}
どう見てもシェルスクリプトです
Object.extend Presen
24. Ruby on Railsインスパイヤ(4)
<html>テンプレートエンジンeBash
<head>
<title>members</title>
</head> eRuby風ですが
<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>
25. Ruby on Railsインスパイヤ(4)
<html>テンプレートエンジンeBash
<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>
27. やってないこと
● 安全性、安定性、実用性
– XSSとかSQL injectionとかばりばり
28. DEMO
残りの時間で
簡単なWebアプリを
作ります