PyFes 2013.3 参加メモ #pyfes

午前: Riak ハンズオン

Riak ハンズオンに参加したと思っていたらいつの間にか Riak ハンズオンを手伝う側に回っていたでござる

教訓

  • インターネットがまともに使えない、かつ全員がMac という特殊な環境だと AirDrop を使って必要なファイルをばらまくという技が使える。かなり限定的な条件ではあるが、便利
  • ハンズオンで構築からやらせるのはリスク高過ぎと再確認

ハンズオンについては別途ブログを書くかもしれない

Go ( @ymotongpoo )

http://www.slideshare.net/ymotongpoo/20130316-go

  • Go 言語の紹介
  • 内容はいつも説明を聞いているのでほぼ知っていた。初めて説明聞いた人には面白い内容のはず
  • プレゼンうまくなっててびっくり

Mock と patch ( @torufurukawa )

http://www.slideshare.net/torufurukawa/mock-and-patch

テストが難しいメソッド

例: urlopen の結果は不確定なのに、その結果に依存するメソッド

  • 戻り値が不確定
    • 乱数
    • 時刻
  • セットアップがだるい

だから、テスト対象の外側を入出力として扱う

mock モジュール
  • 3.2 以前は PyPI
  • 3.3 標準ライブラリ unittest.mock
mock の 使い方
  • 依存先オブジェクトを入れ替える
    • 例: urlopen を mock に入れ替える
    • with patch で入れ替える

with patch('urllib.request.urlopen') as m:
...
... from urllib.request.urlopen ...
これが m になる

  • @patch で入れ替える
    • with はインデントが深くなるのであまり好きじゃない

@patch('urllib.request.urlopen')

  • call_count で呼び出し回数を確認

assert m.call_count == 1

  • call_args で引数を確認
  • 依存先の挙動を定義する
    • m.return_value = 999
      • 返り値が 999 になる。
    • m.return_value.meth.return_value = 1
      • m().meth()
    • 複雑な戻り値は side_effect

def f(x, y): ...
m.side_effect = f

例外も side_effect に指定可能



MS Surface でゲームを作った話 ( @tokoroten )

巷で話題の Surface ではない本物の Surface
静電容量式はオワコン

APIC# なので pygame からアクセスする場合はソケット通信で入力メソッド部分を置き換えれば既存のゲームを移植可能

Introduction of Leap Motion (@hagino3000 )

http://www.slideshare.net/hagino_3000/introduction-of-leap-motion

手の認識に特化した小型モーションキャプチャデバイス

机の上にちょこんと置いて手をかざして使うことを想定している

  • センサー: 赤外線センサー
  • 接続: USBインタフェース
  • 高分解能(0.01mm), 速い(> 60 FPS), 安い
  • Pre Order
    • < $90
    • 5/13 以降順次発送
  • 開発者登録
    • 一個無料で送ってくれる
    • 製品版と一部異なる
    • 起動に開発者IDとパスワードが必要
    • 作ったアプリの勝手配布はNG

Arduino + Python 勉強会の紹介 ( @nonNoise )

といっても基本技術は既に固まっているのであとはこれをどう遊ぶかという話

Tinkerer ( @r_rudi )

Sphinx を利用したブログ作成ツール
tinker コマンドを使う
更新のたびに全ファイル生成し直し

  • drone.io
    • travis ci のような自動テストツール
    • bitbucket 対応
  • S3
    • 転送量課金される
  • Dropbox
    • アクセス量で金額は増えないが、独自ドメインが使えない

webpay ( @keikubo )

1時間で使えるクレカ決済

USでは決済市場が白熱している

日本の決済システムは問題がいっぱい
だから日本で開発者向けの決済システムを作った。それが webpay


ライブマインドマッピング ( @sawonya )

@3_and_planet による身の上話をマインドマップ
2人目の人は名前がわからなかった cobit の話
@wozozo による身の上話をマインドマップ

WebMachine ( @voluntas )

https://gist.github.com/voluntas/f99838001efced196fc0

  • Webmachine
    • Basho 製 REST ツールキット
    • Erlang 専用?
      • 「考え方」なのでどんな言語でもOK

Blender ( @lab1092 )

  • オープンソース 3DCG ソフトウェア
  • Open Movie Project
    • Blender の開発をしながら映画を作るプロジェクト
  • Python 3.3 が使える
  • Rapid Release
  • Git 対応

インターネットの経済学 ( @JHarrison )

Webサービスってどれほどの価値があるのか?

Fabric ( @drillbits )

https://speakerdeck.com/drillbits/fabric-python-developers-festa-2013-dot-03-number-pyfes

  • 環境はたくさん作らなきゃいけない
    • 開発、本番、ステージング、ステージング2、ステージング3、...
  • pip install fab
  • オプションでユーザ名、ホスト、SSH鍵などを指定可能
  • env にオプションを指定することも可能

Opsworks & Chef ( @tk0miya )

http://www.slideshare.net/TakeshiKomiya/ops-works-chef

  • why chef
    • 冪等性
      • 手続き型ツール(Capistrano, Fabric)は順序が重要(差分更新)
    • community cookbooks
      • 大抵のツール向けの設定が集約
      • 再利用の精神
      • 理想はほとんど書かない
  • chef の種類
    • chef-server
      • 大規模用、クライアントサーバ型
    • chef-solo
      • 小規模運用、手動実行
      • 20台くらいまでなら chef-solo で十分
    • ホスティング
      • 有料プラン
chef-solo
  • vagrant
  • librarian
    • cookbook 管理ツール
    • yum や apt みたいなもん
    • 依存関係解決 Java 入れたりとか
    • Chef 使うなら最初に覚えたい
    • 類似ツール: Berkshelf
      • どっち使ってもいい
  • attributes を書く
    • json 形式で書いていく
  • 実行する
    • コマンド一発
tips

capistrano 経由で実行すると便利

  • chef 情報が少ない
    • id:naoya による書籍
    • Ryuzee さん、セカコミさんによるブログ
  • チームへの布教が大変
  • コミュニティクックブック
    • Ubuntu が多く、CentOS に対応していないものも多い
    • attributes 化されていない設定項目がある
    • 似たような cookbook がたくさんある
    • パッチを投げても無反応
OpsWorks
  • AWS のアプリ管理ツール
    • 環境構築
    • アプリのデプロイ
    • インスタンスの起動/終了の管理
      • スケーリング
      • スケジューリング
  • まだバグが残ってる
    • This is oops works

団長 (団長)

メモはとったけど公開しない

moriyoshi さん

AnyPack Builder
素晴らしい