PyCon APAC 2016 in KoreaでLTしてきた

昨年の台湾の開催につづいて、今年もPyCon APAC 2016 in Koreaに参加してきました。

PyCon APACについて

PyCon APACは名前の通りアジア太平洋地域の人たちが集まるPythonのカンファレンスです。 昨年は台湾で開催されて700人ぐらいが集まりましたが、今年は韓国の開催でしたが1500人が集まったらしい。規模がかなり大きいですね

前回の参加の様子は gihyo.jp さんの方で参加レポートを連載させていただいていたのでそちらをご覧ください。

gihyo.jp

今年も gihyo.jp さんの方で参加レポートを書くので、詳細はそちらをご覧ください。

追記

公開されました

gihyo.jp

Lightning Talk

昨年につづいて今年もLTしてきました。動画はこちら↓。@terapyonさん撮影ありがとうございました :) そのうちPython KRの公式チャンネルでも公開されるかもしれません。

今動画を見てみると文法や発音の気になる箇所がありますが、これでも昨年台湾でやってきたLightning Talkに比べるとかなりマシになってそうです(実際話してる時は緊張もあるのでこうやって動画で振り返らないとわからないですね)。 昨年のLTの様子は今見るとちょっと笑えるんですがあまりにも恥ずかしい自分が写ってるのでどうしても見たいって人だけYoutubeで探してみてください。

発表が終わって席に戻る時に、このライブラリいいねって言ってくれる人がいてだいぶ救われました。

スライド

発表の内容としては以前このブログでも紹介したFeedyというフレームワークの紹介です。

nwpct1.hatenablog.com

2年前に進学のためにTOEICの勉強をしていた*1のですが、その後英語の勉強をかなり減らしてしまっていたので、PyConやEuroPython、DjangoConの動画で気になるものをとにかく見ながら言い回しを考えたり雰囲気を真似て練習していました。 まだまだ英語に関しては努力が足りてないですね。

発表が終わって席に戻る時に、このライブラリいいねって言ってくれる人がいてちょっと感動してました。

感想

f:id:nwpct1:20160822233244j:plain

韓国初めてだったのですが、人は優しいしビールは安いしとてもいい国でした。 Lightning Talkに関しては昨年に比べて一番成長が感じられた部分なので、やっぱり発表することは毎年続けてみます。 来年はマレーシアでPyCon APACがあるそうですよ。Lightning Talkではなく通常Talkのプロポーザル出したいですね。

あと来年からは社会人なので、USのPyConとかEuroPythonに会社のお金で行きたいな

以下、宣伝

PyCon JP

2015年から台湾・日本・韓国とPyConには3回参加してきたのですが、発表自体は全てLightning Talkしかやってませんでした。 来月開催されるPyCon JP 2016で初めてTalkセッションさせていただけることになったので、現在資料作成中です。

pycon.jp

1日目15:30からです。是非聞きに来てください

Python入門者の集い

今月末に渋谷ヒカリエで開催される勉強会にゲストスピーカーとして呼んでいただけました。 もう一人ゲストスピーカーとして、一緒にPyCon APAC 2016 in Koreaに参加していたPyLadies Tokyoの @a_macbee さんも来るので是非来てください。

120人もいるので、今ならまだキャンセル待ちで入れると思います。

python-nyumon.connpass.com

*1:その時のスコアは620でした。今はもう少し低いかもしれません

Angular2のComponentライブラリ ng2-card を公開しました

Angular2の練習を兼ねて、ポートフォリオを書き換えていたのですがせっかくなので、↓のページのCard ViewのComponentをnpmに登録しました。 まだ結構雑な部分は残ってるのですが、とりあえず動くところまでできたのでAngular2のライブラリデビューです。

c-bata's portfolio | c-bata.link

example

github.com

以下はメモ

Angular2の勉強

Angular2自体はTour of Heroesという公式チュートリアルから始めました。

あとはKobinというPythonのWebフレームワークを作っているのですが、それのサンプルプロジェクトとしてAngular2を使ったTODOアプリを作ってみました。

kobin-example

npmへの公開

npmへの公開はこちらを参考にしました。

いくつかよく分からない挙動にぶつかったりしたのですが、まだRCだからということで納得しました。 何かエラーが出た時にどこからたどればいいのか分からなくいエラーメッセージが出ることも多かったので、自分にはまだ本番環境とかでの使用が難しそう。

使ったもの

  • Angular2/TypeScript
  • webpack
  • tslint

また今度練習にReact.js版作ってみます

