蒐集

make sense / nonsense.

PyLadies のこと

こんにちは、mariです。

この記事は、PyLadies Japan Advent Calendar 2019の9日目の記事です。

PyLadies Kyotoを昨年の1月にスタートして、その後細々と会が続いた中で考えたこと、感謝などについて雑多に書いて行きます。(本当に雑多ですみません)

 

1、

PyLadiesという団体は、Pythonに関係する女性エンジニアの集まりです。

We are an international mentorship group with a focus on helping more women become active participants and leaders in the Python open-source community.

というのが本家のミッションで、結構力強いメッセージが込められています。

Kyotoはそこまで力強くできてはいないですが、それでも男性が圧倒的大多数を占めるエンジニア業界の中で、本当に女性しか参加できない集まりを作っているので、今までなかった会の雰囲気を心強く感じる事があったり、どこかリラックスした気分でコーディングと関わっている自分を見つけたりすることがあり、結構気に入っています。

アメリカのチームと一緒に仕事をしていたときに、女性エンジニアだけで集まってランチを食べる会が月一で開催されていて、そこでは育児とキャリアの話題が出たり、女性特有の持病の話題が出たり、介護の話があったり、結構個人的な悩みをみんなで話して、お互いに知っておく会がありました。慣れない環境にいたのもあり、自分は結構その会が救いになっていたので、日本に戻ってそういう場所を作っておきたかったんだなと思うなどしています。

おそらく本家と比較してだいぶ緩いですが、これからも、勉強したりキャリアについて考えたり、穏やかなコミュニティー活動を続けてゆきたいなと思います。

 

 

2、

今までの活動で得た、運営面のTipsを書きます。

京都チームは東京チームほどアクティブ人数が多く無いので、運営・ビジターの垣根は限りなく低く設定しています。別に運営ではなくても、スラックに参加しているメンバーなら誰でも「私でもやれるかも!」と思ったタスクにコミットしやすい仕組みを意識しています。

特にLT枠は登壇練習枠として準備していて、LT→コンテンツ枠A→コンテンツ枠BとかCとかと、ステップアップして行ける仕組みです。

 

今のところ、東京の皆様の手厚いご支援のおかげもあり、

京都チームの持っているタスクはこれ↓で全部です。

f:id:fox_box:20191210005302p:plain

タスク分割表

「あ、これだったら自分もいけんじゃない?」と思ったそこのあなた!ぜひ一緒にやってみませんかー・・・どうぞご検討よろしくお願い致します。

 

3、

ここまであまりPythonそのものの話を書かなかったので、Pythonの小ネタも挟んでおきます。(これを書いているタイミングでDjango3が発表されたので非常にタイミングが悪い上に、Django2のModeslとModelFormの実装のされ方を考えると禁じ手っぽいので書くのを若干悩んでいるのですが、これくらいしかネタを思いつかなかったので、書くことにしました)

Django2系のModelFormでフォームを書いていて、例えばあるラジオボタン のデフォルト値をページによって変更したい場合、困りますよね、、、

今からforms.Formで書き直すのもめんどくさいし、、、

そんな時に使えるのが、この↓書き方です。

 

class TopicModelForm(forms.ModelForm):

   class Meta:

     model=Topic

     fields=['title']

                  widget=forms.CheckboxSelectMultiple()  

   def __init__(self, *args, **kwargs):

     super().__init__(*args, **kwargs)

     self.fields['category'].initial=0    

 

なぜこんな書き方ができるかというと、 ModelFormがFormを継承しているからで、

super().__init__を使って子クラスの設定で親クラスの設定をオーバーライドしています。

ModelsのデフォルトとFormのイニシャルは、描画する時にFormが優先されるので、結果的に意図した動き(ModelFormでデフォルト値を設定したい)になります。

 

4、

最後に宣伝です。

まず、PyladiesKyotoの公式ブログです。ここには活動記録を書いています。

pyladieskyoto.hatenablog.com

 

そして、忘年会の連絡です。

初めて来る人も大歓迎です。この日はLTメインですが、一年で一番緩い会になっておりますので、PyladiesKyotoに少しでも興味のある方、ぜひご参加くださいね!

pyladies-kyoto.connpass.com

 

というわけで、記事を終わります。今年も皆様おせわになりました。

それでは、どうか良いお年をお過ごしください!

 

pyladies-Caravan in 京都を実施しました

こんにちは、mariです。
先週の日曜日にイベント登壇してきましたのでご報告。

pyladies

pythonを学ぶ女性の会です。

男性が圧倒的多数なソフトウェア業界、男性がマジョリティなコミュニティーはたくさんあるので、女性による、女性のためのコミュニティーが一個ぐらいあってもいいんじゃない?ということで、作られたコミュニティです。

www.pyladies.com

一応、pyladiesは世界に84拠点あるそうで、日本はTokyoとKyotoの二箇所にあります。

