はじめに
2015年11月22日(日)の世間は3連休のド真ん中で開催されたPyCon mini Hiroshimaに参加してきました!
本記事はそのまとめと感想等,私の主観的意見で記事を書いていこうと思います!
今回は,研究室の先生(@iori_n)と参加しました.先生のメインユース言語はRです.Pythonは全然出来ません.
そのうちPepperがくるのでそのためにPythonを触りたいという意識の高さです.
自己紹介とか
#pyconhiro 参加者の方が読んでくださると見込んで軽く自己紹介をさせて頂きます.
山口県の宇部高専っていうところに通ってる東京のスマフォアプリ開発メインの企業様に内定を頂いた情弱高専生です.(19歳)
将来的にはバックエンドでPythonを内定先で主流にさせたいっていう願望を持っています.
詳しくはポートフォリオサイトが何故か2つあるのでみてください
http://nnsnodnb.comnnsnodnb.com
今回は多分なんですが学生は私一人だけだったのかな?見た目感じ.間違ってたらごめんなさい
でもお兄さんお姉さん達はとても若く20代前半に全員見えました.
今回は宣言通り「PyConJP 2015」で頂いた黄色のTシャツを着て行きました.
https://twitter.com/nnsnodnb/status/668056758514900992
チュッパチャップスのリュックにラブライブ!のキーホルダーがジャラジャラ付いてる奴いたなぁって
覚えている方いらしたらそれが私です.
毎回言っていますが,「ブログを書くまでがPyCon mini Hiroshimaです」
断り
https://twitter.com/nnsnodnb/status/668398384147927040
connpass
PyCon mini Hiroshima
なんかサイトデザインがダサいなぁって思ったのは秘密です.
ヘッダーにpadding-topすごく入れたくなったのは私だけかな?
togetter
例によってtogetterにまとめてくださいました.@mu2inさんありがとうございます!
セキココ
Ustream
前置きがとても長くなってしまいましたが,まとめを書いていこうと思います!
テーマ
〇〇とPython
簡単でシンプルなテーマなんですが,なかなか奥が深いテーマです.
発表
10:00-10:30 西本卓也 @24motz 30分「アクセシビリティを支えるPython」
前置き
NVDA日本語版
インストーラを起動するだけで起動音が鳴るなど→聴覚障害者への配慮
NVDAインストーラの中にNVDAのミニ版が既に入っている.
Shiftキーで音声終了
デモ(Slideshare)
「◯◯とPython」のような端末依存記号への配慮
同時に点字ビューアーも表示する
HTMLのマークアップを正しく書くとスクリーンリーダーがDOM構造を認識し見出しや目次を作ってくれる
→正確なマークアップを書くようにするとアクセシビリティを高めることができる
PDFやPPT形式で音声認識が正しく行えるかどうかが変わってくることがある
日本語音声合成エンジン
- Open JTalk
形態素解析
マルチバイトユーザ名でNVDAインストーラでの問題
Pythonのバグ
エンコードで%home%
がみつからなっていた
tempfile.gettempdirにモンキーパッチで解決
wxPython
- wxWidgetsはアクセシブル
アクセシビリティ
- 技術ロードマップの真ん中
- 標準化
- マシンリーダブル,自動化
- エコシステム端っこ
- 非営利
- ボランティア
感想
NVDAという言葉を初めて聞いたのですが,いろんな身体障害に不自由のないモノを作り出すことはとても難しいことだと痛感しました.
10:35-11:05 曽根壮大 @soudai1025 30分「PostgreSQLとPython」
87枚スライド
What is it?
一見関係がなさそう
でも実際は密接
岡山Python勉強会 →ハングアウトもやってる
PL/Python
DB内で手続き型の処理をしたい
- ループさせたい
- 条件分岐したい
- データ加工したい
クライアント⇔サーバ間の通信が少なくなる
PL/〇〇→いろんな言語ができすぎる
Pythonでのいいところ
- ループが短く書ける
- Python2,Python3でも使える.(3.x系はまだあんまり...)
- 既存のライブラリを再利用できる
- PyDataもNumPyも使える
- Pythonはデータサイエンスと相性が良い
- 自動要約がきる
FDWとPython
FDWとは
- 外部テーブルを作成するための機能
- SQLでアクセスできる
- JOINなど他TABLEもできる
DB,CSV,JSON,WebAPIなんでもできる.
→インプットさえ決まっていればなんでもできる
ライブラリも用意されている
FDWを使う
ORDERBYやJOINなどは外部テーブルからデータを取ってきてから並び替えなどを行なうのでコストがかかる
→でもFDWを使うだけの価値はある
multicorn
$ pip install multicorn
まとめ
PostgreSQLとPythonは仲良し
Pythonできる→インフラエンジニアとして有利
プログラミングできない人はPythonやればいい
- フロントエンドエンジニアもPythonやればいい
- Pythonのネットワーク関係はBitBucketが多い
- プライベートリポジトリが無料で使いまくれるから!!
感想
https://twitter.com/nnsnodnb/status/668242162111283200
https://twitter.com/nnsnodnb/status/668247893468311552
本当はDjangoを今勉強しているのでDjangoの話を聞きたかったです.でもFDW使ってPLでいろんなことができるのはすごい汎用性高いなぁって思いました.今卒業研究ではsqlite3を使う気しかないので(データ個数的に)暇がある時に試して見ようと思います!
それと私自身はMySQL,PostgreSQL,sqliteだったらPostgreSQLが1番使用歴が長いのでなかなか有益な情報でした.HerokuもPostgreSQLですしね
11:20-11:50 石本敦夫 @atsuoishimoto 30分「基調講演『Pythonの肩にのる』」
一人前のプログラマになるには?
さまざまな知識・経験
プログラミングを独習するには10年かかる
2001年
あせるのはやめよう
- 勉強は一生続く
- 他人と比較はやめる など
着実に幅広く
- バランス良く
- 楽しみながら
OSSプロダクトにがっつりハマろう
- 他人とのやり取りが何よりも大事
- 数えきれないぐらい繰り返して初めてわかることもある
- 「技術」を使うのではなく「プロジェクト」にコミット
私が彼方を見渡せたのだとした,それはひとえに巨人の肩に乗っていただけです
→Pythonは蛇なんで肩はないけど...
軸足を決めろ
- ハズレを恐れるな.
- 他人の目を気にしない
ハズレがない
深さは広さ
深く学べば学ぶほどハズレはなくなる
- 表面的な知識は応用が効かない
- 内部の原理や技術は多分野でも使える
深く学べば学ぶほど,遠くまで見通せる
- いろんな分野とつながる
- わざわざ探しに行かないくても,自然と新技術が目に入る
Pythonにハマろう
プログラミングの幅広い分野に
素直なプログラミング言語
The parser won't be more complex tha LL
Bateries included
プログラミングの幅広い分野に触れられる
- 各種アルゴリズム
- マルチプラットフォームなファイルIO/プロセス管理
- セキュリティ など
マルチパラダイム
様々なスタイルが話し合われる文化的素地
高いシェア・認知度
何だかんだで,シェアは大事
日本でも高いシェア
活発なコミュニティ
なんだかんだいってチームが大事
- 開発技法
- コミュニケーション技法
広範な利用範囲
共通言語としてのPython
データサイエンス分野
昔から,科学技術計算はPythonの強み
- NumPy
- Pandas
- Matplotlib
- IPython
学習の手引
OSSプロジェクトとして楽しもう
- メーリングリストを読もう
- ソースを読もう
オススメメーリングリスト
comp.lang.python Python-dev Python-ideas
ソースを読む
- 気になるところを読み進める
- bugs.python.orgを読む
感想
独学でPythonを使い始めてまだ1年経ってない私なのですが,20年以上続けていらっしゃる貴重なお話が聞けてよかったです.
やはり何事も焦ることは良くないですね.他の言語でも今後役に立たないから勉強しなくてもいいや〜みたいな考えは今まで意外と持っていなかったのですが,やはりその考えは間違っていなかったと思えました
11:55-12:25 長谷場潤也 @7pairs 30分「新人教育とPython」
タイトルが変わる!!
新人教育とJavaとPython
なぜ新人教育でPythonを採用したのか
対象
- 入社直後の新人,未経験者も含む
目的
- 先輩の指導下で業務がこなせるように
- プログラミングに必要な考え方を身に付けること
- 業務で関わる機会の多いWeb開発につなげたい
条件
Pythonしかない
Javaで勉強を始めると?
public class hello { public static void main(String[] args) { System.out.println("Hello world"); } }
たったHello world
を出力するだけにこんなお呪いを書かないといけないと未経験者からしたら敷居が高過ぎるように感じる(?)
だから挫折する
新人教育でPython
動的型付け言語である
- 試行錯誤しながらコードを書きやすい
- コレクションに親しみやすい
- "1" + 1 が 2 にならない程度の厳密さ!
$ echo "<?php print("1" + 1);?>" > index.php
私は某言語が大好きです
対話モードを持っている
- 様々な場面で大活躍
Webとの親和性が高い
- 標準ライブラリでWebアプリを作れる
テキストエディタで十分にコーディングできる
- 非力なマシンでもなんとかなる
講師たちの変化
学修の意欲が生まれた
- 人に教えるためにはまず理解する
- 新人さんに質問されたら答えなければならない
- 新しいことを学ぶ楽しさ
英語に対する抵抗が少なくなった
- 公式ドキュメントを離れると日本語情報が少ない
- 英語を読まざるをえない状況に
- 追い込まれれば意外となんとかなる
業務にPythonを取り入れる動き
- ツール類をPythonに置き換える
- プロダクトでの導入はハードルが高かった
配属されてからの違い
- ブロック単位できちんとインデントする習慣 など
既にある機能を使おうしてくれる
- 車輪の再開発が発生しづらい
- 標準ライブラリでかいけつ
- 外部ライブラリで解決できないか
まとめ
感想
PyConJP 2015では「データ構造の授業をCからPythonにしたら単位取得率が15%から90%になった話」というお話がありましたが,プログラミング入門にPythonを使うことはとても有効的なんじゃないかと感じました.
講師軍も知らない言語を教えるために勉強したり公式ドキュメントを離れたら英語ばっかりだかりだからどうしてもグローバルになっていくっていうのも良い傾向になると思いました.
https://twitter.com/nnsnodnb/status/668263529674223616
https://twitter.com/nnsnodnb/status/668266788963020800
https://twitter.com/nnsnodnb/status/668267725764988928
おまじないと割り切れるのも才能 #pyconhiro
— TANAKA YASUNARI (@7richi) 2015, 11月 22
私は高専3年生の時にJavaを習ったのですが,あの呪文文字列は才能で覚えてしまったのでしょうかw
13:30-14:00 石本敦夫 atsuoishimoto 30分「tse紹介:Pythonでワンライナー」
Unixのテキスト処理といえば
Pythonはワンライナー向き?
向きません
- インデントが必須 など
Pythonによるテキスト整形ツール
インストール方法
$ pip install tse
推奨はPython3.x系
tseの動作
- テキストファイルを一行ずつ読み取る
- 行に一致するパターンがあれば
- 行を変数に代入
- 対応するアクションを実行
パターンとアクション
$ tse -s '^\d+' 'print(L.lower())' \ -s '^\d+' 'print(L.upper())'
awkとの比較
サンプル
パターン
入力テキストを検索する正規表現式
- reモジュールを使用
アクション
インデント
{{と}}でインデントするブロックを指定
入力ファイルの指定
オプションとファイル名を
--
で区切る
変数
処理中のテキストは,変数に格納される
マッチ文字列
変数サンプル
- 既存コマンドとPythonの組み合わせ
省略時
$ tse '' print(L) = $ tse '.*' print(L)
$ tse '' '' = $ tse '' print(L)
インポート済モジュール
sys,re,os,os.pathはインポート済み
os.pathはfrom os import path形式
モジュールのインポート
--module/-m オプション
$ tse -m math --begin 'print(math.sqrt(2))'
--script0file/-f オプション
~/.tserc
が自動生成される
感想
2回聞いてもなんかちょっとピンとこない難しいお話でした.
最近はやっとUnixコマンドでワンライナーに慣れてきたのでまずはWebスクレイピングなど簡単な動作でもPython+Unixコマンドを組み合わせてワンライナーやってみようと思いました.
https://twitter.com/nnsnodnb/status/668285485232492545
14:05-14:35 須増 亮 @ryosms 30分「GitとPython」
Pyramid:フレームワーク Sphinx:ドキュメント作成ツール
→エジプト駆動開発
Sphinx
ドキュメントツール
GitHub Pages
User SiteとProject Site
User Site
branch:master
Project Site
branch:gh-pages
GitHub Pagesでの注意点
'_'で始まるディレクトリが無視される
回避策
BitBucket Pages
- User Siteのみ
- Auto Generation的な仕組みはなし
hg
,git
が使える- Project Pagesが作成できない
Read the Docs
使い方
- GitHubやBitbucketのリポジトリをクローンしてくる
- master
http(s)://<project>.readthedocs.org
http(s)://<project>.rtfd.org
- project名は変えられる
- Publicリポジトリでなければならない
比較
感想
https://twitter.com/nnsnodnb/status/668293087609774080
https://twitter.com/nnsnodnb/status/668293378438631425
https://twitter.com/nnsnodnb/status/668295127777972225
https://twitter.com/nnsnodnb/status/668295733548859392
https://twitter.com/nnsnodnb/status/668296880011382789
https://twitter.com/nnsnodnb/status/668297638031155200
https://twitter.com/nnsnodnb/status/668298033512079361
ツイートだけでいうとこんな感じ
下から3つ目の疑問の検証を行ってみたところ.username.github.ioに作った方が優先されるということがわかりました.
わかりやすく言うと.Project Siteを作る.同名ディレクトリをusername.github.ioに生成すると後者側が優先されて表示されるということです
あとAtlassianのTシャツの話
14:50-15:20 関根裕紀 @checkpoint 30分「スクレイピングとPython」
Webスクレイピングとは
- WebサイトからHTNKデータを収集してデータを抽出
- 特定のデータを抽出,加工 など
クローリング
- ページのリンクの内容をたどる
スクレイピング
- ページの内容から必要な情報を抽出
用途
- 検索エンジン
- 価格比較
- 気象データの監視 など
Webサービスを使用
- kimono
- import.io
プログラミング
PythonでのWebスクレイピング
- 標準ライブラリ
- BeautifulSoup
- pyquery
- Scrapy
- その他
Python バッテリー付属言語
標準ライブラリ
サンプル
- リクエスト
pyquery
Selenium
- Webブラウザのオートメーションツール
- JSも実行可能
- PhantomJSと連携
Scrapy
手順
- scrapyプロジェクト作成
- spider作成
- itemパイプラインでデータを保存
感想
https://twitter.com/nnsnodnb/status/668313780497989632
5日に一度クソコードをcronで回すようにしてるんですが,どうにかならないかなぁっていつも思っています.
クソコードを貼るとこんな感じです.そもそもがHTMLソース内に記述されていないためこんな方式を取ることにしました
上とは関係ないのですが,ブラウザの自動操作!すごいなぁって思いました.私もあんなことができれば良いなぁって思ってます.卒研的にブラウザを操作するような動作をさせたいなぁっていう箇所が一部あるので
15:25-15:55 岩田隆治 @qt_luigi 30分「GoとPython」
思想が文書化されている
多彩な実装
- Cython
- Jython
- PyPy
- IroPython
他のシステムのサポート
- Linuxのコマンド
- オフィススイートのマクロ
- 3D作成スイート
- 人型ロボット
Macへのサポート
文法
- クラスの仕組みが実装
- インデントによるブロック表現
- 桁数の制限のない整数型
Goとは
GoとPython
Python
Go
- シンプルで信頼性が高く効率的なソフトウェアを構築しやすくする
- コンパイラ
- 静的型付け
- 1.4まで:Cで実装
- 1.5から:Goで実装(セルフホスティング)
- 1系の間はソースレベルでの後方互換性を保証
- マイクロサービス
- クラウドサービス
Google App Engine
Google社が提供しているPaaS:Java,Python,PHP,GO
Python
Go
- バージョン1.4
- 最速
類似点
データ連携
- JSON:テキスト
- MessagePack:バイナリ
感想
https://twitter.com/nnsnodnb/status/668314876234739712
Go言語は一回ちょっとドキュメント流し読みしただけなのであんまりわかりませんが,Webアプリが作れるらしいのでいつかチャレンジしてみようと思います.
私のTLではGopherくんとD言語くん,とちらが可愛いかの戦いが勃発していました
16:10-17:00 ライトニングトーク/クロージング
黙って聞いてたのでメモ取り忘れましたww
ツイート貼っておくので勘弁して下さい
https://twitter.com/nnsnodnb/status/668325138627059712
https://twitter.com/nnsnodnb/status/668328252981641216
こんな感じです.
最後に
適当にマークダウンでメモとっていたので見出しタグがめちゃくちゃになってるところがあるかもしれませんがあしからず
もう少しだけ私について語って終わろうと思います
なぜ今回参加したのか
なぜLTしなかったのか
- 話すネタを奪われた(GitとPython)
- 卒業研究の話をしてもなんか面白く無い
- Python2.x系をほぼほぼ触らずにPython3.x系に移行してしまった(やってしまった感
- 寝てないから眠かった など
今後の課題
https://twitter.com/nnsnodnb/status/668397947847995393
- とりあえずDjango
- PEP読む.
- 英語読む(py2appのオプションぐらいなら翻訳した→http://nnsnodnb.hatenablog.jp/entry/translate-py2app-options)
おねだり
何か買っていただけるととても喜びます!!!
余談
帰りにEdionに寄って,iPad Proを触ってきました!!
すごく大きかったです.私ぐらいになるとあれぐらいでも画面のドットが見えました.
https://twitter.com/nnsnodnb/status/668343141569708032
大きさとしてはiPad miniが2つ分ぐらいでした.
PCは13インチMacBook Pro
本当に最後
みなさん本当にお疲れ様でした!とても有意義な1日を送ることが出来ました.
来年は参加できるかわかりませんが,PyConJPの方は参加する予定です.
また機会があればよろしくお願いします!!
そして最後まで長ったらしい文を読んでくださりありがとうございました