Visual Studio CodeでDjangoをはじめる

以前書いたDjangoに関する記事の閲覧数が多いので、今回は私がDjangoアプリケーションを開発する際の設定について紹介します。

Pythonのインストール

こちら
今更2系を選ぶ理由は無いので、3系の最新をダウンロード・インストールしましょう。

Visual Studio Codeのインストール

PythonはVisual StudioやIntelliJなどのIDEでも開発可能ですが、設定が楽+軽量なので私はVisual Studio Codeを利用しています。
というわけで、まずはVisual Studio Codeをインストールしましょう。

プラグイン追加

Djangoの開発をするうえで必要な以下プラグインをVisual Studio Codeに追加します。

Jinjaについてはテンプレート用です(Djangoテンプレートでもハイライトが効くようになります)。
※Django template用のプラグインもあるのですが、これは.htmlの拡張子レベルで関連付けを行ってしまうため、通常のHTMLを書くときに影響が出ますので利用していません。

プロジェクトの作成

以前の記事を参考にしてください。

Python実行ファイルの定義

Pythonで開発するにあたり、ローカルにインストールしたPythonの実行パスを定義します。
「ファイル」→「基本設定」→「設定」または「エディタ左下の歯車」→「設定」でユーザー設定ファイルを開き、以下を定義してください。
※{path/to/〇〇} にはPythonまたは関連ライブラリがインストールされているディレクトリを定義してください。

実行設定の追加(launch.json)

Pythonに限らず、Visual Studio Codeで開いたプロジェクトを実行するために「F5」キーを押すと、実行する言語を選択するエリアが表示されます(必要に応じてここで対象言語用のプラグインをインストールすることができます)。
ここで言語を選ぶと、Visual Studio Codeでは関連する実行設定ファイル(launch.json)を「プロジェクトルート/.vscode」に自動で生成してくれます。
このファイルにある「Django」の箇所を必要に応じてメンテナンスします(以下は例ですが、初期設定から基本的には変更不要です)。

${config:python.pythonPath}は先ほど設定したpythonPath、${workspaceRoot}は現在Visual Studio Codeで開いているプロジェクトのルートディレクトリを示しています。

実行

エディタ左側の虫マークを選択し、「デバッグ」という表示横のプルダウンから「Django」を選び、横向き三角ボタンを押せば実行されます。
ちなみに、上記設定でデバッグ可能なので、ブレークポイントを貼るとそこで止められますし、変数の中身も確認できます。
ただし、それらは「–noreload」が無ければできません。

なので、通常の「ファイル変更」→「リロード」という手順を踏む場合は、上記設定から「–noreload」を除外して実行することになります(この場合、エディタのデバッグコンソールにも何も出力されません)。
eclipseやIntelliJでも同様のようです。

なお、私個人が作っているものがこちらにありますので、Djangoでの開発に興味のある方は是非ご覧ください。
※PRも受け付けております。

Djangoの記事は需要がありそうなので、またそのうち書きます。

Djangoを利用してアプリを作る

以前も少し書きましたが、C#とASP.NETで作成していた自分用の「レシピ管理システム」を、現在Djangoで作り直しています。
※リポジトリはこちら

DjangoはPythonで作られたフルスタックフレームワークです。
よく言語比較をされるRubyではRuby on Railsが有名であり、そちらのほうが巷では人気がありますが、
昨今の機械学習ブームも手伝ってPythonという言語自体はとても注目されています。

以前バッチ処理でPythonを利用していた私としては、せっかくなのでWebアプリも作ってみようということで挑戦することにしました。
ただ、Djangoに関する文献やドキュメントは英語が多く、最低限動作させるのにも結構苦労しましたので、今後Djangoを学ぶ方の役に立てばいいなと思いこの記事を書きます。

ちなみにチュートリアルは基本日本語ページですが、半分ぐらいは英語ページのままだったりします。

プロジェクト≠アプリケーション

他言語でWebフレームワーク利用経験があると、まずここで混乱します(私もそうでした)。

たとえば「CakePHP」の場合、以下コマンドでアプリケーションを作成して、それをそのままプロジェクトとして利用します。

先ほどあげた「Ruby on Rails」も同様です。

Djangoの場合、プロジェクト内で機能や用途に応じてアプリを分けるという方針で開発することになります。
最近のソーシャルゲームだと、ユーザ情報、イベント情報、手持ちのキャラクターなどはすべて別アプリで、それらをまとめて1つのプロジェクトとして管理するようです。
※ここらへんは、作成中のレシピ管理システムにはまだ反映できていません…。

プロジェクト作成

アプリ作成

利用する主なファイル

他のフレームワークであるような「MVC構成」とは少し異なります。
作成したアプリで以下のファイルが配置されますので、それぞれの中で一括管理するようです。

  • urls.py…ルーティング関連
  • views.py…コントローラ関連
  • models.py…モデル関連

urls.pyは、デフォルトではプロジェクト・各アプリそれぞれにあります。
プロジェクトのurls.pyではパスを各アプリへの振り分けを行い、各アプリではそれ以下のパスの振り分けを行っています。

以上、ひとまず基本部分でした。
テンプレートでのヘルパー利用やモデルの設定についても触れたいのですが、それは次回以降にまわします。
興味を持っていただけた方は、まずは上記Bitbucketのリポジトリをご覧ください。

サービスはリリースしてからが勝負

以前、健康診断で引っかかったことをきっかけに、自分用にレシピをまとめるサイトを作成しました。
その当時興味があったASP.NET(C#)で作成したのですが、サーバとして利用しているUbuntuへのデプロイが面倒だったこともあり(当時はMonoもそこまでメジャーじゃなかったので)、あまりメンテナンスできておりませんでした。

そして最近、これをPythonで書き直そうとしています。
Pythonは以前からバッチ処理で利用していたのですが、Webフレームワークとして利用してみたかったということと、今後様々な分野で活かせそうだという期待を込めて本格的に学習することに決めました。

フレームワークには一番メジャーなDjangoを使っているのですが、日本語のドキュメントがほとんどないのでかなり大変です。
困ったときは以下のリファレンスを参照するようにしています(日本語用のページですが、英語のままの部分も多いです)。
Django ドキュメント

1つのプロジェクトに複数のアプリがぶら下がるという構成にはまだ慣れないですが、フルスタックフレームワークということもあり開発は比較的スムーズに進んでいます。
まずは3月中に運用開始できることを目標にしています。

次回はこのDjangoを使った基本的な開発について触れようと思います。