Beeeat’s log

Beeeat’s log

プログラミングで出くわした知識やツール、日常生活、働き方その他色々なことをメモしていくブログ

「Slack App」と GAS で Slack にメッセージを投稿する

最近,「Slack App」と GAS で自分の日常生活を便利にするアプリを作っております.そのため現在は両者を勉強中で,その時に得た知見をまとめようと思います.

今回はメッセージを投稿するという基本となる機能についてまとめます.今までは「Incoming Webhook」をよく利用していましたが,チャンネル毎に Token を生成しないといけないため.設定次第では色々なチャンネルに投稿できる Bot の Token を利用できる Slack App を利用します.

やり方

完成イメージ

特定のチャンネルにユーザ名と絵文字をカスタマイズした状態でメッセージを送ります.こんな感じでメッセージが投稿されるイメージです.

f:id:bake0937:20200323232711p:plain

Slack App の作成

Slack API のページから Slack App を作ってみましょう. api.slack.com

「Create New App」を押して,App Name と Slack のワークスペースを選択します.投稿したいワークスペースを選択することで作成することができます.

f:id:bake0937:20200323231412p:plain

作成後,「App Home 」にある「App Display Name」 をの「Edit」を押し,「Display Name」と「Default username」を追加しましょう.この設定をしておかないとワークスペースに Slack App をインストールすることができないため注意です.

f:id:bake0937:20200327093936p:plain

GAS を書く前に Slack App の設定変更

コードを書く前にchat.postMessageの仕様を確認してみましょう.

api.slack.com

何やら「autoship」という気になる項目があるので見てみます.

f:id:bake0937:20200323130034p:plain

どうやらユーザ名とアイコンを設定したい場合はchat:writeに加えて,chat:write.customizeという「Scope」を追加する必要があることがわかります.

f:id:bake0937:20200323130438p:plain

というわけで,Scope を設定しましょう

f:id:bake0937:20200323125715p:plain

Scope を設定したら,「Install App for Workspace」でワークスペースにインストールし, Bot の Token を生成しましょう f:id:bake0937:20200323223956p:plain

ワークスペースにインストールすると「Bot User OAuth Access Token」が表示されるので,コピーします.

f:id:bake0937:20200323224538p:plain

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 を追加します.

f:id:bake0937:20200323224955p:plain

実行する関数にpostMessageを選択し,「▶」で実行します.

f:id:bake0937:20200323225259p:plain

Slack を見てみると設定した内容でメッセージが投稿されていることがわかります.

f:id:bake0937:20200323232711p:plain

まとめと所感

今回は「Slack App」と GAS で Slack にメッセージを投稿する方法についてまとめてみました.「Incoming Webhook」を使ったやり方の場合,従来のようなやり方で上手くいくと思いますが,今回ポイントになったのは作成した Slack App に chat:write.customize という Scope を追加するところかなと思いました.

Slack は日々頻繁にアップデートしているので,Slack のアプリを作るときは公式のドキュメントを必ずチェックしなら進めるのがベストですね.

GAS は clasp という CLI ツールを使うと TypeScript が使えるようなので,作っているアプリの機能の実装が揃ってきたら勉強がてら挑戦します 💪💪

「Toggl Button」で気軽にタイムトラッキングができることを知った

先日,Pomello + Trello を使ってポモドーロテクニックでタスクをこなせることについてまとめた.

bake0937.hatenablog.com

あれから,上記の方法で試していたが,Toggl の Chrome 拡張の「Toggl Button」+ GitHub(or GitLab or BitBucket) が思っていたよりも使えそうだったので,まとめてみる

使い方

まずは「Toggl Button」をインストールする.

chrome.google.com

「Toggl Button」の設定画面にある「Integration」に移動し,連携したいサービスを選ぶ.今回は GitHub と連携をしてみるため,フィルターに GitHub と入力し,チェックボックスにチェックを入れる.

f:id:bake0937:20200316063210p:plain

GitHub の issue や Pull Request の画面を見てみると,「Start timer」というボタンが表示されるため,これを押すとタイムトラッキングが開始される.

f:id:bake0937:20200316063450p:plain

「Toggl Button」の設定画面にある「Pomodoro」でなんとポモドーロテクニックでタイムトラッキングもできる.自動で5分休憩ができる設定にはできないが,25分単位でアラートを出したりタイムトラッキングを止めることができる. f:id:bake0937:20200316063657p:plain

上記の画像の設定で「Start timer」を実行し,「Toggl Button」を押してみると下記の画像のような表示になる.

f:id:bake0937:20200316070148p:plain

Toggl のデスクトップアプリも利用すれば,Google Chrome を閉じてしまった場合でも,デスクトップアプリからタイマーを止めたり再スタートができる.私の場合,まずは issue や Pull Request 上にある「Start timer」を実行してからはデスクトップアプリでタイマーの管理をしているのが今の使い方になる.

toggl.com

まとめと所感

今回は「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 touchMac に接続しても「iTunes」が立ち上がらず,音楽の同期が始まらない...原因を調べたところ今まで使っていた「iTunes」がこれから「ミュージック」へこれからシフトしていくことにより,同期の方法が変わったらしい.

