Python

Slackで動的なユーザグループを作成しようとして失敗した

  • POSTS
この記事は https://qiita.com/sin_tanaka/items/77f7b6bf2c11d41617fc にも紐付いています。 TL;DR Slackで動的なユーザグループがあると便利そう @here みたいな Slackの usergroups.users.update APIを使うと行けるのでは? Chalice (Python)と AWS Lambda 使って定期実行したらできた できたけど問題が発生したので辞めた 用途にあってるのか技術検証大事 前置き 弊社は歴史が古いながらも、「コアタイムなしのフルフレックス&リモートワーク推奨」な自由な働き方を売りにしている会社です。 出社時間はみんなバラバラですし、3割ぐらいはリモートワーカーです。よって、オフィスを構えているものの全員が出社することは稀です。 しかし働き方が変わると、議論すべき良し悪しや、解決すべき課題も発生します。 本記事はリモートワークの課題を解決しようとした話です。 リモートワーク時のチャット運用の課題 昨今、 @here , @channel 禁止等、各社のSlackの運用の話題になるのを見かけます。 通知は便利ですがプログラマの集中力を乱す原因にもなるからです。 そんな中、弊社Slackでこんな @here メンションがありました(自分のポストです、、) どうでしょうか?状況としては、「少し急ぎ」「アクティブなユーザにのみ通知したい」な状況なので、一般的な @here の使い方かと思います。 しかしリモートワーカーからしたらどうでしょうか リモートワーカーにとって社屋の会議室、応接室の使用状況は共有されなくても問題ないはずです。 つまりリモートワーカーにとってこの通知は不要なのです。 もちろんこれは通知をされる側だけでなく @here で通知する側もリモートワークの人に通知飛ばすの申し訳ないな、、と感じるかもしれません。 「リモートワーク推奨・・・だけど関係ない通知たくさんするよ!!」な会社だったらプログラマにとって働きやすい環境とは言えないのでは…? このように、リモートワーカーが増えるとチャットの 通知先を設計 することが重要になってきます。 動的なメンション そこで考えたのが動的なメンションです。 ある条件を満たすユーザのみに通知されるメンションがあればこの問題を解決できると考えました。 今回の例でいうと、「今日出社している人のみに通知されるメンション」となります。 そういえば、 @here もチャンネル内のアクティブなユーザのみに通知する、という意味で動的なメンションですね。 実装の検討 弊社には内製の行き先ボードと、そのREST APIがあります。 これを利用すればオフィスに出社している人は一覧で取れる。 なのであとはなんとかオフィスに出社している人一覧に向けてSlack上でメンションできればよさそうです。 Slack側にいい感じのAPIがないか調べていると usergroups.users.update というAPIを発見しました。 usergroups.users.update method | Slack usergroupにグループのID、usersにユーザのIDの配列を渡すことでユーザーグループのユーザーを更新できるというものです。

Pythonの仮想環境構築についてまとめ【社内向け】

  • POSTS
2019-11-11時点で知ってることについてまとめておこうと思います。 前提 状況に応じて使い分けましょう 2/3系の最新、ぐらいの大きなくくりでも問題ない人 2.6環境を用意しなければいけないとき😔 Win環境でデータ解析した人で仮想環境とか考えなくてもいいのであれば全部入りのanacondaでもいいかもしれない 標準でPythonが入っているLinux環境(Mac含む)では推奨しない (仮想環境を使いこなせばanacondaのような環境作るは簡単) 良質な仮想環境構築記事を見分けられるようになりましょう お前を信じる仮想環境を信じましょう 最初にまとめ さまざまな仮想環境ツールがありますが、基本的には、 PATHに仮想環境作成時のpythonのsymlink or 実体を追加する sys.pathにsite-packagesを追加する を実現するためのツールなので必要に応じて使い分けましょう。 その他にも、 pythonのバージョン管理も内包 (pip以外の)pythonのパッケージ管理も内包 があるので必要に応じて使い分けましょう。 筆者は以下を必要に応じて使い分けてるので、いずれにせよ pyenv はあると楽かも pyenv + venv pyenv-virtualenv pyenv + pipenv venv 公式の提供するモジュールです。3.3からデフォルトで使えます。 venv --- 仮想環境の作成 — Python 3.8.0 ドキュメント ※ 2.7等には入ってません 仮想環境を有効化する とは venvでの仮想環境構築を通しておおまかな仮想環境有効化の動きを追ってみます。 $ python -V # Python 2.7.10 $ python3 -V # Python 3.6.8 $ pwd /Users/yourusername/foobar # python3 -m venv /path/to/new $ python3 -m venv .

PyCon JP 2019で登壇 & 参加しました #pyconjp

  • POSTS
