#PyConJP 2017 in Tokyo に参加しました。PyCon JP 2017 1日目 参加ログ #pyconjp に引き続きの参加です。
今日は名札あれば受付不要なので直接キーノート会場へ。
今日は開始5分前に着席して、時間ちょうどにキーノート始まった!よかったよかった
堀越 真映 (@sinhrks)
400人くらい会場に来てるかな?
会場に質問
自分はPyData系だと思う方 -> 3割くらい
Pandas知ってる方 -> 6~7割くらい
抜粋
Pandasは、データ仕様が与えられない場合の、試行錯誤のためのツール
2012年に初Issue、2014年に活動開始、2015年にコアチーム加入
最近は 1 Pull Request, 1 commit 運用を徹底している (俺:Sphinxもその方がいいかもなあ)
コミッターに期待することを明記している -> Code Of Conduct (俺:あーこれはマネしようかな)
後方互換性: 良くないAPIなどをdeprecationして2バージョン維持 (俺:これはSphinxもやってるね。元ネタはDjango)
Pythonによるデータ分析入門 -> 10月に改訂版が!
Issueテンプレートを使って報告しやすいように整備 (俺:Sphinxもやってるー。報告の質が格段にアップしたよ)
団体企業からの支援 (俺:何に使ってるのか聞き逃した)
OSS活動ってやる必要あるんだっけ?
-> 承認欲求を満たせる (俺:うん)
-> 有識者のレビューを受けてスキルアップできる (俺:うんうん)
-> 内部実装が理解でき(使う側としても)効率的なコードが書ける (俺:わかる)
-> 修正を取り込んでもらえると、使う時のhackkyな書き方が不要になる (俺:超わかる)
PRを出してみようと思ったら
大きめのプロダクトならIssueがタグで整理されている
難易度タグが付いてるので簡単なやつから手を付けてみる
他の人が手を付けているものは避けた方がよいかも
プルリクエストでバグ修正した場合
意図が伝わらなければコードを書く
影響範囲が大きい場合ひたすらテストを足す
気をつけていること
局所的な修正を避ける
テストをちゃんと書く
ドキュメントをできるだけ書く
Q: 投げられるIssue/PRが大量に来ると思いますが、どうやってさばいてますか?
A: 気づいた人がやる。活動量が多い人がレビューしてくれたりします。
Q: 自分の機能に責任を持って対応してる感じですか?
A: リリースマネージャーみたいな人がいて、その人は全てのIssueを見たり返事したりしてます
Q: @nobolis_ : 仕事とプライベートの時間の使い分けをどうされてますか?
A: 業務上はOSS活動するために雇われていないので、基本的に個人で活動してます。そういう活動も評価されているので業務上無駄になってたりはしません
Q: @shimizukawa: SphinxのIssueは今600ちょっとあります。PandasのIssueを見てみたら2000を超えていて、それってIssueが右肩上がりになっていくと思うんですが、そういうときに、どうやって気持ちを維持していくのか、お聞かせ下さい
A: コアコミッターはPRのレビューなどで忙しくて自分でパッチを書く時間が取れない事が多いです。なので、自分で全部直すのではなく、自分たち以外の人でも直せるような体制をつくっていく。簡単そうなissuesだったらやり方を提案して報告者にやってみてもらうとか。そうやって直せる人を増やしていってます。
Q: ドキュメントだけで1000ページ以上ありますよね。そういう巨大なOSSを維持していくのは専門家じゃないともうできないものなのでは?
A: Yes & No. ドキュメントを見る専任者みたいな人がいます(Anacondaや2sigmaの人)。ただ、専任者がいないとできないわけじゃなくて、居ないなら居ないなりのやり方があると思ってます。
Q: 西本: 局所的な修正よりも大局的に直す、という話をもうすこし詳しく聞かせて下さい
A: 欠損値のバグをある関数でだけ直しても、欠損値の扱いはそこだけじゃなく、もっと深いところで問題があって他の関数にも影響がある
Q: その意図は凄くよく分かるんですが、Pandasのような巨大なプロダクトだと影響の広いコードを直すのはすごい影響ありそうで、そこで議論が紛糾したりしませんか?
A: 2つ話があります。開発者側としてはあまり議論にならなくて、全体的に直した方が良いと判断する。慣れていない人が直す場合、全体的な視点は持っていないこともあるので、そこは慣れている人がアドバイスしたりします。
Q: ベンチマーク比較するツールの紹介(airspeed velocity(asv))がありましたが、そのツールはPythonでしか使えないものですか?
A: 基本的にはPythonでスクリプトを書くので、Pythonの方が便利に使えますが、他でも使えるとは思います。
Q: OSSへのコントリビュートをし続けるってすごい難しいことだと思うんですが、1年継続していくのに工夫したことはありますか?
A: 自分のスキルアップのためにPandasにターゲットを絞って活動をしていました。Issueを眺めて自分で直せそうな部分があったら自分でやってみるというのを続けました。
SHINJI KITAGAWA (@esuji)
情熱駆動開発
自分が欲しいものをだれかが作ってくれる、ということはない
Pythonならライブラリたくさんあるからなんとかなるかな、と思った
情熱があれば作れる
Q&Aは時間切れで個別。「11:30からOpen Spaceでやります」
昨日の私の資料を肴に、4人くらいでプロトコルについて話してました。
print(obj)
もAdapter?
それは単に関数
printの中では、文字列の表示用に str(obj)
するけど、これはAdapterと言って良さそう
str(obj)
は obj.__str__
を呼び出す。もしなければ obj.__repr__()
にフォールバックする
obj.__repr__()
はオブジェクトのrepresentationで、対話シェルに値を表示するために repr(obj)
したときに呼ばれる。これはAdapter
Swiftには適合(adopt)というのがある
CustomStringConvertible
を適合(adopt)させると、 description
プロパティの実装を強制されて、これで obj.__str__
相当のことをやる
Pythonだと abc
で抽象仮想クラスを継承するような感じだね。Pythonだと適合みたいな文法はないけど、継承で実現する
PythonってTraitsないの? -> 継承で
PythonってMixInないの? -> 継承で
Pythonって適合ないの? -> 継承で
そういえば Zope Component Architecture (ZCA) では interface.implements
というのがあるなあ
Pythonというか、プログラミング言語一般で共通した「プロトコル」っていう概念がある?
一般的にはないかも
通信用語だと、通信プロトコルとしてよく登場するよね
オブジェクト指向の文脈で、メッセージパッシングがあるけど、あれはオブジェクト間の通信仕様だと思うので、プロトコルなのかも
Python公式リファレンスにそんな情報が書いてあるなんて全然しらなかった
公式リファレンス、とりあえず一通り読んだりしないの?
難しくて最初からアレを読むのは無理では...
まあ公式ドキュメントは教科書ではないのでしょうがないよね。それにしてもPythonの公式ドキュメントは入門者に易しくないw
他の本でPythonを勉強して、公式リファレンスを一通り読めるようになったらもう初心者卒業って言えそう
それにしてもPython公式リファレンス、Protocolの話が少なすぎる
ドキュメントのソースコメントに、 talk about protocols? って書いてあるよw
プロトコルのドキュメントを書こう!
よーし、プロトコルハッカソンだ~
PythonユーザのためのJupyter[実践]入門 、買おうかどうしようかと思ってたけど、 @chezou さんの以下のツイートを見て買いました!イベント価格で税込み3,000円!
Pythonエンジニア ファーストブック も販売してた。おれも本売りたかったなあ...
いいなあぁ...
Python Boot Camp から始めて、将来的に地域PyCon、っていう流れもありだと思います!誘致に興味ある方は Python Boot Camp を見てくださーい。よろしくー
LT
LTやってました。ちゃんと聞けなかったので感想略。
落とし物コーナー
クロージング
参加者数: 690人強
さんかした方、アンケートに回答してね: http://bit.ly/pyconjp_survey
ベストトークアワード
優秀賞: グラハムさん(クロージングに居なかった)
優秀賞: @yuzutas0
最優秀賞: Greg Price(クロージングに居なかった)
SQUEESE社
宿泊券5万円!
じゃんけん勝ち抜けで1名!
(自分は最終集団まで残ったけど、最後負けた...!)
プレゼント抽選
スポンサーのみなさんからのプレゼントをビンゴで~
はずれたー
PyCon JP 2018
2018/9/17 (月祝), 9/18 (火)
おわりー。最後グダグダだったなー。