BLOG

LINEボットとPHPでおみくじアプリを作ろう!【HEROKU・XAMPP・git・composer】

2022-03-04

このブログはロックシステムのYoutubeチャンネル「ロックシステムアカデミーCH」の文字起こしや使用したコードの解説等をしています。
是非動画本編もご覧ください!
よろしければチャンネル登録も宜しくお願い致します!




どうもロックシステムアカデミーのろっくんです!
前回はHEROKUを使ったLINEチャットボット作りにチャレンジしたね。


てむだよ!
HEROKUみたいなサービスを使うと、自分のサーバーとLINEボットの間でやりとりできるようにして、LINEに打ち込んだ内容をオウム返しする機能をつくったんだよね。
今回はさらにパワーアップしてボットを使った、おみくじアプリを作るんだよね。




そうだね。前回の動画でLINEボットの仕組みは分かったね。
この図のように普通なら、LINEの公式プラットフォーム上でデータのやり取りをするだけなんだけど、自分のサーバーやプログラミングを使うと複雑な機能ができるんだよね。
今回はそれを利用してPHPでおみくじ機能のプログラミングを書いてさらにパワーアップしちゃうよ。


以前の動画で紹介した、
visual studio code
XAMPP
HEROKU
LINE Developersアカウント作成
が必要だからまずは以下の動画を参考に環境を準備してからスタートしてね!
(リンクはそれぞれのインストール先に飛びます。)


インストール方法や手順等詳しくはこちらの動画で解説しています!
PHPを勉強する時、最初に見る動画【PHP/XAMPP/環境構築方法】
HEROKUを使ったLINEチャットボットの作り方!

今回開発ではコマンドプロンプトを多く使用しているよ!
アプリ開発ではコマンドプロンプトからの操作しかできない場合が多いから今の内に慣れておこう。
コマンドプロンプトはWindowsの検索で出てくるよ!



今回の動画はこちら!

開発していくといろいろインストールが必要なものが出てくるから頑張って環境設定を進めてね。

【使用したソースコード】
<?php

define('ACCESSTOKEN', '自分のアクセストークンを貼る場所');

$json_string = file_get_contents('php://input');
$json_object = json_decode($json_string);
$reply_token = $json_object->{"events"}[0]->{"replyToken"};
$message_type = $json_object->{"events"}[0]->{"message"}->{"type"};
$message_text = $json_object->{"events"}[0]->{"message"}->{"text"};
$user_id = $json_object->{"events"}[0]->{"source"}->{"userId"};

if ($message_type != "text") exit;

if ($message_text === "おみくじ") {
    $rand = rand(0,4);
    switch ($rand) {
        case 0:
            $result = '大吉';
            break;
        case 1:
            $result = '中吉';
            break;
        case 2:
            $result = '小吉';
            break;
        case 3:
            $result = '吉';
            break;
        case 4:
            $result = '凶';
            break;
    }
    $return_message = $result . 'です';
} else {
    $return_message = 'おみくじできません・・・';
}

$response_format_text = [
    'type' => $message_type,
    'text' => $return_message
];

$post_data = [
    'replyToken' => $reply_token,
    'messages' => [
        $response_format_text
    ]
];

$ch = curl_init('https://api.line.me/v2/bot/message/reply');
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, json_encode($post_data));
curl_setopt($ch,CURLOPT_HTTPHEADER, array('Content-type: application/json; charset=utf-8','Authorization:  Bearer ' . ACCESSTOKEN));
curl_exec($ch);
curl_close($ch);

PHPのライブラリ管理ツール「Composer」



今回のおみくじアプリ開発では新たにライブラリ管理ツール「Composer」を準備しよう!


composer?そもそもライブラリってなんだっけ?


ライブラリは便利なプログラムの部品をいっぱい集めてひとまとめにしたファイルのことだね。
composerはPHPのアプリ開発でライブラリやフレームワークを利用して開発するときに必ずといっていいほど利用されるツールの1つだよ!
特定のコマンドを実行するだけで必要なライブラリを自動でインストールしてくれて、そのライブラリが別のライブラリに依存している場合はその依存関係も解決してくれるんだ。


こんな図のように機能の部品を管理してくれるんだね。




そうだね。ライブラリは画像投稿機能を作りたい場合、ユーザー登録機能を作りたい場合のように、
状況によって開発を助けてくれる部品のかたまりがあるんだ、こういう部品を「Composer」が管理してくれるんだ。


