Webアプリケーション

PythonはWeb開発で最も人気のある言語になりました。
今まで難しかったWeb開発をPythonは一挙に簡単にしてみせました。
Web開発はPythonの最も得意とする分野のひとつです。

Webアプリケーションのサンプル

Webアプリケーションのサンプル

Pythonソースの例

   with ibm_db2.connected() as conn:            
       #  ブラウザからの入力値を受け取る。      
       params = bottle2.request.query.decode()                                      

       # SQL を組み立てる。                     
       sql = '''                                
       SELECT T01.SHCODE                                                                
           , VARCHAR(T01.SHNAME, 72) SHNAME                                           
           , T01.SHTANK                                                               
           , VARCHAR(T01.SHSCOD, 12) SHSCOD                                           
           , VARCHAR(T02.HNSNAM, 42) HNSNAM                                           
       FROM QTRFIL.SHOHIN T01                                                         
       LEFT JOIN QTRFIL.HINSHU T02                                                    
       ON T01.SHSCOD = T02.HNSCOD                                                     
       WHERE SHCODE >= ?                                                              
       ORDER BY SHCODE                                                                
'''                                                                              
       stmt = ibm_db2.prepare(conn, sql);                                               
       ibm_db2.bind_param(stmt, 1, params['SHCODE'])   # SHCODE  を SQL にセットする。  

       # SQL を実行する。                                                               
       ibm_db2.execute(stmt)                                                            
                                        

       #  結果のレコードを取得する。            
       values = []                              
       row = ibm_db2.fetch_assoc(stmt)          
       while row != False:                      
         values.append(row)                   
         row = ibm_db2.fetch_assoc(stmt)      
                                           
       #  明細画面の HTM を表示する。           
       return bottle2.template('LISTDEF.HTM', { 
         'values': values,                    
     })  
                            
[解説]
このPythonのソースにはIBM iの知識は全く必要なく
Pythonプログラマーであれば容易に理解することができます。

①SQL文を生成して
②SQL文を実行して
③HTMLテンプレートに結果のレコードを渡す

というシンプルな構造です。
       SELECT T01.SHCODE                                                                
           , VARCHAR(T01.SHNAME, 72) SHNAME                                           
           , T01.SHTANK                                                               
           , VARCHAR(T01.SHSCOD, 12) SHSCOD                                           
           , VARCHAR(T02.HNSNAM, 42) HNSNAM                                           
       FROM QTRFIL.SHOHIN T01                                                         
       LEFT JOIN QTRFIL.HINSHU T02                                                    
       ON T01.SHSCOD = T02.HNSCOD                                                     
       WHERE SHCODE >= ?                                                              
       ORDER BY SHCODE
で記述したSQLのSELECT文を
       # SQL を実行する。   
       ibm_db2.execute(stmt) 
で実行します。
ibm_db2 は Python.400が提供するIBM i DB2/400へのデータ・ベース接続です。
日本語の文字化けもなく安全に接続することができます。
最後には、
     #  明細画面の HTM を表示する。           
     return bottle2.template('LISTDEF.HTM', { 
         'values': values,                    
     }) 
で HTMLテンプレートに結果を渡して表示しているだけの
シンプルな構造です。

Pythonが変えたWebアプリの開発

pin 従来のWebアプリケーションは例えばApacheやTomcatのようなHTTPサーバーを
事前に起動しておいてその上で動作することが必要でしたが、
PythonによるWebアプリケーションではPytyhon自らが
Bottleという名前のHTTPサーバーを持っていますので
ApcheやTomcatのようなHTTPサーバーを事前に起動しておく
必要もありませんしHTTPサーバも必要としません。
Pythonをただ起動するだけで自然にHTMLが表示されるのです。
Pythonが難しかったWebアプリの世界を一挙に簡単なものに変えてしまいました。

RPG IIIプログラマーでもWeb開発できる

pin 実際にあった話ですがある初老のRPG IIIだけの経験のプログラマーが
会社の命令でわずか半年足らずで一人だけでWeb開発を完成させたという
実例が最近ありました。
pin この話は(株)オフィスクアトロがPythonフレーム・ワークの開発を
取り組むキッカケとなりました。
pin このようにPythonによるWeb開発は初心者を問わず
非常に簡単に行うことができます。

PHP やJSPではプログラムがHTML内に混在している

pin PHPやJSP&Servlet(=Java)ではHTMLの内部に
PHPやJavaを混在させて開発するというものです。
一見、やさしそうに見えますが
これではHTMLとJavaScriptにかなり精通している
人でないと開発することができません。
pin 複雑なHTMLインターフェースでは
HTMLインターフェースをWebデザイナーでも
保守することはできなくなってしまいます。
pin また複雑なPHPやJSPを開発する場合は
目的の出力となるHTMLをまず開発して
そのHTMLが出力されるようなPHPやJSP&Sevletを
開発するという手法を取ります。
つまり2度開発するという途方もなく無駄な手法を
取ることになります。
pin これではPHPやJSPが伸び悩むのも無理はありません。

PythonではHTMLインターフェースを完全に分離

pin PythonソースとHTMLテンプレートは完全に分離されており
HTMLインターフェースは独立しています。
pin 複雑なデザイン変更もHTMLをWebデザイナーに渡して
編集してもらうことができます。
あなたが細かなHTMLのデザインまでを勉強する必要は
ありません。
pin それでいて必要あればHTMLにも条件分岐を定義することが
できます。
pin この実用性がPythonがWebアプリケーションとして
多く採用されている理由となっています。

Web開発やるならPythonです

pin このようにPythonによるWeb開発は急速に普及しています。
pin Python.400でも PythonによるWeb開発の事例を
増やしていく計画です。