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プログラマーであれば容易に理解することができます。

  1. ①

    SQL文を生成して

  2. ②

    SQL文を実行して

  3. ③

    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アプリの開発

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

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

  • 実際にあった話ですがある初老のRPG IIIだけの経験のプログラマーが
    会社の命令でわずか半年足らずで一人だけでWeb開発を完成させたという
    実例が最近ありました。

  • この話は(株)オフィスクアトロがPythonフレーム・ワークの開発を
    取り組むキッカケとなりました。

  • このようにPythonによるWeb開発は初心者を問わず
    非常に簡単に行うことができます。

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

  • PHPやJSP&Servlet(=Java)ではHTMLの内部に
    PHPやJavaを混在させて開発するというものです。
    一見、やさしそうに見えますが
    これではHTMLとJavaScriptにかなり精通している
    人でないと開発することができません。

  • 複雑なHTMLインターフェースでは HTMLインターフェースをWebデザイナーでも
    保守することはできなくなってしまいます。

  • また複雑なPHPやJSPを開発する場合は 目的の出力となるHTMLをまず開発して
    そのHTMLが出力されるようなPHPやJSP&Sevletを 開発するという手法を取ります。
    つまり2度開発するという途方もなく無駄な手法を 取ることになります。

  • これではPHPやJSPが伸び悩むのも無理はありません。

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

  • PythonソースとHTMLテンプレートは完全に分離されており
    HTMLインターフェースは独立しています。

  • 複雑なデザイン変更もHTMLをWebデザイナーに渡して
    編集してもらうことができます。
    あなたが細かなHTMLのデザインまでを勉強する必要は
    ありません。

  • それでいて必要あればHTMLにも条件分岐を定義することができます。

  • この実用性がPythonがWebアプリケーションとして
    多く採用されている理由となっています。

Web開発やるならPythonです

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