GoogleとSlackが連携した世界へようこそ

Googleの一部サービスがSlackと密に連携し始めてますね。

以下の記事とか見れば内容はわかりそう。

jp.techcrunch.com

blog.google

slackhq.com

TechCrunchの「戦略的連携」という単語にはちょっと違和感覚えますが、本当にSlackとGoogleが密な連携をした場合の世界を考えてみた。

Google側の視点だけ雑に考えてみる。んまー暇だったので思考実験です。

GoogleはSlackの何がほしいか

ここでは連携 = Slackが持つデータをGoogleに提供するみたいなレベル感で考えてみる。

GoogleはSlackの何がほしいか考えてみた。

  • 会話データ
    • 検索とは違った自然な会話データ
    • SNSとも違う性質を持ったデータになりそうな気がする
  • 会話をするプラットフォーム
    • Googleもハングアウトなどを持ってるけど、Slackはまた別性質な気がする

ほしいものを手に入れたGoogleは何をするか

じゃGoogleさんはSlackからほしいものを提供されて、何をするのか。

  • 会話の検索
    • Slackは1つの発言が1URLに紐付いてる
    • 発言にURLがあるというのは検索のIndexを集めるGoogleとしては最高に嬉しい
    • 発言のIndexを集めて、会話さえGoogleの検索窓から検索できる世界が訪れる
    • Slackはprivateな感じなのでクローラーが徘徊できなそうだけど、そこはまあなんかどうにかねー
  • 機械学習への活用
    • Slack上でやりとりされる様々な言語の会話データが手に入るので、それをAIに学習させるとか良さそうじゃんか
    • より自然な会話ができるAIが作れそう
    • 発言に対するリアクションとかを学習したらハイコンテクストなことも学習しそう

まとめ

「世界中の情報を整理し、世界中の人々がアクセスできて使えるようにする」というGoogleの使命的には、やっぱりSlackの中も検索できるようにしたいのかなーとか思ったり。

Facebookのように検索できなくなるほど大きな壁を作られる前に、GoogleがSlackをIndexする世界はくるんでしょうかねー

2016年 ぱないー ふりかえり🍩

合計 21ぱないのー でした

前半戦のまとめは以下

hack-it-iron.hatenablog.com

まとめ

ぱないのー

ちなみに、ミスドのポイントカードとか持ってないっす...

2016/12/29の30分 Kotlinメモ🍞

2016/12/29の30分 Kotlinメモ🍞

Kotlinスタートブック -新しいAndroidプログラミング を引き続き読んでる。

Androidアプリ組んでみるところ読んでる。

Kotlinスタートブック -新しいAndroidプログラミング

Kotlinスタートブック -新しいAndroidプログラミング

KotlinでAndroid版 雑雑Qiita Clientを作っていく。

github.com

KotlinでParcelerを使いたいぞい!!

Parcelerとは?これ(以下略

github.com

せったくKotlinのdata classはキレイなのに、自分でゴリゴリParcelable実装するとかねーないわー

Javaでもだるい!pluginで自動生成できるとしてもだるい!変数増やすと書き直さないとだし、だるい!

だるいぞ!!!!!!!

だからKotlinでもParceler使わせてくれ、頼む🙏という気持ちなわけです。

あーただAnnotation ProcessorだからなーKotlinあれか、kaptね。いまいちわかってねーけど、あれね。

んで、やっぱりそのまま使おうとするとエラーになるんで、以下のQiitaの通りにしたら動いた。

qiita.com

暇があればもう少し真面目にみますみます

まとめ

最近「雑種ども!」を語尾につけてTweetすると、ちょっとLikeされて嬉しいです🍞 ギルガメッシュ様かっくいい🍞

2016/12/28の30分 Kotlinメモ🐮

2016/12/28の30分 Kotlinメモ🐮

Kotlinスタートブック -新しいAndroidプログラミング を引き続き読んでる。

ざっくりKotlinの概要は終わったので、Androidアプリ組んでみるところ読んでる。

Kotlinスタートブック -新しいAndroidプログラミング

Kotlinスタートブック -新しいAndroidプログラミング

んで、今日からはKotlinでAndroid版 雑雑Qiita Clientを作っていく。

github.com

書くことは減りそうだけど、書いていく上で気づいたこととかあれば書いていくかなー

Kotlin版 BindableAdapter

ListAdapterを便利にするBaseクラスとして使ってるBindableAdapterをKotlinで書き直した。

abstract class BindableAdapterKt<T>(context: Context, episodeList: List<T>) : ArrayAdapter<T>(context, -1, episodeList) {

    private val inflater by lazy {
        LayoutInflater.from(context)
    };

    override fun getView(position: Int, view: View?, parent: ViewGroup?): View? {
        val newView = view ?: newView(inflater, position, parent)
        newView ?: throw IllegalStateException("newView result must not be null.")
        bindView(getItem(position), position, newView)
        return newView
    }

    abstract fun newView(inflater: LayoutInflater, position: Int, container: ViewGroup?): View?

    abstract fun bindView(item: T, position: Int, view: View)
}

エルビス演算子使えばいいのかなー?とかなんとなくKotlinっぽく書く努力をした結果がこれ。

ちゃんとSmart Castも使ってるよ?やるでしょ?

Java版はこんな感じ。

public abstract class BindableAdapter<T> extends ArrayAdapter<T> {
    private LayoutInflater mInflater;

    public BindableAdapter(Context context, List<T> episodeList) {
        super(context, -1, episodeList);
        setup(context);
    }

    private void setup(Context context) {
        mInflater = LayoutInflater.from(context);
    }

    @Override
    public final View getView(int position, View view, ViewGroup container) {
        if (view == null) {
            view = newView(mInflater, position, container);
            if (view == null) {
                throw new IllegalStateException("newView result must not be null.");
            }
        }
        bindView(getItem(position), position, view);
        return view;
    }

    public abstract View newView(LayoutInflater inflater, int position, ViewGroup container);

    public abstract void bindView(T item, int position, View view);
}

まとめ

実際にコード書き始めるとめっちゃJavaっぽく書いてしまって...あとセミコロンな!