2019-05-29に更新

バイトの開催情報を画面に表示するサンプル

サーモンランAPIを使ってバイトの開催情報を画面に表示するPHPのサンプルコードです。

指針

PHPを使い、ブラウザからサーモンランの開催情報を確認できるページを作りましょう。

APIは、「now」形式を利用します。

APIを使うときに注意しなければならないことは、APIに過剰にアクセスし負荷をかけてしまうことです。APIに負荷がかかると、表示が遅くなるなど、運営者や他の利用者の方に迷惑をかけてしまいます。悪質であると判断された場合、BANの対象にもなり得ます。

API利用の常識として、今回はデータをキャッシュする仕組みも実装します。

コード①

まずは、APIから画面に表示するだけのコードを作ります。

<?php

$json = @file_get_contents('https://splamp.info/salmon/api/now');
$array = json_decode($json, TRUE);

if($array[0]['start'] <= time()){

    $head = sprintf('【第%d回サーモンラン 開催中!】', $array[0]['num']);

}else{

    $head = '【次回のサーモンランをお待ちください】';

}

$content = '
<br><br>
日時:%s ~ %s<br>
場所:%s<br>
<br>
[支給ブキ]<br>
・%s<br>
・%s<br>
・%s<br>
・%s<br>
';

$content = sprintf(
    $content,
    date('n/d G:i', $array[0]['start']),
    date('n/d G:i', $array[0]['end']),
    $array[0]['stage_ja'],
    $array[0]['w1_ja'],
    $array[0]['w2_ja'],
    $array[0]['w3_ja'],
    $array[0]['w4_ja']
);

echo $head . $content;

レスポンスの例

【第372回サーモンラン 開催中!】

日時:5/28 9:00 ~ 5/29 21:00
場所:トキシラズいぶし工房

[支給ブキ]
・ボールドマーカー
・クーゲルシュライバー
・スクリュースロッシャー
・リッター4K

つまづきポイントのヒント

  • URLに拡張子が無いのは、.htaccessという設定ファイルを使ってURLを書き換えているためです。
  • @はエラー制御演算子です。
  • json_decode()はデフォルトで返り値がオブジェクトになりますが、第2引数をTRUEにすると返り値が連想配列になります。
  • 長文を文字列に収めたいときは、無理にエスケープを使わず、ヒアドキュメント構文の利用も検討してください。
  • 「\n」を改行文字として扱いたい場合は、ダブルクオーテーションの中で記述する必要があります。

解説

コード①では、最新のシフトの開始時刻が現在時刻より前か後かによって、サーモンランが開催中かそうでないかを判定しています。

次は、実行するとその結果が静的なHTMLファイルとして出力されるようにしてみましょう。

コード②(完成)

<?php

$raw_json = @file_get_contents('https://splamp.info/salmon/api/now');
$array = json_decode($raw_json, TRUE);

if($array[0]['start'] <= time()){

    $head = sprintf('【第%d回サーモンラン 開催中!】', $array[0]['num']);

}else{

    $head = '【次回のサーモンランをお待ちください】';

}

$content = '
<br><br>
日時:%s ~ %s<br>
場所:%s<br>
<br>
[支給ブキ]<br>
・%s<br>
・%s<br>
・%s<br>
・%s<br>
';

$content = sprintf(
    $content,
    date('n/d G:i', $array[0]['start']),
    date('n/d G:i', $array[0]['end']),
    $array[0]['stage_ja'],
    $array[0]['w1_ja'],
    $array[0]['w2_ja'],
    $array[0]['w3_ja'],
    $array[0]['w4_ja']
);

file_put_contents('cache.html', $head . $content);

解説

最後の1行を変えただけです。cache.htmlという名前のファイルに、先ほどの結果を保存しました。cache.htmlは、PHPを実行するたびに更新されます。

自動でPHPを実行するには、多くのレンタルサーバーで利用できるcronという機能が便利です。

例えば、毎時実行するcronは以下のような書式になります。

0 * * * * php /cron/put_text.php

cronを書く際は、最後に空行を入れないといけないことに注意してください。

応用

ステージ・ブキ画像の表示、Twitter bot、スマートスピーカーにシフトを訊けるプログラムなども頑張れば作れます。素敵なAPIライフを!

ツイッターでシェア
みんなに共有、忘れないようにメモ

view_list サーモンランAPIサンプル集
第1回 バイトの開催情報を画面に表示するサンプル
第2回 botでシフト情報を返信するサンプル

ウラル

Splatoonの二次創作サイト「スプランプ」の管理人です。サーモンラン研究所やオクトチャット、フェス速報などを作りました。

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント