読者です 読者をやめる 読者になる 読者になる

『入る学科間違えた高専生』の日記

プログラミングのコードを書いたりする予定です。あとは日記等。あといつまで高専生やねん

PyCon mini Hiroshima 2015に参加してきた #pyconhiro

Python関連 イベント

はじめに

2015年11月22日(日)の世間は3連休のド真ん中で開催されたPyCon mini Hiroshimaに参加してきました!
本記事はそのまとめと感想等,私の主観的意見で記事を書いていこうと思います!

今回は,研究室の先生(@iori_n)と参加しました.先生のメインユース言語はRです.Pythonは全然出来ません.
そのうちPepperがくるのでそのためにPythonを触りたいという意識の高さです.

自己紹介とか

#pyconhiro 参加者の方が読んでくださると見込んで軽く自己紹介をさせて頂きます.

山口県宇部高専っていうところに通ってる東京のスマフォアプリ開発メインの企業様に内定を頂いた情弱高専生です.(19歳)
将来的にはバックエンドでPythonを内定先で主流にさせたいっていう願望を持っています.

詳しくはポートフォリオサイトが何故か2つあるのでみてください

http://nnsnodnb.moe

nnsnodnb.com

今回は多分なんですが学生は私一人だけだったのかな?見た目感じ.間違ってたらごめんなさい
でもお兄さんお姉さん達はとても若く20代前半に全員見えました.

今回は宣言通り「PyConJP 2015」で頂いた黄色のTシャツを着て行きました.

チュッパチャップスのリュックにラブライブ!のキーホルダーがジャラジャラ付いてる奴いたなぁって
覚えている方いらしたらそれが私です.

毎回言っていますが,「ブログを書くまでがPyCon mini Hiroshimaです

断り

connpass

pyconjp.connpass.com

PyCon mini Hiroshima

PyCon mini Hiroshima

なんかサイトデザインがダサいなぁって思ったのは秘密です.
ヘッダーにpadding-topすごく入れたくなったのは私だけかな?

togetter

togetter.com

例によってtogetterにまとめてくださいました.@mu2inさんありがとうございます!

セキココ

sekico.co

Ustream

USTREAM: pyconhiro: PyCon mini Hiroshima http://hiroshima.pycon.jp/. コンピュータ


前置きがとても長くなってしまいましたが,まとめを書いていこうと思います!

テーマ

〇〇と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

アクセシビリティ

  • 技術ロードマップの真ん中
    • 標準化
    • マシンリーダブル,自動化
  • エコシステム端っこ

感想

NVDAという言葉を初めて聞いたのですが,いろんな身体障害に不自由のないモノを作り出すことはとても難しいことだと痛感しました.

10:35-11:05 曽根壮大 @soudai1025 30分「PostgreSQLPython

87枚スライド

What is it?

一見関係がなさそう
でも実際は密接

岡山Python勉強会 →ハングアウトもやってる

PL/Python

DB内で手続き型の処理をしたい
  • ループさせたい
  • 条件分岐したい
  • データ加工したい

クライアント⇔サーバ間の通信が少なくなる

PL/pgSQL→PL/Python

PL/〇〇→いろんな言語ができすぎる

Pythonでのいいところ
  • ループが短く書ける
  • Python2,Python3でも使える.(3.x系はまだあんまり...)
  • 既存のライブラリを再利用できる
  • PyDataもNumPyも使える
  • Pythonデータサイエンスと相性が良い
  • 自動要約がきる
FDWとPython
FDWとは
  • 外部テーブルを作成するための機能
  • SQLでアクセスできる
  • JOINなど他TABLEもできる

DB,CSV,JSON,WebAPIなんでもできる.
→インプットさえ決まっていればなんでもできる

ライブラリも用意されている

Image.jpg

FDWを使う

ORDERBYやJOINなどは外部テーブルからデータを取ってきてから並び替えなどを行なうのでコストがかかる
→でもFDWを使うだけの価値はある

multicorn
$ pip install multicorn

まとめ

PostgreSQLPythonは仲良し

  • Pythonできる→インフラエンジニアとして有利

  • プログラミングできない人はPythonやればいい

  • フロントエンドエンジニアもPythonやればいい
  • Pythonのネットワーク関係はBitBucketが多い
    • プライベートリポジトリが無料で使いまくれるから!!

感想

本当はDjangoを今勉強しているのでDjangoの話を聞きたかったです.でもFDW使ってPLでいろんなことができるのはすごい汎用性高いなぁって思いました.今卒業研究ではsqlite3を使う気しかないので(データ個数的に)暇がある時に試して見ようと思います!

それと私自身はMySQLPostgreSQLsqliteだったら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

  • シンプルなコンパイラ
  • シンプルなVM
  • シンプルなオブジェクトモデル
