(著者:サイボウズ 竹内 能彦)
代替ライブラリのひとつ Luxon については、kintone カスタマイズでの導入方法の紹介記事があります。
はじめに
cybozu developer network でも GitHub の活用シーンが増えてきました。
リポジトリを公開すると気になるのは訪問数です。GitHub ではリポジトリの訪問数を取得できますが、直近2週間しか取得できません。
そこで kintone と AWS Lambda を使って、GitHub リポジトリの訪問数を kintone に定期的に記録するサンプルを作りました。
定期的に実行するために AWS Lambda を利用します。
また、Lambda 関数の作成に Node.js 環境が必要ですのでご注意ください。
大きな処理の流れは以下の通りです。
では早速準備に取り掛かりましょう。
1. kintone 設定
kintone アプリの作成
フィールド名 |
フィールドタイプ | フィールドコード | 備考 |
プロジェクト | 文字列(1行) | project | |
年月日 | 日付 | date | |
訪問数 | 数値 | count | |
ユニーク訪問数 | 数値 | uniques |
APIトークンの発行
「アプリの設定 > APIトークン」で、レコード閲覧、レコード追加が可能なAPIトークンを発行します。
kintone に追加するデータが重複しないようにレコード閲覧権限も必要です。
2. GitHub 設定
GitHub アカウントの作成
下記URLから、GitHub アカウントを作成します。GitHub アカウントを取得済みの方はログインしてください。
https://github.com/
Personal access tokenの作成
AWS Lambda から GitHub API を利用するために必要な作業になります。
下記URLにアクセスして新しい Personal access token を作成します。
https://github.com/settings/tokens
Token description には適当な値を、Select scopes には public_repo を設定します。
Token となるキーは作成時にしか確認できませんので忘れずにメモしてください。
3. Lambda 関数の実行ファイル作成
Node.js をインストールした環境での作業になります。
以下のサンプルコードをファイル名「index.js」で保存します。
9~11行目に kintone のドメイン、アプリID、API トークンを設定します。
14~16行目に訪問数を取得したいリポジトリのオーナー名、リポジトリ名、先ほど作成した Personal access token を設定します。
(訪問数を取得するにはそのリポジトリの管理者権限が必要になります)
https://github.com/kintone/kintoneUtility の場合、オーナー名は「kintone」、リポジトリ名は「kintoneUtility」になります。
以下のコマンドを実行して、モジュールのインストール、ZIPファイル(Lambda 関数の実行ファイル)を作成します。
ZIPコマンドでエラーが発生した場合は、階層にファイル「index.js」とディレクトリ「node_modules」が存在するか確認してください。
4. AWS 設定
AWS アカウントの作成
下記URLを参考に AWS アカウントと管理者ユーザーを作成します。AWS アカウントを取得済みの方はログインしてください。
http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/setting-up.html
実行ロールの作成
下記URLを参考に Lambda を実行するロールを作成します。
http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-s3-example-create-iam-role.html
今回はロール名は「AWSLambdaExecute(例)」で作成しました。
Lambda の設定
新規関数を作成します。
設計図はブランク関数を選択します。
トリガーには CloudWatch を設定します。
「ルール名」、「ルールの説明」適当な値を、「スケジュール式」には「rate(1 day)」を設定します。
「名前」は適当な値を設定します。
「ランタイム」はNode.js 6.10を選択します。
「関数パッケージ」には先ほど作成したGitHub-to-kintone.zip(Lambda 関数の実行ファイル)をアップロードします。
「ハンドラ」はindex.handlerを、「ロール」は先ほど作成したロールを設定します。
詳細設定の「タイムアウト」には少し余裕をみて20秒を設定します。
実行
実行すると kintone にデータが登録されました。
また、AWS Lambda の機能で毎日データが登録されるので過去の訪問数も確認できますね。
終わりに
GitHub 非常に楽しいですね。
訪問数の増加が確認できればコード更新のモチベーションにも繋がりそうです。減少したら・・・Orz
記事に関するフィードバック
記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。