paiza開発日誌paiza開発日誌IT/Webエンジニア向け総合求人・学習サービス「paiza」の開発者が、プログラミングやITエンジニアの転職などについて書いています。ITエンジニア向け総合求人・学習サービス「paiza」の開発者が、プログラミングやITエンジニアの転職などについて書いています。ITエンジニアを目指す女子高生たちの学園ライフ4コマ漫画『ぱいじょ!』こんにちは。ブログ初登場のヤマダです(実はオフィス移転パーティーの記事には登場してます)。普段はpaiza運営事務局で、採用企業のサポートをしています。paizaではプログラミングができることが正義なので、できない人はチョコレートをもらえません!チョコがほしいなら最低でもスキルチェックでBランクは取ってほしいですね!(嘘です)......とか言っている自分はというと、今のところまだDランクしか取れていません。「いつかはBランクを......」と思いながらかれこれ3年近くたちました。後輩も増えてきてさすがにこれではいけないなと思うようになり最近勉強を始めています。Script)を使ったTwitterのbot作りに挑戦してみました。だしバレンタインぽいものが作りたいなと思ったので、チョコを配る霧島京子ちゃんbotを作ってみました。霧島京子ちゃんというのはpaizaで連載中のエンジニアを目指す女子高生の日常(?)を描いた4コマ漫画『ぱいじょ!』の主人公で、学習講座にも登場している女の子のことです。この記事では、プログラミングほぼ初心者の私がどうやって勉強してbotを作ったかを紹介します。JavaScriptを使って何か作ってみたいと思っていた人、Twitterのbot作りに興味がある人の参考になればうれしいです。APIを利用するための設定をしようGASプロジェクトにbotの処理を実装チョコを配るbot部分のコードを書こうGAS実行のためのトリガーを設定しよう霧島ちゃんバレンタインbot完成!今後の課題まとめbotを作るまで:JavaScriptを勉強したよさきほどは「後輩たちにいいところを見せるため」とか書きましたが、実際には「エンジニアではないけど、スプレッドシートとか使うし、GASを使って業務を効率化できるといいなぁ」と思っていました。弊社エンジニアはみんな優しいのでお願いしたら(忙しい合間をぬって)やってくれますが、せっかくプログラミング学習コンテンツを提供している会社なのだから、できることなら自分でなんとかしたいなと。いうわけでpaizaラーニングの「JavaScript入門編」をまず受講してみました。中の人(上間江望さん)も大好きです!JavaScriptの基本的な書き方、条件文・if文、配列の基礎まではこの講座で学べます。あとは「レベルアップ問題集」という名前で公開されている、スキルチェックの練習問題もやりました。これは時間制限がないのと、テストケースや解答例も見れるので勉強にピッタリなんですよ。ちなみにJavaScriptは標準入力の処理がちょっと難しいので、こちらの動画講座も参考にしてくださいね。(「JavaScript」で検索してみてね)また、弊社ではエンジニアがプログラミング未経験者向けに勉強会(通称「修行」)を開催してくれていて、分からない問題の解き方を教えてもらったり、こういうSQL書いて分析したいんだけど...と相談したりできます!いいでしょー!というわけで、JavaScriptの基礎を学んで、GASに挑戦してみました。以下の記事を書いた編集担当のおじさんも「bot作りは楽しい、超楽しい」って言ってましたし、最終的なゴールである仕事のツールを作る勉強にもなりそうなので頑張ってやってみます!paiza.hatenablog.comGASを使ってチョコを配るbotを作るまずは何をしたいかを挙げてみました。「チョコほしい」とリプライされたら自動でリプライしたいツイート内容はランダムにしたいそれを実現するためにどうすればいいか、エンジニアにも聞きつつ考えてみました。TwitterのAPIを使う必要がありそうGASで処理させると良さそうツイートしたい文言をスプレッドシートに入れておき、そこから取ってくればよさそうなんとなくやることは分かりました。※なお、これ以降にはバレンタインbotのネタバレが含まれるので「先に遊んでみたい!」という方はpaiza公式Twitterアカウント宛に「チョコほしい」という文字を含んだリプライをしてみてください。23:59をもって終了しました。遊んでくださった皆さまありがとうございました。事前準備TwitterのAPI利用申請をしよう振り返ると、このAPI利用申請を通すのがめちゃくちゃ大変でした。英語で申請して、詳細をもっと送れと英語でメールが来たら英語で返信しないといけないので......。プログラミングをがんばるはずだったのに英語で挫折を味わいました。ここは先人たちの知恵をお借りしましょう......。以下の情報を参考にしました。Qiita2回リジェクトされるとそのアカウントで再申請はできなくなるみたいなので気をつけてください。自分のアカウントで申請してみたのですが、1回リジェクトされました......。怖かった......。スプレッドシートに自動リプライしたい内容を書こう今回はチョコを配るbotということで、こんな感じでリプライ内容を用意しました。IDを覚えておくためにA列を使います。初期値としてA列にはひとまず”1”と入れておきます。(リプライもらったらここが更新されます。)B列にツイート内容とハッシュタグ、C列に画像URLを記載します。APIを利用するための設定をしようAPI申請が承認されたあとにTwitterのDeveloper画面のAppsメニューから今回のbotの情報を登録します。keysの情報をGASで使います。使う方はGASを追加する必要があります。Scriptを検索して追加してください。追加するとメニューに表示されるようになりますのでプロジェクトを新規作成してください。TwitterのAPIをGASで扱うにはライブラリをインポートする必要があります。これはすでに先人が作成してくださっているものを利用させてもらいましょう。ライブラリで表示されたダイアログにMb2Vpd5nfD3Pz-_a-39Q4VfxhMjh3Sh48を入力してライブラリを追加します。つづいてTwitterの基本機能(ツイートするとかタイムライン取得するとか)を使うためのコードを書きます。「Twitter.gs」として保存しておきましょう。このあたりは以下の記事を参考にしました。【GAS】Twitterのbotを作ってみました。Programming.TechOAth認証が成功したら準備OKです。チョコを配るbot部分のコードを書こうようやく本題にたどり着きました。大きく分けると以下の2つの動作を実装する必要があります。「チョコほしい」とリプライされたら自動リプライするツイートしたい文言をランダムでスプレッドシートから取るさきほど作成した「Twitter.gs」とは別に「BotCode.gs」というファイルを作成し書いていきたいと思います。リプライ処理をする関数をmyFunctionで呼び出す部分を頭に書いておきます。のちほど説明しますが、このmyFunctionがトリガーで呼び出す関数となります。reply();}reply関数の中身を書いていきます。なにはともあれスプレッドシートの情報を取得しましょう。最初のシートを取得スプレッドシートの情報の取り方は他にもありますが、今回はID指定をして最初のシートを取る方法にしました。IDというのはスプレッドシートのURLの***のところをいいます。https://docs.google.com/spreadsheets/d/**********/edit次に「チョコほしい」という単語を含んだリプライをもらったらリプライするという部分を書きます。IDをスプレッドシートのA1に格納してあるので、それを取得してリプライをする必要があります。retobj.last_id;「チョコほしい」という単語を含んでいたら、chocolate関数で取得した内容をくっつけてリプライを送ります。}ここが一番肝心な処理ですが、スプレッドシートからランダムで内容を取得してresultという変数に入れてreply関数に返します。選択肢は自由に増減させられるように最終行の番号を取得して、何行目を取るかrandom関数で決めています。今回はB列のツイート内容をtweet1、画像URLをtweet2に入れて最後にまとめてresultに入れました。}}リプライをもらったIDを記憶する処理をはじめ、こちらの記事を大変参考にさせていただきました。ありがとうございます。http://masayasviel.hatenablog.jp/entry/2017/12/03/141311ちなみに、今回わたしが書いたbot側の全コードはこちらからGAS実行のためのトリガーを設定しよう処理は書けましたがこのままではGASを実行するためのトリガー(きっかけ)がないためリプライされても何も起こりません。現在のプロジェクトのトリガーを選択し、「トリガーを追加」しましょう。実行する関数はmyFunction、1分間隔で実行させます。本当はリプライが来たら~というような条件にしたいのですが、GASにはそういった機能はないので(そういう処理を書いたらできるのかもしれませんが...)最大1分くらいなら遅延してもまあいいだろうということでこうしました。霧島ちゃんバレンタインbot完成!エンジニアの方からしたらかなり拙いbotだとは思いますが...なんとか一人で(先人たちの知恵もふんだんにお借りしながら)作ることができました。皆さんもぜひ遊んでみてくださいね。本当は画像のURLではなくて、ツイートに画像添付をして自動リプライをさせたかったのですが、Dランクのスキルではなかなかうまくいかず、気がつけば今日になってしまいました......。今回はバレンタインデーに間に合わないと意味がなかったのでこのような形になりましたが、もう少し時間があれば実現できそうだったので引き続きGASを勉強しつつ実装してみたいと思います!paizaは学習講座はもちろんですが、ゲーム感覚で遊びながらプログラミングが学べるコンテンツもあるので、楽しく勉強を続けることができます。ちなみに以下の画像は実際に作ったpaiza仕様のチロルチョコです。まとめというわけでプログラミングほぼ未経験者の人間がバレンタインにチョコを配るbotを作ってみました。botを1つ作るのでも結構手間取りましたし、大変な部分もありましたが、調べながら作ってみるのは楽しくもありました。ちなみにスキルチェックのBランク...はまだ難しいですが、Cランクに挑戦して無事ランクアップしました。こんなわたしでもできたので皆さんもぜひチャレンジしてみてください!そして「プログラミングを勉強し始めたものの、作ってみたいものとか思いつかないな...」という人はとりあえず簡単なbotくらいから始めてみるといいかもしれません。成果が目に見えると楽しいので。paizaラーニングはJavaScriptだけでなく、PythonやRuby、C#など主要言語の入門講座や、DjangoやFlaskなどWebアプリケーション開発の講座も公開しています。詳しくはこちら「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。13:00Tweet関連記事2019-04-08プログラミング未経験からWebアプリ開発できるようになるまでにやったこと有吉です。paiza(ギノ)の営業です。Bot)の作り方(Ruby編)。Scriptの外部JSONデータ連携術!すべて無料で作る「お...どうも、まさとらん(@0310lan)です。Ap...2016-03-01指定URLのPC・タブレット・スマホの「キャプチャ画像」を自動表示するデモアプリを作ってみた!どうも、まさとらん(@0310lan)です。記事内に記載している情報は、記事公開時点でのものとなります。reserved.引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。