pyhack 2016/9/3 Day 2

9月2日から9月4日まで長野県の菅平高原にあるペンションマウンテンパパというところに開発合宿にきてる。イベントはPython mini hack-a-thon 夏山合宿 2016 - connpass

Story Permalink

合宿でやりたいこと

今回は、Ubuntuを入れたThinkpadを持っていっているので、以下はすべてUbuntu環境の話。

合宿は下記に取り組もうと思っている。2日目も終了。

  • [X] NumPy関連(Pandas, NumPy, Jupyter)の環境構築と味見。もともと随分昔作ったJava + Rの環境再現を仕事でやったときに大変だったので、今だったらどういう組み合わせがいいんだろう? というのがそもそもの始まり。
  • [X] JavaとRは、JRIというインターフェースがあるが、NumPyとJavaはどういう感じで接続するかという模索
  • [ ] ClojureScriptでElectronアプリを作れるスターターキットdescjopのエンハンス
  • [X] Clojureベースのマイプロジェクトの続き
  • [X] Dockerの学習(こちらは、ネット環境があまりよろしくなさそうなので、延期予定)

WebVRの仕様書読み込み

W3CのWebVRの仕様書を読みこみをやった。

ということを文で書くと数行だけど、追加されたインターフェース、拡張されるインターフェースをひとつずつ読んでいった。

JavaScriptのAPI仕様は、読むにあたって、型定義、Enum、インターフェース(プログラム的な意味の)の概念などを知っていないといけないので、実はプログラムのスキルがいるという感じ。

WebVRは、WebVRのフレームワークとClojureScriptの連携をLTした内容

の続きで、実際にWebVRの仕様をちゃんと読んでいなかったので。

後々マイプロジェクトにしていく予定。

remarkを触ってみる

remarkというのは昼食中話題が出たWebベースのプレゼンテーションツールで、reveal.jsというのは知っていたが、remarkというのは知らず、興味を持った。

どうやら、話によると、remarkは、発表者ノートの表示とスライドを別の画面に用意し、同期しつつ発表できる機能があるという。

サイトには、使い方のHTMLのサンプルが掲載されており、これをHTMLとして保存していじることで、すぐに使える。

また、リポジトリをCloneすると、ベース用のサンプルHTMLファイルが数ファイル用意されているので使うことが出来る。

このツールは、コンパイルとかサーバとかをしなくていいところもハードルが低いポイントだと思う。

どこかのLTで使ってみるかもしれない。

Kobinを触ってみる

Kobinというのは、「小瓶」のことらしい。 BottleというPythonのWebアプリケーションフレームワークがあるが、そちらに影響を受けているとのこと。今回は合宿参加者に作者がいるので、いい機会なのでPythonのマイクロWAFに触れてみようと思った。

こんな感じでコントローラとルーティングを定義できる。

@app.route('^/(?P<name>\w*)$')
def hello(name: str):
    return "Hello {}!!".format(name)

今回は用意されているExampleプロジェクトを試してみる。

ExampleアプリはTODOアプリで、Kobinを中心に、Scss、TypeScriptといったフロントエンド技術で作られている。

まず、ExampleプロジェクトをCloneする

git clone https://github.com/c-bata/kobin-example.git

Kobinは、コンソールツールが用意されているが、これを動かすにはclickというのが必要らしい。なのでClickをインストールしておく

pip install click

実際、あとから聞いたらそういう必要なものは「requirements.txt」に書いてあるとのことで、下記を実行すればいいとのこと。

pip install -r requirements.txt

すると、コマンドラインツールを使えるようになる。

python manage.py --help

実行すると、

Usage: manage.py [OPTIONS] COMMAND [ARGS]...

  This is a management script for the kobin-todo application.

Options:
  --help  Show this message and exit.

Commands:
  lint  Runs code linter.
  run   Runs server.
  test  Runs unit tests.

と出る。 ついでに、npmの依存関係も解決しておこう

npm install

そしたら、プロジェクトをビルドしてみる。

npm run build

するとごちゃっとエラーが出た。作者の @c-bata に聞くと、静的ファイルを配置するためのディレクトリがないからだという。そこで、生成。

mkdir -p public/static/js

これで、buildタスクが動作する。

残りの作業として、データベースのマイグレーションをする。サンプルプロジェクトでは、SQLiteを使っている。

python manage.py migrate

以上で完了。

python manage.py run

でサーバーが起動する。ブラウザからアクセスしてみると、リッチなTODOアプリケーションが動作する。

gRPCで別言語のアプリケーションをつなぐスタディ

NumPyで作られた解析用のコードがあったとして、これをJava側から使いたい時どうするかという課題について意見を聞いてみたところ、@t2y に「gRPCはどうか」というアドバイスをいただいた。

ということで、gRPCについて調べるところから開始。

僕はどんなものかを把握ときどういう風に学習するかというと、

  • まず何も考えずにサンプルを実装してみる
  • サンプルで使われていたコードについての仕様やコードのみ見てみる
  • 知っている部分のみでコードの改造や別のサンプルをやってみる
  • そこでわかった一部の知識を足がかりに他の部分も調べてみる

という感じで学習を進めているので、まずはサンプルを一個作ってみよう。

サンプルに関して、実装はGo言語ベースのものを選んだ。これには理由があって、Java版

は、セットアップにちょっと手間が掛かりそうなので、これをいきなりやると挫折するだろうというのと、Go言語は、だいたいなんとなく何をやっているかわかりやすいタイプの言語と個人的に思っているから。