Flask 0.11で追加されたコマンドラインインタフェースを追ってみる

本日ついに、Flaskのnew versionがリリースされました。めでたいですね! 前回のリリースが2013/06/14だったので、ほぼ3年ぶりです。

バージョンを1.0に上げるという話がありマイルストーンも立っていましたが、0.11としてリリースされました。 1.0にしなかったのは、Flaskのコマンドラインインタフェースが特に大きな理由となっているようです。 この記事では、そのコマンドラインインタフェースを追ってみます。

Flask 0.11 Released | The Pallets Projects

Flask-Script

これまでdjangoのmanage.pyみたいなものが欲しい場合、Flask-Scriptというライブラリがよく使われていたと思います。

# http://flask-script.readthedocs.io/en/latest/
# manage.py

from flask.ext.script import Manager

from myapp import app

manager = Manager(app)

@manager.command
def hello():
    print "hello"

if __name__ == "__main__":
    manager.run()

こんな感じのmanage.pyを作成すると、 manage.py runserver とか manage.py shell が使えます。 またFlask-MigrateというFlask-Scriptを利用したライブラリを使うことで、DBのマイグレーション等もDjangoライクに行うことができ、とても便利でした。 ちなみにFlask-Migrateの開発者のmiguelgrinbergさんは、Flask Web Developmentという書籍でも紹介しています(これとても良書でした)。

Flask Web Development: Developing Web Applications with Python

追記

Flask-Migrateは今回のFlaskのClickベースのCLIをサポートするのか聞いてみたところ、後方互換を保つように導入するのがやはり難しそうな感じ。FlaskのClickベースCLIのサポートはまだ時間がかかるかなぁという雰囲気

github.com

Flaskの新しいコマンドラインインターフェース

Added :command:flask and the flask.cli module to start the local debug server through the click CLI system. This is recommended over the old flask.run() method as it works faster and more reliable due to a different design and also replaces Flask-Script.

Flask開発者のmitsuhikoさんはclickというコマンドラインインタフェースを作成するための便利なライブラリを開発していました。 Flask-ScriptやFlask-Migrateは便利で広く使われていましたが、Flask-ScriptがClickを使わずに実装されています。 今回の変更はClickベースのCLIに統一したかったようです。早速0.11を入れてHelpを表示してみました

$ flask --help
Usage: flask [OPTIONS] COMMAND [ARGS]...

  This shell command acts as general utility script for Flask applications.

  It loads the application configured (either through the FLASK_APP
  environment variable) and then provides commands either provided by the
  application or Flask itself.

  The most useful commands are the "run" and "shell" command.

  Example usage:

    $ export FLASK_APP=hello
    $ export FLASK_DEBUG=1
    $ flask run

Options:
  --help  Show this message and exit.

Commands:
  run    Runs a development server.
  shell  Runs a shell in the app context.

Run ServerとRun Shell

まずアプリケーションがFlaskのアプリケーションを見つけられるように環境変数 FLASK_APPPythonのモジュールパスもしくはファイルパスを指定する必要があります。 サーバやシェルの起動は、最初からコマンドが用意されていて、↓のように行うことができます。

$ export FLASK_APP=hello
$ flask run    # Run Server
$ flask shell  # Run Shell

またデバッグモードで起動したい際も FLASK_DEBUG 環境変数で指定できます。いいですね。

CLIのカスタマイズ

ClickベースのCLIに統一されたため、自作のコマンドを追加することがClickに慣れている人は簡単に行えるようになりました。

import os
import click
from flask.cli import FlaskGroup

def create_wiki_app(info):
    from yourwiki import create_app
    return create_app(
        config=os.environ.get('WIKI_CONFIG', 'wikiconfig.py'))

@click.group(cls=FlaskGroup, create_app=create_wiki_app)
def cli():
    """This is a management script for the wiki application."""

if __name__ == '__main__':
    cli()

CLIプラグインの作成

プラグインを作りたい場合も↓のように、clickをベースのコードで記述出来ます。

import click

@click.command()
def cli():
    """This is an example command."""

おわりに

とりあえず0.11のリリースおめでとうございます。 ClickベースのCLIに統一されるのは個人的にとてもうれしいですね。

他にもApplicationのFactory関数の扱いをどうすればいいかなど、ドキュメントの方に詳しく書かれているので、Flaskのプロジェクトを0.11アップグレードする際はこれを読みながらやると良いと思います。

http://flask.pocoo.org/docs/0.11/cli/

Flask Web Development: Developing Web Applications with Python

Flask Web Development: Developing Web Applications with Python