pepperから学べたこと

#はじめに

この記事は今まであまりやられていなかったことや、新しいことを実装したというような技術的な記事ではなく、自分が経験してきたなかで感じたことをまとめてみました。
あまり需要はないかもしれませんが、もしかしたら同じ境遇の方やこれから勉強しようとしている方がいると思い記事として1つはあってもいいかなと思っています。
結論を少しだけお話してしまうと、プログラミングについて右も左もわからずどうしたらいいかわからない方はpepperを通して学ぶことをおすすめします。
基本的なプログラミングの仕組みだけではなく、次のステップへ踏み出すための土台を構築してくれるので、ある程度学んだ後に自分の学びたい道がわかったときに大きな助けとなってくれます。

#pepperとの出会い

pepperの存在自体はテレビや店頭で見る程度の認知でいましたが、choregrapheを使ってpepperをプログラミングするという観点からすると、pepperと出会って約1年になるかと思います。その当時は、プログラミングの基礎もほとんど無く、レポート作成ツールであるTexや、大学の授業程度のC++(学科的に数値計算としてのプログラムがメイン)の知識と活用経験しかありませんでした。
そんな中で出会ったのがpepperでした。アトリエ秋葉原で無料で開講されているワークショップを受講する中で、最初はchoregrapheを通してpepperを操作していたのですが、正直なところ、線を結ぶだけで動くし全然難しくないじゃんというのが第一印象でした。それもそのはずで、choregrapheは誰でも開発できるようなとっかかりやすい開発環境なので。
しかし、ワークショップの内容を上級まで理解できるようになった頃には、chroegrapheがいかに工夫が凝らされていて初学者に優しい環境であったかを痛感しました。Boxの性質であったり、Box同士を繋げる線の色、特にALMemoryの存在と活用方法など、まだ知らない点も数多くありますがpepperの奥深さを実感することができました。
自分はchoregrapheを通じて、プログラムを組む際の論理性(具体的にはつなぐ順番による処理の仕方)、値の参照や受け渡し(引数の型と引数の概念)を学ぶことができました。初学者にとってまずはじめにつまずくであろうと考えられる論理性や値のやり取りがBoxによって可視化されているので何が行われているのかが理解しやすかったと感じました。

#まずはPython

choregrapheの中にあるBoxはPythonと呼ばれる言語で構成されています。Boxを線でつなぐだけで実行できていましたが、裏ではPythonコードが実行されています。Boxのど真ん中をダブルクリックしたときに出てくるアルファベットの羅列されているあれです。

<img width="764" alt="スクリーンショット 2018-12-25 23.22.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/324500/dd319a05-d17f-71ea-8d04-5c1b60e4c605.png">


Pythonは他の言語では複数行かかるであろうコードが1,2行でかけるというあっさりさと、書き方が人によって変化しにくいという特徴を持っています。このことから、Pythonはプログラミング初学者に向いている言語であると言われています。
ここ数年では人工知能やAIといった分野が人気を博しており、この分野が学びたいからプログラミングを学びたいという人も多いのではないかと思います。また、人工知能やAIの基本コードを構成しているのもPythonです。
つまり、初学者が最初に学ぶ言語としてぴったりなのがPythonであり、それをpepperを使う中で学習することがもっとも効果的であると感じています。
このように考えている根拠は複数あります。