Bateries included

プログラミングの幅広い分野に触れられる

マルチパラダイム

様々なスタイルが話し合われる文化的素地

高いシェア・認知度

何だかんだで,シェアは大事

  • 20年以上の間,トップクラスの人激減後
  • 多くのライブラリWebサービスAPI
  • アメリカの大学で,入門言語として最も採用

日本でも高いシェア

活発なコミュニティ

なんだかんだいってチームが大事

広範な利用範囲

共通言語としての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

タイトルが変わる!!

新人教育とJavaPython

なぜ新人教育でPythonを採用したのか

対象
  • 入社直後の新人,未経験者も含む
目的
  • 先輩の指導下で業務がこなせるように
  • プログラミングに必要な考え方を身に付けること
  • 業務で関わる機会の多いWeb開発につなげたい
条件
  • Windows環境
  • 冗長な記述をする必要がない
  • 珍しいパラダイムの言語でない
  • 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に置き換える
  • プロダクトでの導入はハードルが高かった

配属されてからの違い

  • ブロック単位できちんとインデントする習慣 など

既にある機能を使おうしてくれる

  • 車輪の再開発が発生しづらい
  • 標準ライブラリでかいけつ
  • 外部ライブラリで解決できないか

まとめ

  • 本当に教えたい部分にフォーカスできた
  • 採用するメリットを明確に言語化して説明できなければいけない(業務と関係ないのになんで?)
  • Pythonと他の言語との違いを意識させる必要がある

感想

PyConJP 2015では「データ構造の授業をCからPythonにしたら単位取得率が15%から90%になった話」というお話がありましたが,プログラミング入門にPythonを使うことはとても有効的なんじゃないかと感じました.

講師軍も知らない言語を教えるために勉強したり公式ドキュメントを離れたら英語ばっかりだかりだからどうしてもグローバルになっていくっていうのも良い傾向になると思いました.

私は高専3年生の時にJavaを習ったのですが,あの呪文文字列は才能で覚えてしまったのでしょうかw

13:30-14:00 石本敦夫 atsuoishimoto 30分「tse紹介:Pythonワンライナー

Unixのテキスト処理といえば

sed,awk,perlなどのワンライナーが定番

  • Pythonでもワンライナーを書きたい
  • 使い慣れたモジュール軍を手軽に活用したい
  • いちいちスクリプトファイルを作成したくない
  • ヒストリーを呼びたくない

Pythonワンライナー向き?

向きません

  • インデントが必須 など

Pythonによるテキスト整形ツール

インストール方法

$ pip install tse

推奨はPython3.x系

tseの動作

  1. テキストファイルを一行ずつ読み取る
  2. 行に一致するパターンがあれば
  3. 行を変数に代入
  4. 対応するアクションを実行

パターンとアクション

$ tse -s '^\d+' 'print(L.lower())' \
    -s '^\d+' 'print(L.upper())'

awkとの比較

S__2506754.jpg

サンプル

S__2506755.jpg

S__2506756.jpg

パターン

入力テキストを検索する正規表現

  • reモジュールを使用

アクション

S__2506757.jpg

インデント

{{と}}でインデントするブロックを指定

S__2506758.jpg

入力ファイルの指定

オプションとファイル名を--で区切る

変数

処理中のテキストは,変数に格納される S__2506759.jpg

マッチ文字列

S__2506760.jpg

変数サンプル

S__2506761.jpg

  • 既存コマンドとPythonの組み合わせ

S__2506762.jpg

省略時

$ 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コマンドを組み合わせてワンライナーやってみようと思いました.

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的な仕組みはなし
  • hggitが使える
  • Project Pagesが作成できない

Read the Docs

使い方
  • GitHubやBitbucketのリポジトリをクローンしてくる
  • master
  • http(s)://<project>.readthedocs.org
  • http(s)://<project>.rtfd.org
  • project名は変えられる
  • Publicリポジトリでなければならない

比較

S__2506763.jpg

感想

ツイートだけでいうとこんな感じ

下から3つ目の疑問の検証を行ってみたところ.username.github.ioに作った方が優先されるということがわかりました.

わかりやすく言うと.Project Siteを作る.同名ディレクトリをusername.github.ioに生成すると後者側が優先されて表示されるということです

あとAtlassianのTシャツの話

japan.blogs.atlassian.com

14:50-15:20 関根裕紀 @checkpoint 30分「スクレイピングPython

Webスクレイピングとは

  • WebサイトからHTNKデータを収集してデータを抽出
  • 特定のデータを抽出,加工 など

クローリング

  • ページのリンクの内容をたどる

スクレイピング

  • ページの内容から必要な情報を抽出

用途

Webサービスを使用

  • kimono
  • import.io

プログラミング

