新着記事

Viewing posts from April, 2018

Google Hangouts Chat にプログラムからメッセージを送信する

Google ハングアウトの後継のチャット(インスタントメッセージング)サービス、Chat では、Webhook エンドポイントを使うことでとても簡単にチャットルームへのメッセージの送信ができます。

メッセージの送信に、チャット用の大規模なアプリ開発は不要です。Python でも curl でも JS でも、3行ぐらいでメッセージの送信ができます。

Webhook エンドポイントの作成

1. Chat を開く

https://chat.google.com/

2. チャットルームの作成

左上のメニューから、「チャットルームを作成」を選び、

適当に名前をつける。

3. Webhook エンドポイントの作成

チャットルーム名をクリックするとメニューが開くので、「Webhookを設定」をクリック

+ WEBHOOKを追加 をクリック

適当に名前をつけて、「保存」

Webhook の URL ができる。このURLを記録しておく。

メッセージを送信する

Python

import requests

webhook_url = 'https://chat.googleapis.com/v1/spaces/...%3D'

response = requests.post(
webhook_url,
json={"text": "こんにちは、世界!"}
)

requests を使えば、これだけでメッセージを送信できます。簡単ですね!

curl

curl -X POST "https://chat.googleapis.com/v1/spaces/...%3D" \
--header "Content-Type: application/json; charset=UTF-8" \
--data '{"text": "こんにちは!"}'

これで送信できます。

その他

その他のツールでメッセージを送信するには、Incoming webhook with Python を参考に

HTTPリクエストヘッダ: Content-Type: application/json; charset=UTF-8

リクエストボディはJson: {"text": "Hello from Python script!" }

で送信できます。

400エラーが出たら

テストコードを書いていたら、HTTPステータス400

{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT"
}
}

このようなエラーレスポンスが返ってきて困ってたのですが、この原因は単純なURLのコピペミスでした。URLの最後まで正しくコピペできているか、確認してください。

テキストエディターの複数行同時編集で仕事がはかどる

普段、業務でお使いのテキストエディターは、複数の行を一度に編集できる機能がついているかもしれません。

複数行の同時編集を使いこなせば、エンジニアでなくても普段の業務の効率を上げられて便利です。

エディター

非エンジニアに強くおすすめしたいのが、Microsoft の Visual Studio Code (以下VSCode) です。

Visual Studio というと、Windows用のプログラムを開発するIDEのイメージがありますが、このエディタは「ちょうどよくカスタマイズされた Atom」「無料のサブライムテキスト」「フロントエンド以外もいけるブラケッツ」といったモダンな軽量エディタの様相で、秀丸サクラエディタの代わりに使うのにちょうど良いです。

VSCodeはマイクロソフトのサイトからダウンロードして無料で使えます。

エンジニアは、JetBrains のエディターを買うのがおすすめです。

今回は、VSCode と JetBrains のエディター(Android Studio, PHPStorm, PyCharm, RubyMine等) を例にします。

操作方法

1. 矩形選択からの複数行入力

<li class="">りんご</li>
<li class="">バナナ</li>
<li class="">いちご</li>
<li class="">みかん</li>

このテキストの、class="" に一度に 文字を入れます。

[VSCode] Shift+Alt を押しながら下にドラッグ

[JetBrains] Alt を押しながら下にドラッグ

class="" ←このダブルクオーテーションの間をクリックし、クリックしたまま Shift + Alt を一緒に押してドラッグするとキャレットが下に増えます。増えた状態でキーボードから文字を入力すると、複数行に同時に入力されます。

上下方向だけでなく、左右の選択も行えます。矩形に選択した状態で、削除・カット・コピー・ペーストを行うことができます。

2. 同文字列選択からの複数行入力

<li class="">
りんご
</li>
<li class="">
バナナ
</li>
<li class="">
いちご
</li>

このテキストの、class="" に、一度に文字を入れます。

[VSCode] Command+D

[JetBrains] Control+G

文字列を選択した状態で、上記キーを押すと、同じ文字列をファイル中から検索し、選択状態にします。複数選択状態になれば、同時にその箇所を編集できます。

この機能は使い勝手が良く、機械的な判定を行うので人間が目で見て判定して操作する時のようなミスがありません。使用頻度も多く、積極的に使えば速度と品質の両方の向上が期待できます。

例の動画では、class 文字列を選択して同じ文字列を選択、その後文字を入力しています。

上下左右のカーソル移動の他に、行頭([Mac]Control+A)、行末([Mac]Control+E)のカーソル移動も併用して行うことで、効率よくテキストの修正ができます。

3. キャレットを増殖させて入力

<a>りんご</a>
<span>バナナ</span>
<a>いちご</a>
<a class="primary">みかん</a>

このテキストに、class="fruit" を一度に入力します。

[VSCode][JetBrains] Alt を押しながらマウスボタンをクリック

操作することで、その位置にキャレットを増やすことができます。キャレットが増えている状態でキーボード入力をすると、すべてのキャレットに文字が入力されます。

応用編

複数位置へのペースト

複数選択してコピーしたテキストは、複数選択したキャレットへペーストすることができます。

スプレッドシート(エクセル) での結果を処理する(HTMLにする等)時に便利です。

Search