ありがたいことに、昨年のPyCon JP 2018に続き、今年もCfPが採択されたので登壇 & 参加してきました。 スライド: https://speakerdeck.com/sin_tanaka_21/pyconjp-2019 配信: https://youtu.be/lCQWLAJf6xQ CfPや、当日の意識したこと等、メモ書き程度に残しておきます CfPについて 昨年は割と小賢しいタイトルをつけたなぁと自負していて、「実践入門」って一体なんだよって感じではあったので今年はシンプルに、「やりたいこと」と「PyCon自体のテーマ」をかけ合わせる感じにしました。 PyCon JP 2018のスライド: https://speakerdeck.com/sin_tanaka_21/pyconjp-2018 YouTube: https://youtu.be/zgTP_4-XEpw 決まったタイトルが Pythonでライブをしよう!FoxDotを使った新時代のPython活用法 でした。 まぁ、「新時代」と謳いつつも、 FoxDot やライブコーディング自体は随分前から存在しているので微妙だなと思わんではないのですが、「PyConの場でライブコーディングの実演したら新時代感あるやろ!」と思って応募しました。 内容の検討 CfP出した段階で草案は考えていたのですが、内容を詰めたのは採択が決まってからです。昨年は7月の半ばぐらいでしたが、今年は6月には採択速報が出ていたため、準備期間が長くてありがたかったです。 考えた結果、ライブコーディングについて説明するのだから、やはりデモは力入れたいというのと、私自身がが知識欲満たせるプレゼンが好きという理由で特殊メソッドのオーバーロードの解説をすることにしました。 あとは、当初メディア・アートとの関連も少し話す予定でしたが、 自分が詳しくないので付け焼き刃 Pythonとの関わりが薄い の理由で話さないことにしました。 当日のデモ FoxDot だと3連5連のハイハット作るのが楽だし、トラップ流行ってるしそれっぽいBPM/ビートでいくかーとか、電子音に合いそうだし小室っぽいコード進行(GetWild風)にするかーとか、全部で5案ぐらい考えたんですが、最終的には、「変わったことはしないで、すごい風に魅せる」を念頭において、 カノン進行 一般的な House/Techno 辺りのBPM FoxDot のbellが結構いい音 & カノン進行に合うので主軸に置く メソッドチェーンで音を重ねる 転調で盛り上がりを作る 徐々に音数を増やす/減らす なデモに仕上げました。 あとは事前に用意したコードを徐々にコメントアウト解除する方式でやれば本番も大丈夫かな! …と思ったのですが、むくむくと欲が出てきて、 「本当のライブコーディングは事前に用意したコードをコメントアウトしておくのか…?」 「その場でコーディングしてくのが本物のライブコーディング&カッコいいのでは…?」 と思い立ち、PyCon前の土曜日にデモの案ができあがって、そこからはひたすら流れの暗記と練習をしました。 結果、本番では無事成功し、やはりコメントアウト方式よりも説得力が出た気がしています。相当アドレナリン出ました。 後日同僚から「カンペあったの?」と聞かれたのですがカンペは用意できませんでした。 ライブ性のあるものに対し、カンペを用意しないのはプレゼンとしてはバッドプラクティスかもですが、今回はギリギリまでデモを詰めていたためカンペを用意する余裕がなかったのと、「カンペを見ながらやる」というのも実はそこそこ練習が必要、の考えのもと用意しませんでした。 その他 今年からリアルタイムで配信されており、休憩時間にスマホで過去の配信を見ることができたので、かなり体験として良かったです。 良くも悪くも来年現地行くか迷うぐらい。。 今年は以下の辺りの発表を見ました。まだ全然観きれてない。。 メディアが運用すべき持続可能なVTuberをつくる技術(加藤皓也/Hiroya Kato) - YouTube 知ろう!使おう!HDF5ファイル!(thinkAmi) - YouTube 基調講演_Pythonで切り開く新しい農業(小池 誠) - YouTube Pythonで始めてみよう関数型プログラミング(寺嶋 哲/Terajima Satoshi) - YouTube Doujin-activity with Ren’Py(Daisuke Saito) - YouTube Djangoで実践ドメイン駆動設計による実装(大島和輝) - YouTube Pythonと便利ガジェット、サービス、ツールを使ってセンシング〜見る化してみよう(知野 雄二/Yuji Chino) - YouTube PythonとAutoML(芝田 将) - YouTube PythonとGoogle Optimization Toolsの最適化ライブラリで、「人と人の相性を考慮したシフトスケジューラ」を作ってみた。(鈴木庸氏) - YouTube 個人的には発表を受けて Ren'py について調べていたら近年の超名作 Doki Doki Literature Club!