PythonでのWebスクレイピング

  • 標準ライブラリ
  • BeautifulSoup
  • pyquery
  • Scrapy
  • その他

Python バッテリー付属言語

標準ライブラリ

サンプル

S__2514946.jpg

  • リクエスト

f:id:nanashinodonbee:20151123025603j:plain

pyquery

jQuery風にスクレイピングができる

Selenium

  • Webブラウザのオートメーションツール
  • JSも実行可能
  • PhantomJSと連携

Scrapy

速くてハイレベルなスクレイピングクローラーフレームワーク

手順
  1. scrapyプロジェクト作成
  2. spider作成
  3. itemパイプラインでデータを保存

感想

5日に一度クソコードをcronで回すようにしてるんですが,どうにかならないかなぁっていつも思っています.

クソコードを貼るとこんな感じです.そもそもがHTMLソース内に記述されていないためこんな方式を取ることにしました

上とは関係ないのですが,ブラウザの自動操作!すごいなぁって思いました.私もあんなことができれば良いなぁって思ってます.卒研的にブラウザを操作するような動作をさせたいなぁっていう箇所が一部あるので

15:25-15:55 岩田隆治 @qt_luigi 30分「GoとPython

思想が文書化されている

多彩な実装

  • Cython
  • Jython
  • PyPy
  • IroPython

他のシステムのサポート

  • Linuxのコマンド
  • オフィススイートのマクロ
  • 3D作成スイート
  • 人型ロボット

Macへのサポート

文法

  • クラスの仕組みが実装
  • インデントによるブロック表現
  • 桁数の制限のない整数型

Goとは

GoとPython

Python

  • 迅速に処理する手段を提供し,より効果的にシステムを統合
  • インタプリタ
  • 動的型付け
  • 2系:当初からの発展
  • 3系:後方互換性をなくして再実装
  • 2to3によるコード変換
  • 科学計算
  • 機械学習

Go

  • シンプルで信頼性が高く効率的なソフトウェアを構築しやすくする
  • コンパイラ
  • 静的型付け
  • 1.4まで:Cで実装
  • 1.5から:Goで実装(セルフホスティング
  • 1系の間はソースレベルでの後方互換性を保証
  • マイクロサービス
  • クラウドサービス

Google App Engine

Google社が提供しているPaaS:Java,Python,PHP,GO

Python

  • バージョン2.7
  • JavaPHPより速い

Go

  • バージョン1.4
  • 最速

類似点

  • ディレクトリをモジュールとして使うこと
  • スライスの文法
  • Webアプリのフレームワーク

データ連携

  • JSON:テキスト
  • MessagePack:バイナリ

感想

Go言語は一回ちょっとドキュメント流し読みしただけなのであんまりわかりませんが,Webアプリが作れるらしいのでいつかチャレンジしてみようと思います.

私のTLではGopherくんとD言語くん,とちらが可愛いかの戦いが勃発していました

16:10-17:00 ライトニングトーク/クロージング

黙って聞いてたのでメモ取り忘れましたww

ツイート貼っておくので勘弁して下さい

こんな感じです.

最後に

適当にマークダウンでメモとっていたので見出しタグがめちゃくちゃになってるところがあるかもしれませんがあしからず

もう少しだけ私について語って終わろうと思います

なぜ今回参加したのか

  • 広島県なら山口県から近い
  • 地方PyConなら私でも分かる話が聞けそう
  • あわよくばノベルティもらいたかった
  • ヤバイ人たちに会いたい
  • PyConJP 2015に参加した流れ
  • 情報収集←結構重要 など

なぜLTしなかったのか

  • 話すネタを奪われた(GitとPython)
  • 卒業研究の話をしてもなんか面白く無い
  • Python2.x系をほぼほぼ触らずにPython3.x系に移行してしまった(やってしまった感
  • 寝てないから眠かった など

今後の課題

おねだり

www.amazon.co.jp

何か買っていただけるととても喜びます!!!

余談

帰りにEdionに寄って,iPad Proを触ってきました!!
すごく大きかったです.私ぐらいになるとあれぐらいでも画面のドットが見えました.

大きさとしてはiPad miniが2つ分ぐらいでした.

f:id:nanashinodonbee:20151123035823j:plain

PCは13インチMacBook Pro

本当に最後

みなさん本当にお疲れ様でした!とても有意義な1日を送ることが出来ました.
来年は参加できるかわかりませんが,PyConJPの方は参加する予定です.
また機会があればよろしくお願いします!!

そして最後まで長ったらしい文を読んでくださりありがとうございました

関連記事

nnsnodnb.hatenablog.jp

入る学科間違えたと気付いた時にはもう遅かった

地獄を生きていくこのサバイバル高専生活果たしてどう生きていく