###①プログラムを読む力が養えること
初学者にとってプログラムのアルファベットの羅列は驚異であると思います。(恥ずかしながら自分自身がそうでした。)1行1行どんな意味があるかを考えながら読み進めることで、プログラムへの驚異がなくなるのと同時にコードの意味が理解できます。
プログラミングの教科書を購入して1ページ1ページ読み進めて勉強するのもいいですが、これでは途中で挫折してしまう可能性も大きく効率も良くないです。
そこで最適なのが、choregrapheのBoxの活用です。最初にchoregrapheで論理性と値のやり取りについて学んでおくことでPythonの学習への移行もスムーズに行なえます。Boxのコードを読みながらすぐにその場で実行してpepperを動かして見ることで効率よく理解できると考えています。特に、ForやIfなどの基本的な使い方もBox内の実例を見ながら学習することで効率よく理解できるはずです。
このとき注意すべき点としては、わからないところは一人で抱えるのではなく、誰かに聞きながら解決することです。他力本願のように聞こえますがここが割と重要で、時には深く悩むことも必要ですが、初学レベルのことは広く知られている可能性が高いので誰か分かる人に聞きながら学習することが大切です。自分の場合は周りにわかる人が少なかったので、アトリエのスタッフにたくさん質問しながら解決してきました。

###②関数、引数の使い方が知れる
初学者はいきなりまっさらな状態からコーディングをしてみろと言われても手も足も出ないことだと思います。①の次のステップとしては、いろんな種類の関数や引数のとり方を読みながら知ることです。当たり前のことですが、知らないものを使いこなすことはできません。そこで効果的なのが、たくさんの種類があるBoxのスクリプトがとてもよい教材になります。①の延長にもなりますが、ここで幅広くしっておくことでコーディングのときにストレスを感じにくくなります。また、この段階で、ライブラリの概念についても学んでおくとタイミングとしてはベストだと思います。

###③実際に書いてみる
①、②の段階を経てきたならば基本的な構文や関数の使い方が理解できているので、あとはコーディングするのみです！この後の段階は自分で考えてコーディングして何かを作っていくことでさらにプログラミングスキルを発展させていくことができます。具体的には、Box内の文を一部改変してみたり、自分で新しい機能をもたせて見たりと伸ばし方はいろいろです。

以上のことが、pepperでPythonを学ぶことのメリットであると自分は解釈しています。
PythonでBoxが編集できることを知るとpepperでできることの幅が大きく広がってきます。外部のサービスと連携させたり、独自のBoxが作れたりとできるので、自由度が高くなりオリジナリティも高くなります。実際に自分が経験する中で一番驚いたのが、APIの存在とその活用方法です。ほんとに単純ですがAPIの存在や活用方法がしれたのもpepperのおかげです。

#htmlも学べちゃう
choregraphe自体は基本的にPythonで構成されているものですが、実はhtmlの基本もかじることができちゃいます。なぜかというと、pepperには会話や動作だけでなく胸についているタブレットを使って画像や動画を表示させる事ができます。それだけではなくパソコンのようにブラウザを表示させることもできるのです。インターネットにあるホームページに使われている言語の１つとしてhtmlがあり、この言語を応用することでpepperの胸のタブレットに表示させる内容を好きなように編集することができます。特にhtmlの中にJavaScriptを埋め込むことで、タブレットからpepperを喋らせることもできます。

#さいごに
これまで紹介してきたように、プログラミング初学者がpepperを使って学ぶことにはたくさんのメリットがあります。コーディングから実装までがスムーズに連結でき、Boxを使うことで全体の流れも可視化することができるので効率よく理解できます。また、様々な言語にも触れる機会が多いので、ある程度学んだあとにこれから自分がやりたいことや伸ばしたい能力の可能性を多く見出すことができるきっかに大きく貢献できます。あくまで、自分が経験した中で感じたことなのでこれが正解だとは微塵も思っていませんが、同じ境遇の方いたときの後押しになれば幸いだなと感じています。長くなってしまいましたが、多くの人がpepperの奥深さを知ってくれればいいなと願っております。

メリークリスマス！

#アトリエ秋葉原について
pepperの使い方講座を中心にワークショップを展開しています。番外編としてpepperと様々なサービスを連携している講座もあるので適宜ご利用されるといいかと思います。

・[Pepperアトリエ秋葉原 with SoftBank ](https://pepper.doorkeeper.jp/)
・[ワークショップ資料](http://www.pepper-atelier-akihabara.jp/archives/439)