今回はその同期の方法についてまとめていく.

やり方

同期の方法は簡単で以下の公式ページに沿って進める. support.apple.com

support.apple.com

音楽の追加や削除などは「ミュージック」を起動して操作をする.

そしていつも通り,iPod touchMac に接続すると,なんと Finder のサイドバーに iPod touch のデバイスが表示される.

f:id:bake0937:20200309121931p:plain

表示された iPod touch のデバイスをクリックすると,「iTunes」で表示されたような画面になる.

f:id:bake0937:20200309121933p:plain

あとは,この画面に表示されている「同期」を押せば音楽を同期が始まる.

まとめと所感

今回は技術的な内容ではないが,頻繁に行う作業かつググるのに少し手こずったのでまとめてみた.間違えて「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.0v8.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 上で行うことができるアプリを使ってみたのでまとめてみます,

f:id:bake0937:20200224230352p:plain

前提

Pomello を利用するには,Trello のボードが必要なため事前にアカウント登録とボードの作成が必要です.

trello.com

使い方

以下の,公式サイトからアプリのダウンロードとインストールをします.

pomelloapp.com

アプリを起動すると以下のような小さなウィンドウが表示されます. 左にある点の部分をクリックします.

f:id:bake0937:20200224224104p:plain

ダッシュボードのアイコンをクリックします

f:id:bake0937:20200224224306p:plain

「Connect」をクリックすると Trello へ接続するウィンドウが表示されるため表示された内容に沿って連携させます.

連携すると以下のように Trello で作成したボード名が表示されます.

f:id:bake0937:20200224224734p:plain

Pomello 上でタスクを選択できるようにするために,ボードの中にあるリストにチェックをつけましょう.一見,ラジオボタンに見えて1つしか選べないように見えますが複数選べます.

f:id:bake0937:20200224224941p:plain

設定したら,ダッシュボードの画面を閉じて,メインメニューまたは更新のアイコンを押すと以下のようにボードが設定された状態になります.

f:id:bake0937:20200224225339p:plain

「Pick a task」を押すと,選択したいリストや設定されているボードの中にあるタスクを選択できます.

f:id:bake0937:20200224225504p:plain

「Do it」を押すとタイマーが実行されます.さぁタスクに着手しましょう!!! f:id:bake0937:20200224225607p:plain

1ポモドーロが終わると以下のように🍅のマークと実行した回数が表示されます.これで1つのタスクに掛かった時間を計測できますね!

f:id:bake0937:20200224225722p:plain

まとめと所感

Pomello を使ってポモドーロテクニックを Trello 上で行ってみました.Pomello の操作は最初のうちは慣れが必要かもですが,そこを乗り越えると良い感じに使えこなせそうだと感じました!

もう少し使ってみて問題なさそうならタスク管理は Trello に移行しようと思います.ここ数年で Trello を使ったら離れたりとしていましたが今回で落ち着くことを願いながら使っていきます 😅

GitLab を コードリーディングするために Git LFS を入れる

大規模システムのコードを読んで勉強するために,GitLab を コードリーディングすることにしました.

gitlab.com

しかし,普通に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の略で大規模のファイルを管理する時に便利なツールのようです.

git-lfs.github.com

インストール方法

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」という拡張機能があります.

marketplace.visualstudio.com

この拡張機能にある 「goto online link」 という機能を使えば,下記のように GitLab 側のソースコードを経由してマージリクエストを見ることができるので,やはりgit cloneした方が良いのかなぁと思いました.

f:id:bake0937:20200217233042p:plain

まとめと所感

Git LFS を導入し,手元の PC に GitLab をgit cloneすることができました.Git LFS は名前だけ聞いたことあるレベルだったので実際に使う機会ができて良かったです.

さぁここからですね!GitLab は Rails で作られており, Vue.js も採用しているようです!頑張って読んでみるぞ!!!

プログラミング言語のタイピング練習ができる「Speedcoder」の紹介

f:id:bake0937:20200210232249p:plain

最近,コードを書いている時にタイピングスピードをもっと上げたいと感じてきました.

タイピングの練習といえば「寿司打」ではあるのですが,寿司打は基本的に日本語のタイピング練習のため,普段書いているソースコードのタイピングのスピードを上げる練習はできないものかと悩んでいました.

typing.sakura.ne.jp

「Speedcoder」でプログラミング言語のタイピング練習ができる!

色々探してみたのですが,「Speedcoder」というサイトがとても良さそうでした.

www.speedcoder.net

様々な言語のタイピングの練習ができます.

私はよく Ruby で練習をしてます.

f:id:bake0937:20200210233312p:plain

↓のような感じで入力する際の指のガイドやタイピングのスピードを計測してくれます. f:id:bake0937:20200210233526p:plain

なんと練習したいソースコードをアップロードすることもできます!!! f:id:bake0937:20200210233715p:plain

まとめと所感

プログラミング言語のタイピング練習ができる「Speedcoder」について紹介しました.

エンジニアとして生産性を上げるにはタイピングスピードはとても重要だと感じています.「Speedcoder」1日1回練習すれば一年後にはタイピングスピードはかなり向上しそうだなぁと思いました.

コツコツコツコツやっていこうと思います.