読者です 読者をやめる 読者になる 読者になる

Septeni Engineer's Blog

セプテーニエンジニアが綴る技術ブログ

Akka HTTP で LINE bot を作ってみました

こんにちは、Xiaoです。

最近Akka HTTPの正式版 X がで出ましたね。 自分は前からAkka HTTPに興味があって、ちょうどいい機会なので、Akka HTTPを詳しく勉強するため、簡単のWebサービスを作ってみたいと思います。

LINE Bot とは

LINE が提供する Messaging API により、LINEのトーク画面を使った対話型Botアプリケーションの開発が可能になります。

図

※ Image taken from developers.line.me

この図を説明すると、

  • サーバのURLを LINE Bot にするアカウントと繋ぎます。
  • ユーザがBotに対して、友たち追加、メッセージ送信などを行う際に、設定されたサーバにイベント情報が送られます。
  • サーバがイベント情報を基づいて、LINE Messaging API経由でユーザに返信できます。

※ LINE アカウントの設定について、LINEの公式ドキュメントに記載されているので、割愛します。

Akka HTTPについて

Akka HTTP は Akka Actor と Akka Stream をベースに作られた、HTTPサーバ/クライエント処理をサポートするためのツール、ライブラリです(フレームワークではありません!)。

LINE botを作るには、Akka HTTP みたいなツールが丁度良いと思います。

今回で作る Bot

今回は Akka HTTP の特性の紹介するため、一番シンプルな「受けたメッセージをそのまま返す」Botを例にして、Akka HTTP の特性を幾つか紹介したいと思います。

続きを読む

SPAじゃなくてもWebpack導入(ファイル監視&自動リロード + レガシーブラウザ対応 + JS最適化 + ES2015(ES6) + SCSS + ESLint)

Septeni Originalの大久保です。

image

世間ではSPAが流行ってるかと思います。

ただHTMLのレンダリングはサーバー側で行うケースは以前多いのではないでしょうか?

現在自分が携わってる新規プロダクトでモダンなフロントエンドの技術(WebapackやES2015など)を使いつつ、HTMLレンダリングはサーバーに委ねるようなアーキテクチャ(Multi Page Application)の調査を行ったので、そこでの知識を備忘録的にまとめたいと思います。

今回作成したコードはGithubにあげているので、興味あればご参照ください。 Github URL:https://github.com/yoppe/webpack-es2015-base-for-play

続きを読む

コードをより良くするためのツール紹介

こんにちは! 新卒の濱と申します。

弊社では、開発言語としてScalaを採用しています。 私はScalaを使い始めて半年以上経ちましたが、コードレビューでは指摘されることが多く、未だに勉強の日々です。 コードレビューでは先輩や同僚が悪いところを指摘してくれるため、なぜこの書き方がダメなのか理解することができますよね。 しかし、独学でやるとなると自分の書いたコードが良いのか悪いのか判断しにくかったりします。

今回は、自分のコードをより良くするためのツールについて紹介したいと思います。

続きを読む

素早くデータマイニングしたくなったらSparkを始めよう

こんにちは。菅野です。

Scalaを使って集計バッチなどを書くと、ふつうは以下のようにコレクションのメソッドを駆使してデータをこねくり回しますよね?

  val 何かのデータ: Seq[String] = ???
  何かのデータ
    .groupBy(identity)
    .mapValues(_.size)
    .toSeq
    .sortBy(_._2)
    .foreach(println)

Scalaのコレクションは強力で使いやすいので、とりあえずこんな感じで日々のデータを処理すると思います。
しかし実行時間はデータ量に比例するように長くなり、そのうちOutOfMemoryErrorと叫びながらプロセスが爆散するようなります。

でも、もっと速く、もっと大量のデータを処理したいという要求が出た場合にはどうするのでしょうか?
ものすごい廃スペックマシンを用意すれば力技で解決できそうではあります。
それはそれでロマン溢れるのですが、イマドキのエンジニアなら分散処理でスケールアウトさせる方向に持っていきたいですよね?そのほうが無駄なく柔軟にリソース管理ができますし。

前置きが長くなりましたが、集計処理は簡単にスケールアウトできるんです!! そう、Sparkならね。

Apache Sparkとは

続きを読む