PHPプログラミングにチャレンジ-Chatworkログ取得プログラム

こんにちは。年長児を持つ他のママにお話を聞くと、「謝恩会の寸劇の練習で週3で集まっている」とか「悪しき前例をここで断ち切るために、謝恩会を私たちの代でなしにした」とか、卒園行事のことで持ちきりです。

実は、うちの子は保育園が新規開園するタイミングで年少で入園。その当時から、上の学年が存在せず「園で初めての卒園児」となります。また同級生が他に1人しかおらず、保護者2人だけでは謝恩会はとてもできない状態。そんな訳で、卒園行事の準備もほとんどなく、のほほんと過ごしております。
いやー、謝恩会やるところは本当に大変そうですね。

 

目次

1. いよいよ私もプログラミングの腕を試す時がきた

そんな話はさておき、業務で使っているChatowork(チャットワーク)のログを取るという、仕事を担当することになりました。実は、私、SEをやっていましたけれども、大人の(?)プログラミング自体はそんなにできないのです。
 
Scratch、Viscuitで培われた力は、本格的なプログラミングをする上で役に立つ立つのか?を実際に試す良いチャンス!と思い、今回はPHPのプログラミングにチャレンジしてみました。
 

2. できたプログラムはこちら

チャットワークのログ取得プログラムを探している人もいるかもしれないので、コードを貼っておきます。

<?php

//取得したAPIトークンを入れる
$apiKey = "{Chatworkから取得したAPIトークンをいれる}";

// ヘッダ
header("Content-type: text/html; charset=utf-8");

// cURLでPOST
$ch = curl_init();

// cURLのオプション設定 {roomId}の箇所には取得したルームIDを入れる
curl_setopt($ch, CURLOPT_URL, "https://api.chatwork.com/v2/rooms/{roomId}/messages?force=0");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-ChatWorkToken: '. $apiKey));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 結果を文字列で返す
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // サーバー証明書の検証を行わない

$rsp = curl_exec($ch);
curl_close($ch);

if (!empty($rsp)) {
// 結果をコンソールに出力
$res = json_decode($rsp);
$res2 = json_encode($res, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
var_export($res2);

// 結果をファイルに出力
ob_start();
var_export($res2."\n");
$data = ob_get_clean();
$fp = fopen("chat_log.json", "a");
fwrite($fp, $data);
fclose($fp);
}

 
このプログラムを作るにあたっては、cURL、jsonに関する知識がちょっとだけ必要ですが、なんとか完成させることができました!
 

2. 子ども向けプログラミングの知識は役にたったか?

結論からいうと、非常に役に立ちました。どの部分がどのように役に立ったかを解説したいと思います。
 

2-1. 「パクる」「マネする」が役にたった

Scratchでは、世界中のいろいろな方のコードが公開されていてそれをマネするのが当たり前です。
もちろん、今回もゼロからいきなり作るのではなく、参考になりそうなコードを切り貼りして作成しました。
 
ちなみに、すでに発明されているものをもう一度自分で発明し直すことを「車輪の再発明」といいます。プログラミングはどんどんパクって良い世界です。車輪の再発明にならないよう気をつけたいですね。

 

2-2. プログラミングでできることをイメージするのが役にたった

Scratchを触っていたので、「ここはループを使ってこうしたい」「ここは改行を連結させたい」など、プログラミングでできることのイメージがあったので、あとはPHPで調べるだけでできました。
 
こうすれば、こうできる。
こういう時は、こうする。
 
こういうことがイメージできていると、言語を問わず応用が効くのでScratchの経験は非常に役に立ったと言えるでしょう。
 

2-3. そうはいっても現場で経験がないと辛い

Scratchでイメージができたと言っても、やはり知らないことを調べるのは時間もかかりましたし、大変なこともあります。これが会社員だったら、近くの先輩などに聞けてすぐに解決するでしょう。
 
また、より綺麗なコードの書き方も教えてもらえるかもしれません。
今回のコードは、おそらくプログラマーとしては結構ダメダメな感じだと思います。
すごいプログラマーになるためには、知識のある方の元でダメ出しをもらいながら経験を積まないとダメだなぁーとも感じました。
 
ちなみに、経験のある方に教えてもらいながら技術を身に付けることを「巨人の肩に乗る」といいます。先ほどの車輪の再発明の対義語です。

もし、お子さんがプログラマーになりたいという時は、「巨人の肩に乗る」環境を探すように、ぜひおすすめしてくださいね。
 

3. まとめ

Scratchは本格的なプログラミングをする上で、役に立ちます。本格的なプログラミングに興味をもつきっかけにもなると思います。
ですが、きちんとしたプログラマーになるためには一人で経験を積むだけでは厳しいと思います。「巨人の肩に乗る」を実践することが重要だと感じました。

 

この記事を書いた人

目次