Chalice(Lambda + API Gateway)を使ってInteractiveComponentを扱うSlackAppを作る

  • POSTS
SlackのInteractiveComponent Making messages interactive | Slack SlackBotでもInteractiveComponent自体を投稿することはできるが(単にattachmentsを付与すれば良い)、アクションのリダイレクト先を指定することができないのでSlackAppを作成する必要がある ※: SlackBotとSlackAppは別物 想定仕様 EventAPIとInteractiveComponentのリダイレクト先に指定するサーバはAPI Gateway + Lambdaを使う Flaskライクに書いたAPIをAPI Gateway + Lambda etc..へデプロイできるフレームワークChaliceを使う SlackAppにメンションを飛ばすとInteractiveComponentを返す EventSubscribe(EventAPI) で app_mention イベントをlistenする RedirectURLは foo-bar-domain/api を想定 InteractiveComponentにはYes/Noボタンを付ける どちらかのボタンが押されたとき対応する文章を返す RedirectURLは foo-bar-domain/api/reaction とする SlackAppの作成 Slack API | Slack でStartBuildingボタンを押すとアプリを作成することができます つづけて、 - BotUserの作成 - InteractiveComponentsの有効化 - Permissionの設定 - chat:write:bot - bot BotUser作成したときに付与される をしておきます。最後にInstallAppすることでWorkspaceへAppをインストールします RedirectURLはデプロイ後、URLが決定したら設定します ChaliceでEventAPI、InteractiveComponentのRedirectを受けるAPIを作る chaliceをインストールしてプロジェクトを作成します AWS Chalice — Python Serverless Microframework for AWS 1.8.0 documentation

iOS12 で SMS で受け取った認証コードを補完候補に出すときは autocomplete 属性に one-time-code を指定する

  • POSTS
iOS12ではセキュリティ周りのアップデートで、セキュリティコードの自動入力がサポートされました。 主な機能として、サインイン時のパスワード自動入力や、アカウント作成時の自動パスワード生成などがサポートされました。 以下のブログでネイティブアプリの実装を紹介しています。gif付きでわかりやすいです。 すぐできる iOS Strong Password and Security Code AutoFill – PSYENCE:MEDIA そんなアップデートの中で、地味ではありますが、SMSで受けとった認証コードを補完候補に出す、という機能が追加されました(上記のブログ内のgif参照)。 本記事では、 MobileSafari(WebView) 内で有効にするのに手間取ったのでメモ。 やったこと 記事のタイトル通りですが、 <input> タグの autocomplete 属性に one-time-code を指定することで実現可能です。 <input id="single-factor-code-text-field" autocomplete="one-time-code"/> Enabling Password AutoFill on an HTML Input Element | Apple Developer Documentation まとめ HTMLはどことなくエンジニアが軽視しがちな領域ですが、正しく構造化したり、適切な属性を付与することで、メンテナンス性やアクセシビリティの向上が見込めます。 地味ではありますが、少し手を加えるだけでユーザビリティ向上につながりますね。

fzf + sqliteを使ってChromeの閲覧履歴をインクリメンタルサーチする

  • POSTS
JSL (日本システム技研) Advent Calendar 2018 - Qiita の12日目の記事です。 モチベーション Chromeの履歴が見辛いのでいい感じに表示したい 履歴を見やすくするプラグインはいくつかあるが、ターミナルから「履歴閲覧→開く」ができるとシームレスにWebブラウジングに移れそう なので今回は、sqliteを使ってユーザのローカルに保存してある履歴ファイルを閲覧 + fzfを使ってインクリメンタルサーチ するコマンドを実現するための方法を書く。 最終的にやったこと fzfの公式サンプルに載ってた。 Examples · junegunn/fzf Wiki サンプルに沿って、パスの通った場所に以下のようなコマンドを置きました。名前はChromeHistoryで ch としました。 #!/usr/bin/env zsh ch() { local cols sep google_history open cols=$(( COLUMNS / 3 )) sep='{::}' if [ "$(uname)" = "Darwin" ]; then google_history="$HOME/Library/Application Support/Google/Chrome/Default/History" open=open else google_history="$HOME/.config/google-chrome/Default/History" open=xdg-open fi cp -f "$google_history" /tmp/h sqlite3 -separator $sep /tmp/h \ "select substr(title, 1, $cols), url from urls order by last_visit_time desc" | awk -F $sep '{printf "%-'$cols's \x1b[36m%s\x1b[m\n", $1, $2}' | fzf --ansi --multi --preview-window down:1 | sed 's#.

PyCharmの機能をIdeaVimのnormalモードに割り当てる

  • POSTS
IDEにPyCharm、Vim用のキーバインド設定のためにIdeaVimというPluginを使っています。 PyCharmはそれ自体が便利で、機能も豊富で素晴らしいIDEです。今回はPyCharmに備わっている各機能をVimのnormalモードに割り当てるまでの設定をしたいと思います。 今回はPyCharmですが、JetBrains系のIDEであれば同様に設定できるかと思います。 今回は Navigator > Next Method / Previous Method をVimのnormalモードの <C-n / C-p> に割り当てます。 Next Method / Previous Method は、名の通り、今いる位置から次/前のメソッドの行頭に移動する機能です。 デフォルトではCtrl + Shift + Option[Alt] + ↓ / ↑ なので結構押しづらい。 単に当該機能のキーマップを Ctrl + n / p に割り当てることでも問題ないのですが、自分の設定だと、それぞれUp / Downが割り当てられているため、normalモードのみこの機能が効くようにしたい。 .ideavimrc を作成する 通常のVimを使用するときに、 .vimrc を設定するように、IdeaVimでも同様の設定ファイル .ideavimrc があります。 これに通常のVimの設定に加えて、IdeaVim独自の設定をします。 $ touch ~/.ideavimrc .ideavimrc を設定する 以下のようにnormalモードの にそれぞれの機能をマッピングします。 nnoremap <C-n> :action MethodDown<CR> nnoremap <C-p> :action MethodUp<CR> なお、設定できるPyCharmのアクションの一覧は、IdeaVimを導入したPyCharmのエディタ上で、 :actionlist とすると見ること出来ます。