LINEbot でオウム返し 2017 PHP版

やり方調べるのになぜか時間がかかる.

なんだかつらたん.

ただ, オウム返ししたいだけなのに!

しくみ

LINEサーバを介して自分のサーバ内のスクリプトで受け取ります.

スクリプト作成の前に LINE管理画面で,

- アクセストークンをもらう
- サーバー内スクリプトまでのURLを教えておく

スクリプト

LINE側 API はわかりやすい仕様で作られています.


<?php

$access_token = /* your access token */;

$url = 'https://api.line.me/v2/bot/message/reply';

// receive json data from line webhook
$raw = file_get_contents('php://input');
$receive = json_decode($raw, true);

// parse received events
$event = $receive['events'][0];
$reply_token  = $event['replyToken'];
$message_text = $event['message']['text'];


// build request headers
$headers = array('Content-Type: application/json',
                 'Authorization: Bearer ' . $access_token);

// build request body
$message = array('type' => 'text',
                 'text' => $message_text);

$body = json_encode(array('replyToken' => $reply_token,
                          'messages'   => array($message)));


// post json with curl
$options = array(CURLOPT_URL            => $url,
                 CURLOPT_CUSTOMREQUEST  => 'POST',
                 CURLOPT_RETURNTRANSFER => true,
                 CURLOPT_HTTPHEADER     => $headers,
                 CURLOPT_POSTFIELDS     => $body);

$curl = curl_init();
curl_setopt_array($curl, $options);
curl_exec($curl);
curl_close($curl);

結果

どんだけつらたんなのか!


新しくなった Gradle Tips and Recipes : 各ソースセットの配置の確認

新しくなってます, Gradle Tips and Recipes .

Gradle Tips and Recipes | Android Studio

Gradle が利用するディレクトリ

それぞれ指定できるのはなんとなく知っていたが.


android {
  ...
  sourceSets {
    main {
      java.srcDirs = ['other/java']
    ....

これらの記述無し無指定のデフォルトの場合はどのディレクトリが利用対象になっているのか.

ドキュメントやツールスクリプトなど,

Git に登録して管理はしたいが, アプリ自体に影響ない位置はどこなのか??

と思っていましたが.

Configure Build Variants | Android Studio

右上 [Gradle] タブから以下ダブルクリックで実行.

MyApplication > Tasks > android > sourceSets

Gradle が認識している対象ディレクトリ群が Gradle Console に出力される.


------------------------------------------------------------
Project :app
------------------------------------------------------------

...

debug
----
Compile configuration: compile
build.gradle name: android.sourceSets.debug
Java sources: [app/src/debug/java]
Manifest file: app/src/debug/AndroidManifest.xml
Android resources: [app/src/debug/res]
Assets: [app/src/debug/assets]
AIDL sources: [app/src/debug/aidl]
RenderScript sources: [app/src/debug/rs]
JNI sources: [app/src/debug/jni]
JNI libraries: [app/src/debug/jniLibs]
Java-style resources: [app/src/debug/resources]

これで, AndroidStudio でファイルを操作しながらの Git 管理しても安心です.

他にもあれこれ小技がのっていますよ, このレシピ.


あやしい Project Structure ダイアログを Experimental にしてライブラリ更新を正しく把握する

「かんたんにGUI上で編集する」という考え方なのだろうと思いますが, 今や設定項目の多さや複雑さに対応できているのか疑問に思うダイアログの「Project Structure」.

実行時の挙動が問題ない場合, 設定ファイル自体を直接GUIに対応するように修正する, というのもなんともおかしな話で.

一方, 利用しているライブラリの最新のバージョンを確認したいときはどうしたらいいのか.

Settings > Editor > Inspections > "Newer Library Versions Available"

サード・パーティのライブラリに関してはチェックしていない? の変化なし.

Experimental な機能を使う

Preferences > Build.. > Gradle > Experimental

そして, Project Structure を開くと, ライブラリ同士の依存関係を見ることができたり,

JCenter を利用したライブラリのバージョン確認もできます.

昔は, フツーにチェックしてくれたように思うが, いつからこうなった?


Android 6.x (Marshmallow) ホーム長押し (アシスト機能) アプリの設定

ホームボタンを長押しするとアプリが起動するようになったりしています.

ここから起動できるアプリを変更してみます.

OSバージョンで異なるようですが, 今回は, Android OS 6.x でやってみます.

[設定] - [アプリ] とタップしていきます.

ここで, 右上の「歯車」ボタンをタップします.

そして「既定のアプリ」をタップします.

一番上の「アシストと音声入力」をタップ.

さらに, 一番上の「アシストアプリ」の表示されてる文字の部分(歯車ではない) を押します.

この画面では現在「Launcher3」というアプリがセットされていますので. 歯車を押すとそのアプリの設定画面が表示されます. ホームボタン長押しから利用するアプリ自体を変更する場合は文字の部分をタップします.

インストールしているアプリのうち, アシスト機能に対応しているアプリの一覧が表示されますので, 利用したいアプリをタップしてセットします.

例えば「なし」を選択すると, ホームボタンを長押ししたときの反応はなくなります.

正直, 最近のOSまわりの設定は複雑すぎじゃない?

ホームボタン長押しアプリの変更や削除する方法

【3年連続3回目】ホームボタン長押し から起動されるアプリの変更は「アシス」で


Gradle 3.3 は本当に100倍以上の速さになったのか

アナウンス後, 3.3 公開されてます.

Gradle 3.3 Release Notes

英語だけど「100倍以上速い」とか書いてない?

試してみました.

gradle-wrapper.properties を 3.2 から 3.3 に.


distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
#distributionUrl=https\://services.gradle.org/distributions/gradle-3.2-all.zip


$ ./gradlew -v

------------------------------------------------------------
Gradle 3.3
------------------------------------------------------------

Build time:   2017-01-03 15:31:04 UTC
Revision:     075893a3d0798c0c1f322899b41ceca82e4e134b

Groovy:       2.4.7
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_92 (Oracle Corporation 25.92-b14)
OS:           Mac OS X 10.12.2 x86_64

Built-in-shrinker で min21.

更新前 (3.2).

更新後 (3.3).

何回かやってみたけど だいたい2-3倍くらい.

環境などにも依ると思うけどもアナウンスはいつも盛り気味?

75%速度向上という Gradle 3.0 を Android Studio で試す

オプションに「–profile」をつけて Run時間が1分から2秒になった話