開発していたら良くあることなんだけどAというライブラリを利用して開発するときにその利用するライブラリ自体が別のBというライブラリに依存する場合があるんだよ。


じゃあ、Bをインストールしたら良いんじゃないかな?


そのBというライブラリが使いたい場合Cというライブラリが必要だったら、めんどくさいよね。 そういう問題も解決してくれる便利なものだから今回の開発でもインストールしておこうか。


はーい!composerって凄いんだね


じゃあ、動画を見ながらcomposerの公式サイトでインストールしてくるよ。

【composer】ダウンロードサイトはこちら

gitとは?必要なのでインストールしよう


今回の開発ではgitをインストールする必要があるよ。
gitというのはファイルの変更履歴を管理してくれるシステムだよ。
プログラミングをしていると日々ファイルの内容が変わっていくのが分かるかな?


えっと・・こんな感じで時間が経過すると作業も進むから、同じファイルでも日付ごとにコードの内容が違うってことだよね?




この変わっていく履歴を管理して、必要に応じて前のものに戻したり、あるいは途中で枝分かれして別の変更を加えたりするためのシステムがgitのようなバージョン管理システムというんだ。


じゃあ、このgitを使うとプログラミングコードを好きなタイミングでセーブできるようになるってことか!


ざっくりした認識はそれで良いよ。
gitのメリットは、gitでファイルを管理すると、コードを前の状態に戻すことができたり共同作業用のGitHubを使って複数人で同じファイルを使用して開発できたりするんだよ。
1人作業ならgit、共同作業ならGitHubって使い分けるといいね。




gitはエンジニアにとって必須のツールだからインストールしてこようか!

【git】ダウンロードサイトはこちら


設定に詰まったらこの記事を参考にやってみよう!

WindowsにGitをインストールする方法

動画内で使用したリンク、コマンド、コードはこちら

■おみくじ機能に必要なリンク
【composer】
【Heroku: クラウド・アプリケーション・プラットフォーム】
【HerokuCLI】
【git】
【使用したコマンド】
heroku login
git add .
git commit -am "make it better"
git push heroku master

【使用したソースコード】
<?php

define('ACCESSTOKEN', '自分のアクセストークンを貼る場所');

$json_string = file_get_contents('php://input');
$json_object = json_decode($json_string);
$reply_token = $json_object->{"events"}[0]->{"replyToken"};
$message_type = $json_object->{"events"}[0]->{"message"}->{"type"};
$message_text = $json_object->{"events"}[0]->{"message"}->{"text"};
$user_id = $json_object->{"events"}[0]->{"source"}->{"userId"};

if ($message_type != "text") exit;

if ($message_text === "おみくじ") {
    $rand = rand(0,4);
    switch ($rand) {
        case 0:
            $result = '大吉';
            break;
        case 1:
            $result = '中吉';
            break;
        case 2:
            $result = '小吉';
            break;
        case 3:
            $result = '吉';
            break;
        case 4:
            $result = '凶';
            break;
    }
    $return_message = $result . 'です';
} else {
    $return_message = 'おみくじできません・・・';
}

$response_format_text = [
    'type' => $message_type,
    'text' => $return_message
];

$post_data = [
    'replyToken' => $reply_token,
    'messages' => [
        $response_format_text
    ]
];

$ch = curl_init('https://api.line.me/v2/bot/message/reply');
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, json_encode($post_data));
curl_setopt($ch,CURLOPT_HTTPHEADER, array('Content-type: application/json; charset=utf-8','Authorization:  Bearer ' . ACCESSTOKEN));
curl_exec($ch);
curl_close($ch);

チャンネル登録よろしくお願いします!
ロックシステムアカデミー!ゆっくりプログラミング学習
大阪福島にあるプログラミングスクール「ロックシステムアカデミー」です!「プログラミング作って実践」をテーマに楽しく分かりやすいアプリ開発のレクチャー動画をアップしていきます! チャンネル登録よろしくお願いします! プログラミングスクール ▼「ロックシステムアカデミー」WEBサイト https://rocksystem.co.jp/academy/
https://www.youtube.com/channel/UC6JxNQ2QTX8Dl96V2MMNP8A

株式会社ロックシステム

「ブラック企業をやっつけろ!!」を企業理念にエンジニアが働きやすい環境をつきつめる大阪のシステム開発会社。2014年会社設立以来、残業時間ほぼゼロを達成し、高い従業員還元率でエンジニアファーストな会社としてIT業界に蔓延るブラックなイメージをホワイトに変えられる起爆剤となるべく日々活動中!絶賛エンジニア募集中。