kentaro-m’s blog

文章を書く練習をしています

まちのりLINE Botを金沢市のオープンデータ活用事例に載せてもらった話

qiita.com

昨年のAdvent Calendarで金沢のレンタサイクル「まちのり」の貸出可能な自転車の状況を教えてくれるLINE Botを開発した話を書きました。

そこで紹介したLINE Bot金沢市オープンデータ活用事例に掲載されたので、報告も兼ねて記事を書くことにしました。

まえがき

掲載の経緯を書く前にレンタサイクルまちのりと開発したLINE Botに触れておきます。

レンタサイクル「まちのり」

f:id:kentaro-m:20180721202134j:plain

まちのりは金沢市中心部の22箇所のポートで貸出・返却ができ、30分以内に返せば何度乗っても200円で済む素晴らしいレンタサイクルサービスです。

近江町市場や21世紀美術館金沢城公園、兼六園など金沢市中心部の観光地をカバーしているので、金沢を訪れた際はぜひお試しください。

開発したLINE Bot

金沢空きチャリBot*1という名前のBotです。LINEの現在地共有機能を使用し、LINE Botに現在地を送信すると、自転車を貸してくれるポートの情報の通知と道案内をしてくれるBotとなっています。

f:id:kentaro-m:20180721200425p:plain

LINE Botの友だち追加は以下のQRコードから可能です。

f:id:kentaro-m:20180721201447p:plain

掲載の経緯

LINE Botで使用していたまちのりAPIがオープンデータを活用したアプリコンテストのための期間限定公開になっていたので、本公開の予定について問い合わせしたことがきっかけでした。

問い合わせした当時は正式なオープンデータとして公開するために調整を行っているという回答でしたが、それからしばらくしてAPIが正式公開されて、LINE Botもあわせてオープンデータ活用事例に掲載される運びとなりました。

さいごに

LINE BotのコードはGitHubに公開していますので、ライセンスに従ってお使いください。

github.com

金沢市ではまちのりAPI以外にも様々なオープンデータを公開しています。また、今年もオープンデータを活用したアプリコンテストを開催するそうです。興味のある方は以下のリンクからご確認ください。

金沢市オープンデータポータル

KANAZAWA Civic Tech Contest

*1:本サービスは非公式で提供しているものです。サービス利用によって生じたいかなる損害も一切責任を負いかねます。 予めご了承ください。

JAWS-UG金沢 #33 AWS Summit Tokyo & Osaka 報告会 に参加してきました

jawsug-kanazawa.doorkeeper.jp

私自身も今年はAWS Summit Tokyo 2018に3日間参加して、様々な知見を得ることができました。他のAWS Summit参加者がどのような点に注目して、セッションを見ていたかが気になり、参加しました。

気になったトピック

あとから調べる用に気になったワードを当日ツイートにまとめました。

Cloud9

「Dev AWSome Day 2018 参加レポート - AWS Cloud9 を使ってサーバレスアプリケーションを作ってみた」を発表した@aibaxさんがお話されていた。

Cloud9はクラウドIDEクラウドだけでサーバーレスアプリケーションの構築が完了する。Lambdaのデバッグが大変なので、コードを書いて即時確認できるのは非常に便利だと感じました。

ちょうどBlack Beltにも登場していて、スライドや動画も上がっているのでチェックしたいです。

aws.amazon.com

CodeStar

AWS Summit Tokyo & Osaka 2018 行ってきた」を発表されたPharaohKJさんから出た話題。

GitHubのセッションで紹介されていたとのこと。プロジェクトテンプレートからアプリケーション及びビルドやデプロイを行うCI/CD環境をサクッと構築できる優れもの。

AWS CodeStar – アプリケーションをすばやく開発および構築して AWS にデプロイ

c4.largeとc5.largeの性能比較

「今時のEC2事情」を発表された@checkelaさんから出た話題。

c4.largeからc5.largeで性能が向上して、価格が下がったとのこと。自宅に帰ってから、調べたところ、普段利用している汎用系インスタンスもm5で性能向上と価格低下を実現していることを知りました。まったく情報がキャッチアップできてなかった。

dev.classmethod.jp

Amazon Linux 2 LTSリリース

Amazon Linux 2 には、セキュリティアップデートとバグ修正を 5 年間提供する長期サポートが付属しています。AWS は、ユーザー空間の Application Binary Interface (ABI) と Application Programming Interface (API) の互換性を 5 年間維持します。

Amazon Linux 2への移行作業を遅かれ早かれやらないといけないと思いました。

Amazon Linux 2

長期サポート (LTS) を付随した Amazon Linux 2 を公開

AWSノベルティをいただきました