ちなみに私は、pyladies-Kyotoのorganizerを担当させて頂くことになりました。どうぞ宜しくお願いします。

 

pyladies-Caravan

pyladies-Tokyoのorganizerのmaayaさん、kananさんが中心となって活動されている、pyladies-Tokyo地方公演的な取り組みです。(なのでCaravan)

詳しくはpyladies-Tokyoの公式ホームページをご覧ください。

pyladiestokyo.github.io

 

pyladies-Caravan in kyoto

私が最近機械学習の勉強をやっているというのもあり、分析入門的な会になりました。webとかと比較するとちょっと地味な気もしてドキドキしていたのですが、参加者が15名の方に参加いただき、大変盛況な会となりました。

 

 

PyLadies Caravan in 京都おしながき

PyLadies Caravan in 京都は、Pythonを使った分析を始めてみたい方へのセッションを中心にお送りいたします!

Python入門編 @kanan

Pythonをはじめたばかりの方、これからはじめたい方向けに、Pythonの基礎知識や使い方などなどをお話します。 
本セッションでは特にPythonを使った分析をこれから始めてみたい方へ向けた内容でお送りいたします。

でぃーぷらーにんぐってなぁに?〜ぼんやりわかった気になる単語集〜 @maaya8585

ディープラーニングってやつをやってみたいけど、そもそも分析界隈で出てくる単語意味が分からない・・・ 
そんなあなたに向ける分析系単語をググりやすくするためのゆるふわ単語の説明集です。

CNNことはじめ @foxbox

最近Pythonで分析を始めたばかりの初心者から、これからPythonを使って分析してみたい初心者の皆さんへ送るセッションです。 
今回はとくにディープラーニングの有名な手法であるCNNについて解説してみたいと思います。 エールとつまづきポイントを交えてお話したいと思います。

女性エンジニアお悩み座談会 @all

座談会形式(アンカンファレンス形式)でみなさんが抱えているお悩みについて相談・議論していきます。 
職場・ライフワークバランス・ライフステージとスキルアップの調整などなど、普段抱えているエンジニア的お悩みからしょうもない質問までなんでもOKです。みんなでわいわい話し合いましょう~。

 

また、会場+ドリンクスポンサーとして、株式会社はてな様が協力してくださり、おしゃれオフィス+美味しいドリンクをいただくことができました。ありがとうございました。

 

maayaさん、kananさんの発表はそれぞれとても分かりやすい+アジュールでjupyter notebookの実行環境まで構築されていて、本当に手が込んだ素晴らしいものでした。

 

私は「CNNことはじめ」を担当しました。

人生初登壇で不備も多く、大変拙い発表となってしまいましたが、一応教材っぽい感じのコードなど準備してみました

 

github.com

maayaさん、kananさんに頂いたアドバイスを参考に、これから開催してゆくpyladiesの会で発表力をつけたいと思います。

 

謝辞

pyladies-Caravanを主導してくださったmaayaさん、kananさん、本当にありがとうございました。

最初の一回め、自分はほとんど任せっぱなしにしてしまっていたのですが、会の開催のためになにが必要かなど、準備の中で見せて頂いたおかげで、なんとか次回の開催に向けた準備をやって行けそうです。

頼りないですが、これからちょこちょこ開催を頑張ってゆく予定ですので、よろしくお願い致します。

最後に、maayaさんが書いてくださった公式ブログのURLを記載します。

pyconjp.blogspot.com

まだpyladies-kyotoのサイトの準備などはできなさそうなので、私のブログを中心に情報を発信してゆこうと思っています。(絶賛協力者募集中です。本当にゆるくやっていく予定なので、お気軽にご参加いただけると幸いです)

NEXT

京都のPythonの団体に「はんなりPython」さんがいるっぽいことが判明したので、pyladies-kyotoはkyotoの名を冠しているものの、関西を中心にウロウロ開催にしようと思っています。

私が大阪で会場を準備しやすい事もあり、次回は大阪での開催を計画中です。

 

と言うわけで、次回のpyladiesの会のコンテンツを考えています。

次回は三月末ぐらいに開催予定なので、そのぐらいまでに準備できそうなコンテンツかつ、自分の興味が機械学習かROSの方面にあるので、その関連の話をしようかなと思っています。

 

登壇練習したい方など、何か運営にかかわってみたい!と言う方がいらっしゃいましたら、このブログのコメント欄にコメントいただけると幸いです。

運営スラックチームにご招待致します。

 

それでは、今後ともどうぞよろしくお願いします。

Jupyter notebook

起動

仮想環境上から実行したいので、anaconda-navigatorからjupyter notebookを軌道するようにしています。

手順としては、anacondaのrootの環境をアクティベートしてから、コマンドライン上でanaconda-navigatorとコマンドを打つと起動します。これはUbuntuでもmacでも同様です。

$source ~/anacinda3/bin/activate root

$anaconda-navigator

マジックコマンド

%から始まる系のコマンド。

 

get_parserを使う時

