最近何かとコードを書く機会が多いゆひゃです。
2年前のこの時期に自称大作記事の祝日を取得できるAPIを作る記事を公開しました。
当時はいいAPIを作れたと思っていたのですが、肝心の祝日のデータは自分で用意するというなんとも使い勝手の悪いものでした。その上ルーティング処理もしておらず単純にサブディレクトリにアクセスするというとんでも仕様でした。
今回またAPIで祝日を取得する必要が出てきたので、今度こそ完成形のAPIを自作しました。
目次
祝日APIの仕様
今回は前回の反省からGoogle Calendar APIから祝日データを引っ張ってきて出力する簡単設計になってます。
コードはGitHubにて公開しています。
Googleカレンダーの「japanese__ja@holiday.calendar.google.com」のアカウントに祝日情報が公開されているようですので、CalendarAPIから情報を取得しています。
一度取得した年の祝日情報はfetch/archives/ディレクトリに保存して、複数回APIを叩かないようにしています。
Googleには去年分今年分来年分のデータしかなかったため、2015-2021の分は結局手入力しました。2014年以前のデータは取得できない状態になっています。
使い方
今回はディレクトリ構造でルーティングするのではなく、GETリクエストで取得する方式にしました。
まずはGitHubからリポジトリをダウンロードして、サーバーにアップロードします。
fetchディレクトリにprivate.phpという名前のファイルを作り、
<?php
function get_application_key ()
{
return '{GOOGLE_APPLICATION_KEY}';
}
と入力します。GOOGLE_APPLICATION_KEYはGoogle Calendar APIのシークレットキーを入れてください。
これでページにアクセスすると祝日データのJsonを取得できるようになります。
例えば2022年2月のデータを取得するには、「https://example.com/holiday_api/?year=2022&month=02」にアクセスするだけです。monthは一桁の場合0が必要なので注意してください。
実際に動かしてみるとこんな感じです
https://api.zaty.jp/holiday_api/?year=2022&month=02
まとめ
今回の祝日APIは前回のAPIの反省する目的で作りました。実際前回のAPIは2023年以降の祝日をまた追記しなければいけいない状態になっており、2022年も残り5ヶ月となった今、使い勝手に欠けるものでした。
今後Webカレンダー系のアプリを作るときには自作の祝日APIを使おうかなって思っています。
祝日APIなぞ世の中にたくさん転がっているでしょうから、わざわざ作る意味あるのか?とも思いますが、自分の手で作るとやはり理解が深まります。
時間に余裕があるときにこのような自作ライブラリを増やしていきたいです。