AWSのコミュニティマネージャーの沼口さんからノベルティの提供がありました。AWSサービスのマグネットは以前からTwitterで見かけて気になっていたので嬉しかったです。 会社でアーキテクチャを考えるときに活用させていただきます。

飛び込みでLT

AWS Summitの参加者として、自分が興味を持ったポイントを伝えられたらと思い、飛び込みでLTさせていただきました。

内容はAWS SAMというサーバーレスアプリケーションの構築に特化したフレームワークを使って、簡単なアプリケーションを作った話。

  • AWS SAMはCloudFormationの拡張でサーバーレスアプリケーションの構築に特化している
  • サーバーレスリソースの定義を使用することで通常のCloudFormationよりも記述量が減る
  • デプロイが数回コマンドを打つだけできる
  • ローカル実行サポート

以下が当日紹介したアプリケーションのリポジトリです。

github.com

Node.jsでServerless Frameworkを利用するためのテンプレートを作った

業務でAPI GatewayとLambdaを組み合わせたサーバーレスなアプリケーションを作る機会が最近何度かあった。そのときはnode-lambdaというツールを使用してLambdaをデプロイして、API Gatewayを手動で設定するという流れで開発を進めた。

管理対象のアプリケーションの数が少ないうちはこれで問題ない。しかし、増えてくると管理が大変になってくる。

そこでAWSリソースをまとめて管理し、サーバーレスアプリケーションを容易に構築できるというServerless Frameworkというツールを試してみることにした。

Serverless Frameworkをはじめる

# Serverless CLIをグローバルインストール
$ yarn global add serverless

# テンプレートからプロジェクトを作成
$ serverless create --template hello-world

# Lambda関数をデプロイ
$ serverless deploy

3コマンドを実行するだけでus-east-1リージョンにLambda関数がデプロイされる。*1

普段よく利用するツールを含んだテンプレートを作る

Serverless CLIにはテンプレートからプロジェクトを作成する機能があり、これを活用することでサーバーレスアプリケーションの開発環境を素早く準備できる。

今回は以下のツールをあらかじめ導入した状態のテンプレートを作り、API GatewayとLambdaを組み合わせたアプリケーションの開発環境を整備する。ベースはhello-worldを使用。

  • ビルド(トランスパイル)
    • Webpack
    • Babel
  • 静的解析ツール
    • ESLint
  • ユニットテスト環境
    • MochaとChai
    • Circle CI 2.0

完成したテンプレートがこちら。

github.com

$ serverless install --url https://github.com/kentaro-m/serverless-nodejs-boilerplate --name my-project

ServerlessテンプレートをGitHubに公開しておけば、上記のように実行することでローカルに落とすことができる。

さいごに

実はこれまで個人開発ではAWS SAMというAWS公式のサーバーレスアプリケーション構築のフレームワークを利用してきた。もともとCloudFormationを使っていたこともあり、違和感を覚えることなく開発していた。

しかしながら、今回Serverless Frameworkを試してデプロイまでのあまりの簡単さに驚いてしまった。もちろん一長一短があると思うが、「早く・簡単に」を求めるなら、Serverless Frameworkを選ぶのが良いかもしれない。

AWS SAMを利用した開発事例: GitHubでのプルリクエスト運用を加速するためにプルリくんというBotを作った話 - Qiita

*1:CLIを使うためにはAWSのクレデンシャル情報を設定する必要がある

2017年を振り返る

新卒入社して2年目だった2017年を忘れないように振り返ろうと思います。

仕事

2016年夏から基盤アプリケーションの開発に関わっていたのですが、12月に全機能リリースできました。入社してから1番達成感がありました。

開発を進める上でAWSの知識が必要になり、社内のトレーニングやAWS Summitに参加して1年を通して情報をキャッチアップしてました。

これからは運用フェーズに入ってくるので、運用周りの知識をつけていきたいと思い、最近は暇があればSRE本を読んでいます。会社の方でも技術本の購入補助の仕組みがあるので、来年はたくさんの本を読みたいです。

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

作ったもの

手を動かしながら勉強するのが好きなので、今年はプライベートでいくつかツールを作って公開しました。来年もできる範囲で続けていけたらいいと思います。

話したこと

  • GitHub勉強会 in Kanazawa
    • GitHubのプルリクエストレビューのスピード向上するために取り組んだ施策について発表

9月に外部の勉強会で初めて登壇しました。10分という決められた時間の中で要点を押さえて伝えることの難しさを感じました。事前準備や発表を通して、様々な知見を得たので今後に活かしていきたいと思います。

さいごに

書いてるうちに年を越してしまったので、締まらないですがここで終わろうと思います。

2018年もよろしくお願いします。