grpc-go

Go言語は、gRPC-Goというライブラリがあり、これをまずはインストールする。

インストールにはgo getを使うのだが、そもそも利用するために環境変数を何も設定していなかったので、する。

export GOPATH=$HOME/.go

続いて、grpcのインストール

go get google.golang.org/grpc

今回サンプルは、

を参考にした。

まず、protoファイルを用意するとのこと。どうやらこれを使ってクライアントとサーバーのインターフェースを生成できるらしい。面白い。

サンプルで使うhelloworld.protoを用意し、

を使ってインターフェースを作成してみる

まずは、protobufのインストール

にインストール方法がある。

sudo apt-get install autoconf automake libtool curl make g++ unzip

のあと、

./autogen.sh

として、

./configure
make
make check
sudo make install
sudo ldconfig

と実行していく。

続いてprotoc-gen-goのインストール

go get github.com/golang/protobuf/protoc-gen-go

ここで一旦時間アップ。

2日目はいろいろと新しいことをやってみたので、頭からけむりが出始めている。

Colophon

編集長
Greative GK. 原一浩 ( kara_d )
製版システム
Clojure / Compojure / Ring / Enlive / markdown-clj / Jetty / MySQL
Share this magazine!
Follow designudge

Magazine Archives

vol.122

2016-2-01

Cover

台湾に行ってきました。

今回のカバーは、台湾にて撮影したものです。

自治体Webデザイントレンドこぼれ話 : ここだよマップ

CSS Niteの年末イベントShiftでやっているセッションにデザイントレンドというのがあります。

descjop で遊ぼう day 16 : Windows版のメニューを表示する

2015年の振り返り的な一人レトロスペクティブ

そういえば、まだ2015年の振り返りをマガジンに掲載していませんでした

編集後記

vol.121

2016-1-14

Cover

今回のカバーは、、、UFO?

自治体Webデザイントレンドこぼれ話 : 予告

CSS Niteの年末イベントShiftでやっているセッションにデザイントレンドというのがあります。

descjop で遊ぼう day 11 : Omのコンポーネントで遊ぼう

descjop で遊ぼう day 12 : Omのコンポーネントで遊ぼうその2

descjop で遊ぼう day 13 : Clojure ワークショップでTAしてきた話

descjop で遊ぼう day 14 : アプリケーションメニューを作ろう

descjop で遊ぼう day 15 : descjop 0.5.3をリリースしました

編集後記

vol.120

2016-1-14

Cover

今回のカバーも、初詣に行ったときのショットです。

descjop で遊ぼう day 6 : Electronがうまくダウンロードできないとき

descjop で遊ぼう day 7 : Hello Worldを出力してみるには

descjop で遊ぼう day 8 : Om basedテンプレートを使ってみる

descjop で遊ぼう day 9 : Om basedテンプレートにボタンをつける

descjop で遊ぼう day 10 : Om basedテンプレートにボタンをつけるその2

編集後記

vol.119

2016-1-10

Cover

今回のカバーは、初詣に行ったときのショット。

「descjop で遊ぼう」について

「descjop で遊ぼう」というのは年末にやったアドベントカレンダーのシリーズなのですが、前段としてまずはその解説をば。

descjop で遊ぼう day 1 : はじめに

descjop で遊ぼう day 2 : 3つのテンプレート

descjop で遊ぼう day 3 : 環境構築をしよう

descjop で遊ぼう day 4 : Helpを見てみよう

descjop で遊ぼう day 5 : デフォルトアプリケーションのビルドと起動

編集後記

vol.118

2015-10-22

Cover

今回のカバーは、Stack Overflow DevDaysのイベントをお手伝いしたときの窓からのショット。

Vaqum Web Design Review

創刊以来延々と続くWebサイトレビュー

ミカヅキClojure : ゼロからはじめるClojure入門第2回

Clojureっていうじつに面白いプログラミング言語をとりあげていきます

インフォメーション

おすすめのイベント・勉強会情報を紹介

編集後記

vol.117

2015-10-07

Cover

今回は散歩道からのショット

Editor’s Picks

designudgeで扱っている内容に近いジャンルのリソースのうち気になったものなど

U.S. Web Design Standardsを見てみる

今話題となっているU.S. Web Design Standardsの周辺情報など見てみました

Bootstrap 4徹底攻略 (3)

Bootstrap 4のアルファ版がでているので使おう

インフォメーション

おすすめのイベント・勉強会情報を紹介

編集後記

vol.116

2015-9-28

Cover

今回は帰省した際に通った三島からのショットです

Vaqum Web Design Review

創刊以来延々と続くWebサイトレビュー

みそじ過ぎからの英語再学習

40を目前に今までサボっていた英語学習をはじめました

Bootstrap 4徹底攻略 (2)

Bootstrap 4のアルファ版がでているので使おう

ミカヅキClojure

Clojureっていうじつに面白いプログラミング言語をとりあげていきます

インフォメーション

おすすめのイベント・勉強会情報を紹介

編集後記

vol.115

2015-9-13

Cover

前回と同じ開発合宿のショットから一つ

Vaqum Web Design Review

創刊以来延々と続くWebサイトレビュー

開発合宿へ行こう! : Python mini hack-a-thon 夏山合宿 2015

先週末に行ってきた開発合宿について書きました。

ミカヅキClojure

Clojureっていうじつに面白いプログラミング言語をとりあげていきます

インフォメーション

おすすめのイベント・勉強会情報を紹介

編集後記