PyQについて私的なおすすめポイントを紹介します

株式会社ビープラウドが「PyQ」というオンラインでプログロミングが学べるサービスを4/12にリリースしました。

私の所属は、勉強会等でお会いした方はご存知かもしれませんが前述のビープラウドであり、私も問題作成とマーケティングで関わっているので、これはリリース記念の記事というやつです。もちろん製品に自信があってユーザーに広めたい思いがあって書かれています。

メインで関わったメンバーが気持ちのこもった記事を書いているのでそちらも参照していただきつつ、

サービス自体の紹介はPyQ公式サイトを見ていただくとして、私からは個人的に良いと思っている部分をできるだけ客観的に伝えられたらと思います。

お品書き

  • 個人的に思うPyQの良いところ
    • 環境構築がいらない
    • Pythonがメイン
    • 色んなレベルの人に学びがある
  • まとめ

技術的な部分などは、いずれ開かれるであろうPyQ Meetupのような場で話されるのがよいかと思うのでここでは割愛します。

個人的に思うPyQの良いところ

環境構築がいらない

Pythonの環境構築自体は知っていれば簡単に済ませられるものですが、インターネットで調べると情報が錯綜していることもあり、必要のないpyenv導入、必要のないvirtualenv導入、OSで使っているPythonが上書きされて死、pyenvとpyvenvで紛らわしいところにpipenvとかも出てきて死、など色んな罠が存在します。 Python自体はインストールできてpipが動くようになっても、Windowsでは色んなライブラリのインストールに失敗し複数バージョンのVisual Studioと関連ライブラリをインストールしては入れ直しという地獄に陥ったり、仕方なくAnacondaを導入して既存の環境が壊れたりと待ち受ける障害が多いです。 Pythonを使う前から嫌いになるという話もたまに聞きますが、無理もないなと感じています。

PyQではWEBブラウザからdockerを通して立ち上がったコンテナ上で問題を解けますので、PCだけでなくiPad等のタブレットでも学習を進められます

4/26 16:45 追記

現在、iPhoneiPad等の非PC環境からだと日本語が入力できないため文字列として名前を入力する場合等、一部の問題が解けない不具合があります。必ずしも学習が進められるわけではないので訂正します。

WEBアプリを作る問題では、WEBフレームワークであるDjangoもコンテナ上で動きhtmlの描画結果も確認できます。むちゃんこ楽ですね。

以下、余談。私は仕事でPython 3.5系を使いつつもプライベートでは最新の3.6系を使いたいので、3.5系は公式バイナリ、3.6系はHomebrewで入れてます。仕事用の環境を作るときは$ python3.5 -m venv work_envのようにして3.5系の環境を用意し、プライベートではipythonやjupyter系含めて3.6系を使用するようにしています。プライベートではWEB系から画像処理、機械学習と使用するライブラリが多いので仮想環境は用意しないことが多いです。

Pythonがメイン

プログラミング言語の選定はその人が何を実現したいかによる部分ですが、私の例だと個人で運営しているサービスとして「Twitterの情報からコミケ等のサークルチェックが簡単・便利にできるサービス」という触れ込みのsubcatalog、ライフワークとして4コマ漫画の評論をプログラムで推進することをやっています。(参考1参考2

そのため、私がプログラムで実現したいことはWEBサービス開発、画像処理、データ分析・可視化、自然言語処理機械学習・深層学習と多岐に渡ります。 これらの分野に優れたライブラリが存在すること、私の使用範囲においてはそこまで高いパフォーマンスが必要ではないということから、基幹言語はPythonですべてまかなえています。

4コマ漫画の分析・評論をプログラミングで始めたい人には是非ともPythonがおすすめです! というのは冗談にしても、だいたいのジャンルでやりたいことはカバーできるので今からプログラムを学び始める人にとっては良い選択肢のように感じられます。 Pythonの情報を探すと英語で読まざるを得ないことは多いですが、問題解決だけなら簡単な単語とコードを読めば済むのでけっこうどうにかなります。 人気の言語ランキングや言語別年収ランキングで上位に来るなんて話もありますが、実際そこまで参考にするようなものではないと思うので、用途に合わせた選択をするのが良いです。

色んなレベルの人に学びがある

Python入門者向けハンズオン等のイベントでメンターをしたり、プライベートの時間でもPython初心者向けのテキストを書いていたりするのですが、双方で期待する受講者の到達レベルの1つに自分のやりたいことがプログラムで実現できるというものがあります。

では、何を教えるべきかというと、とあるプログラミング入門者向けの本に「どのプログラミング言語でも使う8つのキーワード」というものが載っていました。(本の名前は失念しました…)

以上の8つですが、はあはあなるほどというラインナップで、クラス・インスタンス・メソッドはともかくその他の概念を理解してもらえばまずは何か作れるようになりそうという気持ちになれます。

しかしながら、「初心者」のレベルが違うために「どう教えるか」のところで分岐ができてしまいます。大きなところとしては、プログラミングそのものが初めての人と他言語経験がある人とは説明すべき内容が違ってくるというものです。

書籍のような静的コンテンツでは無理なく説明できる範囲に限界がありますし、対面型で人が人に教えるのは講師・メンター側の力量が問われ、良いものを提供しようと思ったらコストが大きくなります。

PyQのシステムであればレベルに合わせて問題を解き進められます! というただの宣伝なのですが、これを対面型の研修に導入すると、講師は最低限のフォローをするだけで受講者は独立でどんどん進めるので非常に楽になります。チーム機能を使用すればメンバーの学習状況もまとめて見られるので、色んな人が幸せになります。

中級者向けにもunittestの書き方、argparseの使い方、docstringの書き方、loggingのしかた等の1つ1つのまともな使い方を調べるだけで時間がかかるコンテンツがまとめて学べるのはいい部分かと思います。おそらく、ここまで細かい内容で問題を作っている他のオンライン学習サービスさんはないかと思っていますが、もしいらっしゃったらこっそり教えてください。

どんな問題があるのかはクエスト一覧をご覧ください。

まとめ

PyQをよろしくお願いします。