「Slack App」と GAS で Slack にメッセージを投稿する
最近,「Slack App」と GAS で自分の日常生活を便利にするアプリを作っております.そのため現在は両者を勉強中で,その時に得た知見をまとめようと思います.
今回はメッセージを投稿するという基本となる機能についてまとめます.今までは「Incoming Webhook」をよく利用していましたが,チャンネル毎に Token を生成しないといけないため.設定次第では色々なチャンネルに投稿できる Bot の Token を利用できる Slack App を利用します.
やり方
完成イメージ
特定のチャンネルにユーザ名と絵文字をカスタマイズした状態でメッセージを送ります.こんな感じでメッセージが投稿されるイメージです.
Slack App の作成
Slack API のページから Slack App を作ってみましょう. api.slack.com
「Create New App」を押して,App Name と Slack のワークスペースを選択します.投稿したいワークスペースを選択することで作成することができます.
作成後,「App Home 」にある「App Display Name」 をの「Edit」を押し,「Display Name」と「Default username」を追加しましょう.この設定をしておかないとワークスペースに Slack App をインストールすることができないため注意です.
GAS を書く前に Slack App の設定変更
コードを書く前にchat.postMessage
の仕様を確認してみましょう.
何やら「autoship」という気になる項目があるので見てみます.
どうやらユーザ名とアイコンを設定したい場合はchat:write
に加えて,chat:write.customize
という「Scope」を追加する必要があることがわかります.
というわけで,Scope を設定しましょう
Scope を設定したら,「Install App for Workspace」でワークスペースにインストールし, Bot の Token を生成しましょう
ワークスペースにインストールすると「Bot User OAuth Access Token」が表示されるので,コピーします.
GAS を書いてみる
Google Drive にアクセスし,GAS のエディタ画面を開きましょう.今回は以下のような関数を作ります.
function postMessage() { const url = "https://slack.com/api/chat.postMessage"; // 投稿するチャンネルやメッセージ内容を入れる const payload = { "token" : "Bot User OAuth Access Token", "channel" : "random", "text" : "Slack App のテストだよ", "username": "Slack App", "icon_emoji": ":slack:" }; const params = { "method" : "post", "payload" : payload }; // Slackに投稿 UrlFetchApp.fetch(url, params); }
動かしてみる
投稿するチャンネルにインストールした Salck app を追加します.
実行する関数にpostMessage
を選択し,「▶」で実行します.
Slack を見てみると設定した内容でメッセージが投稿されていることがわかります.
まとめと所感
今回は「Slack App」と GAS で Slack にメッセージを投稿する方法についてまとめてみました.「Incoming Webhook」を使ったやり方の場合,従来のようなやり方で上手くいくと思いますが,今回ポイントになったのは作成した Slack App に chat:write.customize
という Scope を追加するところかなと思いました.
Slack は日々頻繁にアップデートしているので,Slack のアプリを作るときは公式のドキュメントを必ずチェックしなら進めるのがベストですね.
GAS は clasp という CLI ツールを使うと TypeScript が使えるようなので,作っているアプリの機能の実装が揃ってきたら勉強がてら挑戦します 💪💪
「Toggl Button」で気軽にタイムトラッキングができることを知った
先日,Pomello + Trello を使ってポモドーロテクニックでタスクをこなせることについてまとめた.
あれから,上記の方法で試していたが,Toggl の Chrome 拡張の「Toggl Button」+ GitHub(or GitLab or BitBucket) が思っていたよりも使えそうだったので,まとめてみる
使い方
まずは「Toggl Button」をインストールする.
「Toggl Button」の設定画面にある「Integration」に移動し,連携したいサービスを選ぶ.今回は GitHub と連携をしてみるため,フィルターに GitHub と入力し,チェックボックスにチェックを入れる.
GitHub の issue や Pull Request の画面を見てみると,「Start timer」というボタンが表示されるため,これを押すとタイムトラッキングが開始される.
「Toggl Button」の設定画面にある「Pomodoro」でなんとポモドーロテクニックでタイムトラッキングもできる.自動で5分休憩ができる設定にはできないが,25分単位でアラートを出したりタイムトラッキングを止めることができる.
上記の画像の設定で「Start timer」を実行し,「Toggl Button」を押してみると下記の画像のような表示になる.
Toggl のデスクトップアプリも利用すれば,Google Chrome を閉じてしまった場合でも,デスクトップアプリからタイマーを止めたり再スタートができる.私の場合,まずは issue や Pull Request 上にある「Start timer」を実行してからはデスクトップアプリでタイマーの管理をしているのが今の使い方になる.
まとめと所感
今回は「Toggl Button」についてまとめてみた.Toggl 自体は前々から知ってはいたが,連携したいサービスがかなり多いことやタイムトラッキングしたいのが issue や Pull Request に紐付いていることが多いことに気づいたため,Toggl を見直すことができた.
GitHub(or GitLab or BitBucket) には カンバン機能もあるため,併用すればタイムトラッキングとタスク管理がさらに捗りそうだと感じた.
Mac と iPod touch(iPhone) で音楽を同期する方法がいつの間にか変わっていた
かれこれ iPod touch を4,5年利用しており,当たり前のように Mac Book Pro (以下,Mac)と iPod touch で同期をして音楽を聴いていた.
しかし,突然 iPod touch を Mac に接続しても「iTunes」が立ち上がらず,音楽の同期が始まらない...原因を調べたところ今まで使っていた「iTunes」がこれから「ミュージック」へこれからシフトしていくことにより,同期の方法が変わったらしい.
今回はその同期の方法についてまとめていく.
やり方
同期の方法は簡単で以下の公式ページに沿って進める. support.apple.com
音楽の追加や削除などは「ミュージック」を起動して操作をする.
そしていつも通り,iPod touch を Mac に接続すると,なんと Finder のサイドバーに iPod touch のデバイスが表示される.
表示された iPod touch のデバイスをクリックすると,「iTunes」で表示されたような画面になる.
あとは,この画面に表示されている「同期」を押せば音楽を同期が始まる.
まとめと所感
今回は技術的な内容ではないが,頻繁に行う作業かつググるのに少し手こずったのでまとめてみた.間違えて「Apple Music で「ライブラリを同期」を有効にする」方法で解決しようとしていた...
同じように困っている人がこの記事を参考にしてもらえると...というか数週間後の自分への記事だなこれ...
yarn コマンドで「The `yarn' command exists in these Node versions:」と表示された場合の対応
yarn を npm(今回の場合は,ndenv で Node.js インストールしている) でインストールしている状態で,yarn コマンドを実行すると,以下のように yarn がインストールされた Node.js にバージョンを変えるように案内され,yarn コマンドを使うことができない時がある.
$ node --version v12.16.1 $ yarn --version ndenv: yarn: command not found The `yarn' command exists in these Node versions: v8.12.0 v8.5.0
暫定対応
暫定対応としては npm で管理している yarn を削除すれば 使えるようになる.まずは,yarn がインストールされているディレクトリを確認する.
確認後,そのディレクトリをrm
コマンドで削除をすれば,yarn コマンドを使うことができる.
$ which yarn /Users/ユーザ名/.anyenv/envs/ndenv/shims/yarn $ rm -rf /Users/ユーザ名/.anyenv/envs/ndenv/shims/yarn $ yarn --version 1.21.1
恒久対応
これで yarn コマンドが使えるようになったが,yarn init
など普段通りにyarn を使っていると yarn コマンドのディレクトリがまた/Users/ユーザ名/.anyenv/envs/ndenv/shims/yarn
となるため,また,rm
コマンドで削除する必要になってしまう.
そのため,都度都度この作業をしないようにするためには,yarn は npm で管理しているものではなく,Homebrew などのパッケージ管理ツールで管理しているものを使うようにすれば良い.
Homebrew で yarn をインストールする方法はこちら. classic.yarnpkg.com
そのため,今回の場合はv8.12.0
とv8.5.0
に yarn がインストールされているため,これらのバージョンにインストールされている yarn をアンインストールすれば良い.
$ ndenv global v8.12.0 $ npm uninstall -g yarn removed 1 package in 0.163s $ ndenv global v8.5.0 $ npm uninstall -g yarn removed 1 package in 0.145s
一旦ターミナルを再起動し,yarn がインストールされたディレクトリが Homebrew でインストールされたディレクトリになっていればOK
$ which yarn /usr/local/bin/yarn
まとめと所感
今回は yarn コマンドで少し詰まったことについてまとめてみた.暫定対応の方法を都度都度実施すれば良いが,こういう手間は塵も積もれば山となるので,こういう小さい手間はこれからもドンドン省いて,少しでも生産性を上げていく.
Pomello を使ってポモドーロテクニックを Trello 上で行ってみた
ノートやタスク管理として Notion を使っていたのですが,最近,タスクはポモドーロテクニックでこなしてみたくなってきました.ポモドーロテクニックのアプリは沢山ありますが,今回は「Pomello」というポモドーロテクニックを Trello 上で行うことができるアプリを使ってみたのでまとめてみます,
前提
Pomello を利用するには,Trello のボードが必要なため事前にアカウント登録とボードの作成が必要です.
使い方
以下の,公式サイトからアプリのダウンロードとインストールをします.
アプリを起動すると以下のような小さなウィンドウが表示されます. 左にある点の部分をクリックします.
ダッシュボードのアイコンをクリックします
「Connect」をクリックすると Trello へ接続するウィンドウが表示されるため表示された内容に沿って連携させます.
連携すると以下のように Trello で作成したボード名が表示されます.
Pomello 上でタスクを選択できるようにするために,ボードの中にあるリストにチェックをつけましょう.一見,ラジオボタンに見えて1つしか選べないように見えますが複数選べます.
設定したら,ダッシュボードの画面を閉じて,メインメニューまたは更新のアイコンを押すと以下のようにボードが設定された状態になります.
「Pick a task」を押すと,選択したいリストや設定されているボードの中にあるタスクを選択できます.
「Do it」を押すとタイマーが実行されます.さぁタスクに着手しましょう!!!
1ポモドーロが終わると以下のように🍅のマークと実行した回数が表示されます.これで1つのタスクに掛かった時間を計測できますね!
まとめと所感
Pomello を使ってポモドーロテクニックを Trello 上で行ってみました.Pomello の操作は最初のうちは慣れが必要かもですが,そこを乗り越えると良い感じに使えこなせそうだと感じました!
もう少し使ってみて問題なさそうならタスク管理は Trello に移行しようと思います.ここ数年で Trello を使ったら離れたりとしていましたが今回で落ち着くことを願いながら使っていきます 😅
GitLab を コードリーディングするために Git LFS を入れる
大規模システムのコードを読んで勉強するために,GitLab を コードリーディングすることにしました.
しかし,普通にgit clone
するだけでは,クローンすることができませんでした.
$ git clone git@github.com:gitlabhq/gitlabhq.git Cloning into 'gitlabhq'... remote: Enumerating objects: 1399, done. remote: Counting objects: 100% (1399/1399), done. remote: Compressing objects: 100% (1339/1339), done. remote: Total 1502728 (delta 459), reused 759 (delta 34), pack-reused 1501329 Receiving objects: 100% (1502728/1502728), 733.90 MiB | 10.26 MiB/s, done. Resolving deltas: 100% (1146442/1146442), done. git-lfs filter-process: git-lfs: command not found fatal: the remote end hung up unexpectedly warning: Clone succeeded, but checkout failed. You can inspect what was checked out with 'git status' and retry the checkout with 'git checkout -f HEAD'
エラー内容にgit-lfs filter-process: git-lfs: command not found
とあったので,Git LFS を導入した上でgit clone
をしてみます.
Git LFS とは?
Git Large File Storage
の略で大規模のファイルを管理する時に便利なツールのようです.
インストール方法
Homebrew でインストールします.
$ brew install git-lfs $ git lfs install
バージョンを確認します.もし,バージョンが表示されない場合はPCを再起動してから確認してみてください.
$ git lfs version git-lfs/2.10.0 (GitHub; darwin amd64; go 1.13.6)
もう一度クローンしてみる.
さて,これで Git LFS はインストールされたので,エラーにあったgit-lfs filter-process: git-lfs: command not found
が解消されたかと思います.
気を取り直してもう一度 GItLab をgit clone
してみましょう!
少し時間は掛かりますが,クローンすることができると思います.
$ git clone git@github.com:gitlabhq/gitlabhq.git clone ssh://git@gitlab.com/gitlab-org/gitlab.git -> /Users/ユーザ名/projects/gitlab.com/gitlab-org/gitlab git ls-remote ssh://git@gitlab.com/gitlab-org/gitlab.git git clone ssh://git@gitlab.com/gitlab-org/gitlab.git /Users/ユーザ名/projects/gitlab.com/gitlab-org/gitlab Cloning into '/Users/ユーザ名/projects/gitlab.com/gitlab-org/gitlab'... remote: Enumerating objects: 114060, done. remote: Counting objects: 100% (114060/114060), done. remote: Compressing objects: 100% (10205/10205), done. Receiving objects: 100% (1889852/1889852), 738.19 MiB | 684.00 KiB/s, done. remote: Total 1889852 (delta 110480), reused 104393 (delta 103838), pack-reused 1775792 Resolving deltas: 100% (1478442/1478442), done. Checking out files: 100% (28689/28689), done.
これで手元の PC に GitLab のソースコードが手に入りました! Zip でダウンロードするやり方もありますが,利用しているエディタが VS Code の場合,「gitlink」という拡張機能があります.
この拡張機能にある 「goto online link」 という機能を使えば,下記のように GitLab 側のソースコードを経由してマージリクエストを見ることができるので,やはりgit clone
した方が良いのかなぁと思いました.
まとめと所感
Git LFS を導入し,手元の PC に GitLab をgit clone
することができました.Git LFS は名前だけ聞いたことあるレベルだったので実際に使う機会ができて良かったです.
さぁここからですね!GitLab は Rails で作られており, Vue.js も採用しているようです!頑張って読んでみるぞ!!!
プログラミング言語のタイピング練習ができる「Speedcoder」の紹介
最近,コードを書いている時にタイピングスピードをもっと上げたいと感じてきました.
タイピングの練習といえば「寿司打」ではあるのですが,寿司打は基本的に日本語のタイピング練習のため,普段書いているソースコードのタイピングのスピードを上げる練習はできないものかと悩んでいました.
「Speedcoder」でプログラミング言語のタイピング練習ができる!
色々探してみたのですが,「Speedcoder」というサイトがとても良さそうでした.
様々な言語のタイピングの練習ができます.
私はよく Ruby で練習をしてます.
↓のような感じで入力する際の指のガイドやタイピングのスピードを計測してくれます.
なんと練習したいソースコードをアップロードすることもできます!!!
まとめと所感
プログラミング言語のタイピング練習ができる「Speedcoder」について紹介しました.
エンジニアとして生産性を上げるにはタイピングスピードはとても重要だと感じています.「Speedcoder」1日1回練習すれば一年後にはタイピングスピードはかなり向上しそうだなぁと思いました.
コツコツコツコツやっていこうと思います.