PyCon JP 2018 2日目参加メモとまとめ
1日目に引き続き、2日目も参加してきた。諸事情によりKeynoteは参加できず、セッションから参加。また途中で退散となった。
2日目は平日だからか1日目よりやや人が減っている?と感じたが、おやつ戦争は健在。
- セッション: 「リモートペアプロでマントルを突き抜けろ!」AWS Cloud9でリモートペアプロ&楽々サーバーレス開発
- セッション: REST API に疲れたあなたへ贈る GraphQL 入門
- セッション: Pythonでざっくり学ぶUnixプロセス
- セッション: Pythonによる異常検知入門
- PyCon JP 2018を振り返って
- (蛇足)カンファレンスに参加してみる、ということについて
セッション: 「リモートペアプロでマントルを突き抜けろ!」AWS Cloud9でリモートペアプロ&楽々サーバーレス開発
セッションタイトルの「マントルを突き抜けろ!」はリモートするなら地球の反対側ともやれないと意味がない、ということでつけたタイトルだそう。ふざけているように思えてリモートワークの本質だなーと思ったし、それを可能とする環境が本当に整ってきているということがよくわかったセッション。
実際にAWS CodeStarというサービスを利用して、環境構築、Cloud9というAWSが以前買収したブラウザベースのIDEでリアルタイムでリモートTDDペアプロ、途中からソロ、をしながらどのような環境でそれを実現しているかを解説するという内容だった。
リモートペアプロは想像以上にスムーズに画面が動いて、環境としては問題なさそうという印象。
実際にやっているところを見ての気づきとしてはリモートワークはペアプロにかかわらず、役割分担と何に取り組むかを決めておく、ということが実は重要と感じた。
AWS CodeStarは環境構築をパパパっとやってくれるサービスで、こんな便利なものが存在しているのか!とびっくりした。料金もそれほど高いものではないので、試してみよう。
AWS CodeStar – アプリケーションを迅速に開発および構築して AWS にデプロイ
セッション: REST API に疲れたあなたへ贈る GraphQL 入門
GraphQLすげー
AWS AppSync便利ー
という結論。
そもそもGraphQLは聞いたことがあっただけで内容は全く把握できていなかったので、そもそもなところから話をされていたので、勉強になった。
GraphQL=API用のクエリ言語 + サーバ側のランタイム
GraphQLのメリットはクライアントとサーバ間のインターフェースがクリアになること。
その理由としては
型指定スキーマ
クライアントからどんな風に取りたいかを指定できる
サブスクリプションを利用したリアルタイム処理 イベントトリガーでデータが取得できるので、データが追加されたなどをトリガーにクライアントへ飛んでくる、ということが容易に実装できる
AWS AppSyncはGraphQLの環境をAWSのマネージドサービスを組み合わせて提供してくれる。かつテンプレートプロジェクトのようなものも提供されているのでそれを参考に進めてみることも可能。
GraphQLが魅力的に感じたので、試してみたい。
セッション: Pythonでざっくり学ぶUnixプロセス
もともとRubyで書かれた「なるほどUnixプロセス」という本があり、それがオススメということでPythonでやってみたという内容。
Unixは会社の研修含めちょいちょいやっているが、カーネルやシステムコール、プロセスなどの話は今回の話でよくわかった(というかこれまで全然理解できていなかったことが判明した)。
本すべての話までは限られた時間ではできないが、Unixのベースとなる考えや基本的な設計思想が分かる内容で、最後に紹介された参考資料で継続学習できそう、という基本の内容としては密度の濃い内容だった。
1日目の「webアプリケーションの仕組み」もあったが、Pythonという言語を知るだけではなく、周辺技術、別レイヤーの技術の知識も深めていくことがより広範囲なサービス開発の実現につながる、ということを感じたセッションだった。
セッション: Pythonによる異常検知入門
異常検知そのものの定義、異常検知の種類、そしてその種類ごとの分析手法とその手法をPythonで実現するとこうなる、という内容が30分でコンパクトにきれいにまとまった内容だった。
異常とは何か?ということについてはその事象だけでは判断できない。その事象の背景を理解する必要がある。
また、分析手法を活用して出た結果が必ずしも正解ではなく、分析対象をよく知る人などから分析結果に対するフィードバックをもらっていくことが必要である。
分析手法についても知識が必要なので、データサイエンスが難しそうと感じていたが、それ以上に実はかなり泥臭くビジネスドメインに関わっていくということが必要ということが、データサイエンスの最たる困難さだな、と感じた。
別のカンファレンスで某飲食チェーンのデータサイエンス部門の方の話でもやはり泥臭く(=悪い意味ではなく)一つ一つを積み重ねていく、ということを実践されていたことを思い出した。
データサイエンスや分析というのは閉じこもってごにょごにょするという勝手なイメージがあったが、全く違ってフットワークの軽さが必要な業務だと感じた。
PyCon JP 2018を振り返って
個人的にはPyCon JP 2017より多様なトピックのセッションがあり、楽しく参加させていただいた。特にDjango関係が結構あったのは嬉しかった。
紙コップが整っていなかったのが残念。
今回メモツールとしては、Notionを利用したが、Notionよい。 ページ階層化できるし、URL貼ると埋め込み形式で貼れるし、md形式っぽく書けるし。オススメ。
(蛇足)カンファレンスに参加してみる、ということについて
Pythonを独学でちゃんと勉強し始めて1年ぐらい経ったが、それでも全然雑魚である状態。それでもこういったカンファレンスや勉強会には行ってみる、ということをおすすめしたい。
参加側の場合、アウトプットする場ではないので、「勉強した気になる」という話があるが、初心者だったら、とりあえずインプットを増やしてみる、というのは手だと思う。
特にネットや書籍が様々にある状態においてはそれらを自分で取捨選択するのは意外に労力がいることで、また対象トピックが絞られた状態になってしまう。
カンファレンスに行くと
様々なトピックのセッションが用意されていて
それらを短時間で、知識や経験をもつ方が話をしてくれる
ので、多様なトピックに触れつつ、まとまった内容をインプットしやすい。正直最初は??が相当数ある状態になってしまうが、わからないことがわかるので調べようがあり、調べたりやってみると理解ができていく。徐々に知識が増え、できることが増え、やっていることがはっきりしてくると自分で絞ることもできるようになる。そしたら、参加頻度や対象を見直していけばよいと思う。
来年のPyCon JP2019は2019/9/16-17@大田区産業プラザPiOとのこと。来年も楽しみ。
PyCon JP 2018 1日目参加メモ
昨年に引き続き、2018年も参加してきた。
昨年は機械学習やデータ分析などデータサイエンスよりだったので、Python始めたばっかりのタイミングではちょっと強すぎた内容だったが、今年はDjangoのセッションも結構多く、またKeynoteではPythonの布教活動の話があるなど、テーマにある「ひろがるPython」な開催回となっていた。
- Keynote: Argentina in Python: community, dreams, travels and learning
- 招待講演: 東大松尾研流 実践的AI人材育成法
- セッション: Webアプリケーションの仕組み
- セッション: Jupyterで広がるPythonの可能性
- セッション: 自分が欲しいものをPythonで書く方法(Python for Myself)
- その他のカンファレンスのこと
Keynote: Argentina in Python: community, dreams, travels and learning
南米におけるPython布教活動の話と行動を始めることの重要性について。
布教活動についてはPythonコミュニティーから支援を取り付けるなど本格的な活動で、この行動力や実行内容を聞くだけで爪の垢を煎じていただきたいと思う内容だった。
また、相当数コミュニティ活動や発表をしてきているだけあって、スライド含め、プレゼンそのものがうまく、面白い内容だった。
パワポで説明資料を作成してしまう風習があるのか、なんとなく日本だとアウトライン的パターンや、文字詰め込みパターンのスライドが多く、書いてある割に「ここは飛ばしますね」という発表が多いように思う。しかし、文字ではない部分を話すことにリアル感というか、臨場感が感じられるように思うので、トークそのものについても参考にしたい。
print("Hello world")
しか知らない状態でとりあえずコミュニティのメーリングリスト参加は心が強いが、それが許されるというのは弱プログラマーにはありがたいことなので、心の強さを無視して見習いたい。
招待講演: 東大松尾研流 実践的AI人材育成法
AI人材育成について社会人向けにも講座等を提供している。
セッション: Webアプリケーションの仕組み
webフレームワークは便利だが、応用効かせるためにweb技術の基本的な部分を知っておくとよい。
webフレームワークがなかった頃のweb開発を実践しながらの解説で、最終的にはフレームワークで提供されているような処理になっていくという流れをあの短時間で解説されたのはさすが。
web技術の基礎おさえておこう、と改めて思った。
セッション: Jupyterで広がるPythonの可能性
Jupyter Notebookすげー。以上。
なんとなく知っていたが、ここまでできるとは知らなかった。これを聞いたらJupyter使いたくてしょうがなくなる。
セッション: 自分が欲しいものをPythonで書く方法(Python for Myself)
本やチュートリアルで学んだあと、「はて、どうしようか?」という疑問が起こったら、に対する一つの解として、「あったらいいなを作ろう」という内容。
具体的に自身で経験したことを踏まえての知見を共有されていたが、中でもPythonこだわり過ぎないことも大事(Pythonよりjsで実装した方が簡単そうだったからそっちにした)というのは改めて気付かされたことだった。
結構正確的にこだわってしまうというか、Pythonでモリモリやるのがいいと思ってしまいがちだったが、改めて「なぜプログラミングするのか?システム作るのか?」を考えるとなんらかの価値を生み出すためだよね、という重要なことを思い出した。よく壁職人の話で出る目的のレベルの問題が低くなっていたな、と反省。
その他のカンファレンスのこと
おやつでPyConデザインのカップケーキがあったが食べそこねた。
ZOZO SUITS配っていたらしい。
諸事情でパーティー出れずだったが、クラフトビールとかあって超楽しそうだった。来年は参加する。そして飲む。
YouTubeでLive配信していたみたい。
2日目も楽しみ。
共働き夫婦のスケジュール管理はTimeTreeがベストだった
我が家は共働きで、子どもは保育園に通っているのだが、通勤時間がそれなりに掛かるため、家事などを分担している。
スケジュール管理はそうなると結構肝で、壁掛けのカレンダーだけでは出先で確認ができないため、googleカレンダーやLINEでのやり取りで調整していたが、TimeTreeに出会い、激的によくなったので、同じような境遇の人にはおすすめしたい。
TimeTreeとは?
TimeTreeの特徴を一言で言うと「複数人で同じカレンダーを操作する」ということにある。
webサービスのカレンダーなら結構あると思われるだろうが、コンセプトとして共有するカレンダーを土台として構築されているため、ユーザー体験として共有がとても気持ちがいい。他のサービスだと個人のカレンダーが前提で、それを複数人で共有している、というものが多く、コンセプトと言うか設計思想が違っており、この違いを利用していて強く感じる。
サービスやアプリケーションがたくさんある中で、使っていて気持ちがいい、というのは使い続ける上でとても重要だと思う。
TimeTreeのよいところ
一度登録した予定を覚えていて、再度作成時に候補として出してくれる
これは個人的に最高に好きな機能で、過去に作成した予定が新規予定作成時に候補として出てくる。
PCやスマホで検索候補に過去の内容が候補として出るというのはあるが、文字列だけでなく、
- タグ
- 週日や時間帯などの他の情報
などもまとめてそのまま作成できる。
予定をコピーするという機能は他にもあると思うが、過去の予定からコピーするというのは実はかなりめんどくさい。
- 過去の予定を見つける
- 予定を開く
- コピーメニューを選択する
- コピー先の日時などを設定する
これがTimeTreeだと
- 予定を作成したい日時で予定を作成しようとする
- 予定内容を少し入れると候補が出る
- 選ぶ
で終わる。これが予定を考えるという行動の手順に一致していて、心地が良い。それでいて、デジタルの良さとしてのコピーがされるので、手書きより楽で、デジタルらしさがうまく組み合わさっている。
こういうものを体験するとITで世の中よくなる!と思える。
また他の観点として、繰り返しなら繰り返し設定すれば?ということがあるが、共働き夫婦あるあるだと思うのだが、お迎え当番を分担する場合は曜日毎でうまくいくわけではなかったりする。その場合繰り返し設定が返って邪魔で、むしろすばやく同じ予定を作れる、ということが肝になる。
TimeTreeになれると仕事で使っているgoogleカレンダーになぜこの機能がないのか?!とモヤモヤするくらい、便利だと思っている。
タグでひと目でどっちの予定かわかる
イメージとしてはこんな感じ。これは他のカレンダーでもよくあると思うが、夫婦で予定を共有するときに特にお迎えがどちらか?ということはパット見でわかることがとても重要だと思っている。
家族によるが、我が家は月で半分ずつお迎え当番をしているので、カレンダーとパット見て半分になるかを確認することが多い。
また、仕事や体調によって交換することがあるが、それも色でひと目で分かるので間違えることがない。
共有カレンダーではこの色による視認性は使いやすさに直結するというのが実体験の結果。
メンバーの予定登録が通知される
夫婦で利用する場合メンバーは2人。家族なら家族分になるが、そのぐらいの少数メンバーであれば、予定を追加したことがリアルタイムで分かるというのは便利である。
前は事前に予定いれていい?とか、確認してから予定を入れるという流れだったが、今ではTimeTreeで予定を入れて、その後にTimeTree上のチャット機能なりで確認する、(もしくは相手から確認される)ような流れになったので、予定をとりあえず入れる、という流れができた。これは重要で入れておかないと予定を入れることを忘れてしまい、直前でバタバタするということを防ぐことができる。
我が家の使い方についてちょっとだけ
我が家ではお迎え当番用のタグを夫婦それぞれで作成して、お迎えはそのタグとセットで使うようにした。
それ以外は家族個人の予定についてそれぞれタグを分けて、共有した方が良い内容(出張、個人のお出かけ、通院など)だけ入れるようにして、個人で完結する予定(仕事のミーティング、個人的なリマインダなど)はそれぞれで別管理としている。
これにより、相手の予定のうち、自分に関係するものを確認するのはTimeTreeという流れができた。
また子どもたちの予定(運動会など)についてもタグとセットで夫婦で共有できるので、片方のカレンダーにはあったので片方だけ覚えていたが、もう一方は忘れていたことで仕事の予定を入れてしまった、などを未然に防ぐことができるし、「あれ何日だっけ?」という非生産的な会話がなくなった。
TimeTreeはこれまで夫婦間の予定をどう共有するか?という問題を解消してくれたサービスなので、末永く続いてほしいと思う。
Djangoを始めるならUdemyのコースがいいかもしれない
日本ではRuby on Rails関連の情報は多いが、Djangoに関する情報はまだまだ少なく、初学者には「Django Girls」がオススメ!ということが多い。Django Girls終了後どうしたものか?と思っていたところある勉強会で「Udemyに結構Django関連のコースあるよ」という話を小耳にはさみ、チェックしたところよかった。
Udemyとは?
オンラインの学習プラットフォーム。 決まった講師がいるというのではなく、スキルを持った人がコースを作成し、受講者はそれらを受ける、というもの。
最初は正直どんな人が講師かわからないが大丈夫か?変なものに当たらないか?と思っていたが、レビューが結構されていることでコースについて事前にある程度知ることができる。
先に言っておくと、動画配信を生業にしている人ばかりではないので、画面サイズ小さい・・・とか声が小さい・・・とか多少あるが、それは受講側の環境でなんとかなるので、それほど心配せずともよいように思う。内容はコースによると思うが、一つ一つ説明をしてくれるようなコースも結構あるので、初学者向けの教材で「とりあえずこう書くものと覚えてください」ということについて掘り下げて解説してくれているコースもある。
料金や期間は?
Udemyのコースは定価だと24,000円〜12,000円などそれなり(とはいえ、どこそこのプログラミング教室と比べるとだいぶ安いとは思うが)のお値段がするが、2018年9月時点でいえば、結構な頻度でセールが開催されている。利用者数を増やすため、かもしれないのでこれがいつまで続くかは不明なので、受講を決めたらセールのタイミングで早めに買ってしまうのがよいかもしれない。
また、受講期間についてだが、コースによって設定されるようだが、無期限というものが多いようで、私が受講しているコースはすべて無期限設定だった。これは復習したり、見返したりがずっとできるので、非常にありがたい。
教室タイプの学習コンテンツだと同じ内容を再受講するというのは難しい。オンラインコースでも期間限定のものが多いと思うので、無期限はかなりありがたい。プログラミング関係の知識は暗記というより、その時々で必要な知識を利用できるというのが重要だと思うので、受講した内容を再度閲覧できることは非常にありがたい。
実は私も1年前ぐらいにセールのときにまとめて複数のコースを購入してなあなあで先送りしてようやく最近受講開始したところだが、それが許されるというのは私みたいなタイプの人間には助かる。
Udemyのコースについて
Djangoに限らず、Pythonや機械学習、データサイエンスなどのコースも多数ある。他にもReactやReact Native、Node.jsなどもあり、Pythonistaに限らず、希望するコースを探せるかもしれない。 WEBエンジニア事始めのようなコースもあり、これが値段の割に受講コースの総時間が多かったりするのでお得感がある。
また私は未受講だが、英語やビジネススキルのようなコースもある。
Djangoコースについて
私が受講中のコースはこれ。
このコースのオススメな点は記述した内容を1つ1つ解説してくれる点で、他の書籍等でDjangoの記述で「?」があった部分が結構理解できた。背景を理解したいタイプの人にはオススメできるのではないかと思う。
まとめ
Djangoやっていて、まだもう少し学習がしたいな、でもコンテンツがないなーと思っているならコースを調べてみてもよいと思う。
Markdown記法で躓いたので調べた
Markdownで躓いた(というか忘れた)ので再度調べてしまった。だいぶ忘れやすくなってるorz。
コードブロックの書き方
`(バッククォート)3つで挟めばよい
番号付きリストの連番が途切れた
↑の通り、内部行にインデント設ければおけー。
Djangoのモデル作成手順メモ
model作成のざっくりした流れを備忘メモ。
models.pyでclassを定義
変更したmodelsのアプリケーションをmigration
python3 manage.py makemigrations [hogeapp]
migrationした内容をmigrateで実際に反映する
python3 manage.py migrate