分12突然ですが,皆さんは"Bottle"というPython用のWebフレームワークを知っていますか?"Webフレームワーク"というと,大規模なWebサービスを構築するためのツールで,自分には関係ない,と思われる方も多いかも知れません。趣味でWebサイトを作っている場合でも,写真類は日付やキーワードを元に動的に呼び出したり,家計簿管理用にバックエンドでデータベースを使いたくなることはよくあるでしょう。“Bottle⁠”はそのような際に便利なWebフレームワークで,Pythonのモジュールとして書かれた1つのファイルをimportするだけで,PythonスクリプトがWebアプリになる便利なツールです。筆者自身,まだ半年くらいしか使っていない初心者なものの,2,3のWebアプリを書いてみてその便利さに感心したので,同じような興味を持っている人向けに,今回からしばらく,この"Bottle"というWebフレームワークを紹介してみようと思います。Bottleの実行例"Bottle"はpip等を使ってインストールすることもできるものの,bottle.pyという1つのファイルだけで構成されているので,使いたいディレクトリに配置するだけで使えます。,"Bottle-test"というディレクトリでテスト用のコードを書く場合,そのディレクトリにbottle.pyというファイルをダウンロードするだけでインストールは完了です。bottle.py次にこのディレクトリに次のようなPythonスクリプトを用意します。ファイル名は"hello.py"としておきましょう。debug=True)このスクリプトを起動すると,importされたbottleの機能で,8080番のポートを見張るWebサーバとして動作します。World"というメッセージが表示されます。Worldの例この画面だけではショボく見えるかも知れませんが,httpdサーバを立ちあげなくても,HTMLなページを書かなくても,bottle.pyをimportするだけでWebサービスを提供できるというのは凄いことだと思いませんか?HTMLで簡単なWebアプリを作ろうとすると,入力用のページ⁠,出力用のページ⁠,編集用のページ等々,必要な機能ごとのHTMLファイルを用意して,どのようにデータを受け渡すかを考慮しつつ,各ページをリンクでつないでやる必要がありました。Bottleを使えば,それらの機能は全てPythonの関数として書けるので,1つのスクリプトだけでWebアプリを完結することができます。筆者自身,「⁠Webフレームワーク」というとRailsやStrutsを連想し,「⁠大規模なWebアプリを作るためのもので,高機能ではあるけれど設定や準備が大変そう⁠」⁠,という先入観を持っていたので,Bottleのこの単純さには目から鱗が落ちる思いでした。新しいURLを追加するために,前節のhello.pyに3行ほど書き加えてみます。追加したのは10から13行目です。debug=True)ちなみに14行目のrunコマンドがBottleを起動する命令で,引数に"reloader=True"を指定しておけば,スクリプトを修正すると自動的に再読み込みしてくれるので便利です。,"debug=True"はデバッグメッセージを出力するための指定です。kojima"というメッセージが出力されます。このようにURLと関数を結びつける指定を「ルーティング(routing)」と呼んでいます。ルーティングには完全なURLを指定することも,10行目の"/hello/<name>"のように可変部分を含めることもできます。greet(name)"の引数としてPythonスクリプトに取り込まれます。@route()の"@"はPythonの"デコレータ"という機能で,その名の通り直下の関数を修飾するために使われます。上記の例では,7行目のhello()と11行目のgreet(name)関数を修飾し,return()された結果を8080のポート経由で接続しているクライアント宛に送るように変更して,Webサーバの機能を果しているわけです。Linuxとりまとめ役。人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。