三流プログラマが脱三流するために書くブログ

PHP, オブジェクト指向プログラミング, デザインパターン, リファクタリング, DDD, 関数プログラミング, etc.

26. Laravelもくもく会 #東京 広尾 に参加した

Lara Cafe が最近開催されないので、寂しいなぁと思っていたところ、以下のイベントのお知らせが届いたので、参加してみました(場所もうちから近かったのでありがたいです)。

hiro-o.connpass.com

参加者 6 人(定員 8 人)と少なかったですが、Lara Cafe 同様、若い方が多く、みなさん集中してもくもくしてました。

みなさんの自己紹介や成果発表で、Vue.js という単語を何回か耳にしました。 Laravel 5.4 から Vue.js がバンドルされたこともあって、Laravel 関連のイベントへ行くと、Vue.js の話題が多くなったな、と感じます。

もくもく会の前半で、以下のプロジェクトの機能追加をやっていたのですが、やはり Vue.js を使っているので、JS 力をもっと磨かないとなぁ、という決意を新たにしたところです。

nunulk.hatenablog.com

後半はちょっと趣向を変えて、Bottle という Python の超薄フレームワーク(1ファイル)+ Vue.js という構成を試していて、フロントエンドは vue-cli を使って SPA にし、API を提供する Bottle のバックエンドに組み込む、ということをやりました。

こんな構成です。

├── app
│   ├── controllers
│   ├── models
│   ├── requests
│   └── services
├── frontend
│   ├── README.md
│   ├── build
│   ├── config
│   ├── index.html
│   ├── node_modules
│   ├── package.json
│   ├── src
│   └── static
├── public
├── settings.py
└── views

frontend 以下で npm run build すると、public/build 以下に生成された css / js ファイルを、views 以下に html ファイルを吐き出すようになっています。

Python の方は、public/index.py にこれだけ書いて、残りの MVC の部分を app 以下に配置しています。

# -*- coding:utf-8 -*-

import os, sys

path = os.path.join(os.path.dirname(__file__), '../')
sys.path.append(path)

import settings

from bottle import install, run
import bottle_mysql
from app.controllers import *

install(bottle_mysql.Plugin(dbuser=settings.DB_USER, dbpass=settings.DB_PASS, dbname=settings.DB_NAME))

if settings.APP_DEBUG == 'True':
  run(host=settings.APP_HOST, port=settings.APP_PORT, reloader=True)
else:
  run(host=settings.APP_HOST, port=settings.APP_PORT, server='gunicorn')

Bottle はスーパーマイクロフレームワークなので、1ファイルにぜんぶ書いてしまうのもありかなとは思いますが、なんとなく MVC の構成でやるとしたらどうするといいかな、という興味があったのでやってみました。

まぁ、仕事で Python 使う可能性はあんまりなさそうなんで、完全に遊びではありますが、慣れてない言語を書く機会というのは常々持っておきたい、と思っているので、いい機会でした。

いちおう環境も書いておきます:

  • Python 3.6
  • Bottle 0.12
  • Vue.js 2.4

Python はデコレータという仕組みがいいですね、PHP で言うところのアノテーションみたいな記法ですが、こちらは言語機能であり、関数のラッパーの役割をするようです。

PEP 318 -- Decorators for Functions and Methods | Python.org

あと、成果発表のときに、つまったところを言ったら、その場でアドバイスをいただけたので、こういうのも勉強会のありがたみです。

またやるかも、ということだったので、次回開催されたら、ぜひ参加したいです。