ゲットーの斜め上をゆく     Webアプリケーション     Webアプリケーション     フレームワークの開発      高橋“ masaka” 正和      高橋“masaka” 正和             
まずは自己紹介    ●   本名:高橋正和    ●        通称:masaka、emasaka                       
●        仕事:文系サラリーマン        – どっちかというと営業                
去年のOSC Tokyo/Spring    ●   まるごとシリーズとか会場販売してました                    
PHP、Java、Perl、JavaScript...      次はやっぱり...                  
まるごとbash    ●   略して「まるばつ」    ●   (注:嘘です)                     
本題    Bash on Railsの開発    Bash on Railsの開発    日本 bashユーザ会    日本bashユーザ会 ネタ担当      高橋“ masaka” 正和      高橋“masaka” 正和       ...
Bash on Railsとは    ●        pure bashで書かれたWebアプリケーションフ        レームワーク    ●        実用性を無視し、「いかにRuby on Railsの真似        をするか」...
目指すノリ    80年代「Ah!SKI」誌で      公開された伝説のOS    「UNI+」(ゆにっくろす)    (注:40才以上限定ネタ)           
pure bashってなに? Bash内蔵コマンドだけで● シェルスクリプトとして実装    –現在1,600行ちょい             
こうしたコマンドは使わない    ●        sed    ●        grep    ●        cat    ●      tr    ● …などなど                
もちろん使わない    ●        awk    ●        Perl    ●        Python    ●        Ruby                   
使っちゃったもの    ●        Apache        – これはしょうがないですよね                  
使っちゃったもの(続)    ●        RDBMSのコマンドラインフロントエンド        –   SQLite3を利用        –   ようするにテキストの表形式をパースしてる        –   いちおうconnecti...
心ならずも使った外部コマンド    ●        mkdir    ●        rm    ●      ln    ●      (正直くやしい)                 
そのほか使った外部コマンド    ●        make        – Ruby on Railsでrakeを使うノリを        重視したつもり                     
Ruby on Railsインスパイヤ(1)    メタプログラミングで      言語内DSLで       DRY!               
データベース定義    # database configuration    development:        adapter: sqlite3        database: db/development.sqlite3      ...
モデル定義    create_table members t        t.column name string        t.column mailaddress string        t.column comment str...
Routing定義    map.connect /meibo/:controller/:action/:id                 やっぱりシェルスクリプトです                           
Ruby on Railsインスパイヤ(2)          bashでオブジェクト指向    ●      名づけてbashOO    ●      (ばしょー)                   
bashでオブジェクト指向(続)    function Presen::instance.takahashi() {        local self=$1        local msg=$2                      ...
Ruby on Railsインスパイヤ(3)               O/Rマッパー    ●        Active Recordもどき    ●        名づけてSHar        –(しゃー)        – O/Rと...
Ruby on Railsインスパイヤ(4)    <html>テンプレートエンジンeBash    <head>    <title>members</title>    </head>                            ...
Ruby on Railsインスパイヤ(4)    <html>テンプレートエンジンeBash    <head>    <title>members</title>                        もちろん埋め込んでるのは   ...
その他やったことは      いろいろ省略         
やってないこと    ●   安全性、安定性、実用性        –   XSSとかSQL injectionとかばりばり                            
DEMO      残りの時間で    簡単なWebアプリを       作ります         
Upcoming SlideShare
Loading in …5
×

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

3,651 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,651
On SlideShare
0
From Embeds
0
Number of Embeds
165
Actions
Shares
0
Downloads
6
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

  1. 1. ゲットーの斜め上をゆく Webアプリケーション Webアプリケーション フレームワークの開発  高橋“ masaka” 正和 高橋“masaka” 正和  
  2. 2. まずは自己紹介 ● 本名:高橋正和 ● 通称:masaka、emasaka   
  3. 3. ● 仕事:文系サラリーマン – どっちかというと営業   
  4. 4. 去年のOSC Tokyo/Spring ● まるごとシリーズとか会場販売してました   
  5. 5. PHP、Java、Perl、JavaScript... 次はやっぱり...   
  6. 6. まるごとbash ● 略して「まるばつ」 ● (注:嘘です)   
  7. 7. 本題 Bash on Railsの開発 Bash on Railsの開発 日本 bashユーザ会 日本bashユーザ会 ネタ担当  高橋“ masaka” 正和 高橋“masaka” 正和  
  8. 8. Bash on Railsとは ● pure bashで書かれたWebアプリケーションフ レームワーク ● 実用性を無視し、「いかにRuby on Railsの真似 をするか」のみを追求したネタソフト – ぶっちゃけ、Ruby on Railsのソースをめちゃめ ちゃ参考にしてます   
  9. 9. 目指すノリ 80年代「Ah!SKI」誌で 公開された伝説のOS 「UNI+」(ゆにっくろす) (注:40才以上限定ネタ)   
  10. 10. pure bashってなに? Bash内蔵コマンドだけで● シェルスクリプトとして実装 –現在1,600行ちょい   
  11. 11. こうしたコマンドは使わない ● sed ● grep ● cat ● tr ● …などなど   
  12. 12. もちろん使わない ● awk ● Perl ● Python ● Ruby   
  13. 13. 使っちゃったもの ● Apache – これはしょうがないですよね   
  14. 14. 使っちゃったもの(続) ● RDBMSのコマンドラインフロントエンド – SQLite3を利用 – ようするにテキストの表形式をパースしてる – いちおうconnection_adapterとして抽象化   
  15. 15. 心ならずも使った外部コマンド ● mkdir ● rm ● ln ● (正直くやしい)   
  16. 16. そのほか使った外部コマンド ● make – Ruby on Railsでrakeを使うノリを 重視したつもり   
  17. 17. Ruby on Railsインスパイヤ(1) メタプログラミングで 言語内DSLで DRY!   
  18. 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. 19. モデル定義 create_table members t     t.column name string     t.column mailaddress string     t.column comment string elbat_etaerc もちろんシェルスクリプトです   
  20. 20. Routing定義 map.connect /meibo/:controller/:action/:id やっぱりシェルスクリプトです   
  21. 21. Ruby on Railsインスパイヤ(2) bashでオブジェクト指向 ● 名づけてbashOO ● (ばしょー)   
  22. 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   
  23. 23. Ruby on Railsインスパイヤ(3) O/Rマッパー ● Active Recordもどき ● 名づけてSHar –(しゃー) – O/Rといいつつjoin未対応   
  24. 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. 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>   
  26. 26. その他やったことは いろいろ省略   
  27. 27. やってないこと ● 安全性、安定性、実用性 – XSSとかSQL injectionとかばりばり   
  28. 28. DEMO 残りの時間で 簡単なWebアプリを 作ります   

×