自分が試した時はエラーが出ました。ので、下記のリンクを参照の上、easydictで代用します。get_parser自体は便利だなあと思うのでここは治ったらいいなぁ

qiita.com

 環境引数通す時

~/.jupyterディレクトリ以下の「jupyter_notebook_config.py」に記述する。

qiita.com

PyCharm

他人のコードを読む事は、とても難しい作業のように思います。特に私のような軟弱者にとっては結構メンタルに来る作業で、わからないパートが出ると「いまこの時間を本当にこれに使っていいのかな、、、」とか不安になります。しかしDon't Worry。一人でジリジリしながら時間をかけてコードを読む事は必要な事です。

シリコンバレーで私を指導してくれた先輩エンジニアの口癖は「step by step」でした。仮に人に何を言われても、自分が一番価値があると思ったならそれをやりましょう。これは多分、とても大事な事。

ここでは、その一助になるかなと思ってデバグ機能の使い方を追加してゆきます。他にいいデバグ方法を知ってる人がいたら、教えてくださると私が喜びます。よろしくお願いします。

 

pythonのclassを読む

debug.pyファイルを作る

一般的な方法とは言えないかもしれないのでなんとも言えないのですが、私は、大きなファイルを読むときdebug.pyというファイルを作って、クラスを一つづつ呼んでは実行しています。

debug実行環境を作る

デバグ 環境の立ち上げは下記タブのDebugの項目から最初の実行できます。

f:id:fox_box:20181122071657p:plain

そうするとこうして右上のタブからコンフィグが選べるようになるので、ここからオプション変数などを記載してゆきます。

f:id:fox_box:20181122071824p:plain

f:id:fox_box:20181122071928p:plain

ダガーをつける

f:id:fox_box:20181122075522p:plain

確認したいクラスをコピーして、見たい部分だけ実行するようにコードを書き換えていきます。

そして、一時停止したい任意のポイントにブレイクポイント(赤い丸:ダガー)を打って、各変数にどんな形の何が代入されていっているのか動かしながら確認します。図の赤丸の出ているエリアをクリックしたらダガーをつけられます。ダガーはいくつつけても構いません。

実行

実行のためのボタンは用途に合わせて複数存在します。
①Resumeボタン(F9)

左下に出て来る緑の三角。次のブレークポイントまで移動して停止します。

f:id:fox_box:20181122080016p:plain

②Stepoverボタン(F8)

1ステップずつ処理の実行を見せてくれる。

f:id:fox_box:20181122080636p:plain

 

 

numpy

言わずと知れた、データ解析用のライブラリについて書いてゆきます。

乱数生成

from numpy.random import *
seed(100) # 数値はなんでもいい
rand() # 毎回同じ値を返す

Numpyで生成される乱数は擬似乱数であるため、固定したseedを指定してやれば毎回同じ乱数が出ます。デバッグ時に毎回同じ乱数を出したい場合などに使います。

ファイル関係のライブラリ

argparse

「 arg(ument) + parse 」という名前のとおり、コマンドライン引数を管理するためのライブラリです。大きなツールでいろんなデータのやりとりがある時(例えば機械学習のコードなど)を読むと出てきます。

ライブラリ: argparse - Life with Python

ちなみにget_parser( )でgetした値はtype( )で型を見ると下記の通りです。
<class 'argparse.Namespace'>

そのまま表示すると下記のような形で代入されている事がわかります。

Namespace(piyo==1,hoge=='home/hoge/')

 

 

よく見る依存ライブラリ

最近機械学習系のコードを読んでいます。知らない事がいっぱいでわかるのが難しい。分からない事は怖くないぞ!と思いながら進めてゆきます。

随時更新してゆくので、よろしくお願いします。

CUDA

NVIDIAGPUを使うためのSDKで。高速な並列計算(畳み込み計算とかの行列計算など)を行う。

PIL(pillow)

もともとPython Image Library(PIL)があって、その開発が停止しているためフォークされて開発されているのがpillowです。例えば、リサイズ(拡大・縮小)や回転、トリミング(部分切り出し)のような、openCVほど複雑な処理はする必要がない時に使用します。

note.nkmk.me

PILで

NameError: global name 'Image' is not defined

これの解決方法は明示的にimageモジュールをインポートする事だった。

import PIL.Image

matplotlib.pyplot

import matplotlib.pyplot

im = input[0]

nim = im.numpy()

aa = nim.astype(np.unit8)

plt.imshow(aa)

lmdb

学習用データファイルの形式の一つです。(lmdb形式)

import lmdbとして、lmdb.open( )などと書いている部分はデータの読み込みをしています。

The LMDB file format

lmdb — lmdb 0.94 documentation

pickle

Pythonオブジェクトを保存・復元するのに用いる標準ライブラリです。直列化(シリアライズ)や非直列化(デシリアライズ)を行います。

開発効率をあげる!Pythonでpickleを使う方法【初心者向け】 | TechAcademyマガジン