PyQオフィシャルブログ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

自分が知らないすごい人に出会いたい! 〜 Pythonエンジニア列伝 Vol.2 鈴木たかのり氏(後編)

f:id:kamekokamekame:20171024183424p:plain

誰かに声をかけられるのを待つんだったら、何か蓄積する必要がある。そうじゃないなら自分から行くしかない。

Pythonエンジニア列伝の二回目は、株式会社ビープラウド所属の鈴木たかのり氏をお招きました。一般社団法人PyCon JP の理事を務められており、Pythonの普及に力を注いでいらっしゃいます。

Pythonエンジニア列伝 Vol.2 - 前編 鈴木たかのり氏(スズキタカノリ)氏

Pythonエンジニア列伝の二回目は、株式会社ビープラウド所属の鈴木たかのり氏をお招きました。一般社団法人PyCon JP の理事をつとめ、Pythonの普及に力を注いでいらっしゃいます。

今回は後編です。

blog.pyq.jp

Python Boot Camp

f:id:kamekokamekame:20171024183237p:plain:w100

佐藤) 最近、Python Boot Campをやってますね。

f:id:kamekokamekame:20171024183250p:plain:w100

たかのり) Python Boot Camp は初心者向けのPythonチュートリアルで、ハンズオンでPythonを学んでもらう集まりですね。日本各地で開催しています。

f:id:kamekokamekame:20171024183237p:plain:w100

佐藤) どういう経緯ではじまったんですか?

f:id:kamekokamekame:20171024183302p:plain:w100

たかのり) 私の思いつきです。

一般社団法人PyCon JP で、来年の予算をどう使おうかの話し合いがあって、日本のPython界隈で一般社団法人PyCon JP でなにかやれることないかなと考えている時に思いつきました。

初心者でPython Boot Campに参加した人が次のPyCon JPに参加して「あのときのPython Boot Campに行ったんですよ。」となって、さらに次の年は発表者になってくれたら、全国盛り上がっていくんじゃないかと。教えるというよりは、全国各地でのコミュニティーづくりが目的ですね。その種まきをしたい。コミュニティーができていくきっかけをつくっていきたいんです。

香川で開催したときはPython Boot Campの懇親会で、うどんPyコミュニティー をつくろうぜ!という話になって、その場でつくりました。

f:id:kamekokamekame:20171024183237p:plain:w100

佐藤) 実際はどういう人が多いんですか?

f:id:kamekokamekame:20171024183306p:plain:w100

たかのり) 学生さんも多いですね。「Pythonははじめてです!」という人向けなので、参加者はお互いは知らない同士で、日頃は他の言語やっているとか、プログラム初心者とかの方ですね。

f:id:kamekokamekame:20171024183237p:plain:w100

佐藤) 何人くらい派遣するんですか?

f:id:kamekokamekame:20171024183306p:plain:w100

たかのり) 一般社団法人PyCon JPからは講師を1人派遣するだけです。TAも現地の方やっていただいています。タイミングが合えば、里帰りついでに東京からTAとして参加してくださる方もいますね。

f:id:kamekokamekame:20170824143149p:plain:w100

佐藤) いいですねぇ。実際やってみて、東京での開催と違いはありました?

f:id:kamekokamekame:20171024183302p:plain:w100

たかのり) 大きな違いは特にないですね。東京だと懇親会でピザですが、地方は講師がうまいもの食べたいので、地方の旨い店を選んでもらって行くのが違いです。

46道府県で開催するのが目標です!

私が知らないすごい人とも知り合いたいです。TAで参加してくれる面白い人に出会えますね。最近だとPython Boot Camp広島で、大学生のもりたこくん に出会えました。広島でDjangoをバリバリ使っている人なんです。

f:id:kamekokamekame:20170824143800p:plain:w100

清原) すごい良いですね。勉強会も東京はやっぱり多いですね。僕は学生の頃は大阪に住んでいたので、東京に行くのが大変でした。PyCon JPに夜行バスで移動して参加してましたし、当時、Python Boot Camp大阪とかあったら絶対行ってました!

これから

f:id:kamekokamekame:20171024183237p:plain:w100

佐藤) これからやっていきたい活動とかありますか?

f:id:kamekokamekame:20171024183250p:plain:w100

たかのり) そういうのあまり考えないですね。話がきて、できるやつは、とりあえずやる。時間的に無理なもの以外は受けますね。

f:id:kamekokamekame:20170824143149p:plain:w100

佐藤) まさにHUBですね。

f:id:kamekokamekame:20171024183256p:plain:w100

たかのり) 最近は、コミュニティーの中だけでやっていると、知らない人にリーチできないので、そこをどうしたらいいんだろうを悩んでいますね。PyCon JP 2017でメディア会議*1 をやったのもその一環です。本を書きたいと思っている人にきっかけづくりをしたくて、技術系の本なら企画を出版社に持ち込むという方法もあることを知らない人が多いので紹介したいと思って。

f:id:kamekokamekame:20171024183240p:plain:w100

清原) 仕事的になにかとかありますか?

f:id:kamekokamekame:20171024183250p:plain:w100

たかのり) 楽して儲けたいです。と言うのは冗談で、掛ける力に対して、テコの原理で成果を出したいですね。 本を単著で5万部売りたい*2です(笑)

これからPythonをはじめる人にアドバイス

f:id:kamekokamekame:20170824143149p:plain:w100

佐藤) これからPythonをはじめる人へのアドバイスを教えてください

f:id:kamekokamekame:20171024183253p:plain:w100

たかのり) コミュニティに参加して、いい人と知り合いになるのが楽ですね。

あと、Pythonじゃなくてもなんでもいいので、何かを作って俺SUGEEEEEと思うのが大事ですね。

誰かに声をかけられるのを待つんだったら、何か蓄積する必要がある。そうじゃないなら自分から行くしかないね。

PyQに期待すること

f:id:kamekokamekame:20171024183237p:plain:w100

佐藤) PyQに期待することはありますか?

f:id:kamekokamekame:20171024183302p:plain:w100

たかのり) PyQを仕事のPythonオフライン研修で使っているので、教えるときのツールとしての使いやすさを高めてほしいですね。ユーザーが他のユーザーに教えてあげられる機能を提供できると、いい学習のコミュニティになるのかなぁと思いますね。

あと、PyQキャラバンとかやって全国まわって、PyQ体験会とかPyQユーザーとのミートアップをして欲しいです。

f:id:kamekokamekame:20170824143039p:plain:w100

一同) そうなりたいですね。

f:id:kamekokamekame:20171024183253p:plain:w100

たかのり) 私は提案者としてドヤ顔します。がんばって!

最後に

f:id:kamekokamekame:20171024183240p:plain:w100

清原) 学生時代、プログラミング大好きとかありました?

f:id:kamekokamekame:20171024183250p:plain:w100

たかのり) 機械とか電気はやる気が無くて、プログラミングはやってもいいかなって思ったのがきっかけ。

f:id:kamekokamekame:20171024183240p:plain:w100

清原) 周りの人でソフトウェアやるぜ!って人いました?

f:id:kamekokamekame:20171024183250p:plain:w100

たかのり) PC高かった時代なのに買ってもらってた同級生もいたけど、私は高専に入ってからはじめたかんじですね。

f:id:kamekokamekame:20171024183240p:plain:w100

清原) たかのりさんも清水川さんも昔からソフトウェアの未来を切り開くぜ!とやってきた意識高い感じじゃなかったんですね。

f:id:kamekokamekame:20171024183250p:plain:w100

たかのり) そういう人は表に出てこないよね。たまに作ったソフトウェアがポロって出てくるだけ。

ケネス*3ミツヒコ*4とか、作っているものがすごく優れているというわけじゃなく、キチンと定義してほしいものを作っているってかんじですね。 運用していくのは大変だけど、他の人に引き継いだりしながら、作りたいものを作っていっているのが素晴らしいですね。

f:id:kamekokamekame:20171024183232p:plain:w200

一同) たかのりさん、来てくれてありがとー!

PyQオフィシャルブログでは『Pythonエンジニア列伝』を不定期掲載します。Pythonに関わっているさまざまな人にインタビューし、これからプログラミングを学習する方にエンジニアが普段考えていることややっている活動などを紹介していきます。

(聞き手:佐藤治夫: @haru860、清原弘貴: @hirokiky / 執筆:大村亀子: @okusama27

*1:PyCon JP 2017で行われた編集者とPython書籍執筆者によるパネルディスカッション

*2:冗談とのことです

*3:Kenneth Reitz. Requestsの開発者。PyCon JP 2014 のキーノートスピーカー

*4:Armin Ronacher. Flaskの開発者。PyCon JP 2012のキーノートスピーカー

Pythonの人たちが集まって何かが生まれるといいな 〜 Pythonエンジニア列伝 Vol.2 鈴木たかのり氏(前編)

f:id:kamekokamekame:20171024183232p:plain

PyCon JPで目指していることは、世界中から人が集まって、知らない人同士が話して、新しい交流が生まれることです。美味しいごはんが出て、パーティーがチケット代に含まれていてみんなで一緒にごはんを食べたり飲んだりできるのが外せないところですね。

Pythonエンジニア列伝は Pythonエンジニアとして活躍する方にインタビューしよう! という連載です。 PyQオフィシャルブログとして、Pythonを単なるプログラミング言語としてではなく、日常や仕事で使えるものとしてお伝えしたいと考えています。Pythonエンジニアたちのインタビューを通して、Pythonを使う人達がどんな人なのか、どんな場面で活用しているのか、なぜPythonに出会ったかなどを知ってもらいたいと思います!

Pythonエンジニア列伝 Vol.2 - 前編 鈴木たかのり氏(スズキタカノリ)氏

Pythonエンジニア列伝の二回目は、株式会社ビープラウド所属の鈴木たかのり氏をお招きました。一般社団法人PyCon JP の理事をつとめ、Pythonの普及に力を注いでいらっしゃいます。

Pythonとの関わりかた

f:id:kamekokamekame:20170824143149p:plain:w100

佐藤) 現在、Pythonとどのように関わっていますか?

f:id:kamekokamekame:20171024183256p:plain:w100

たかのり) 仕事でPythonを使っていますが、マネージャー業務が多いのでPythonコードを書くことはあまりなく、コードレビューをすることが多いですね。

f:id:kamekokamekame:20170824143149p:plain:w100

佐藤) コミュニティー活動ではどうですか?

f:id:kamekokamekame:20171024183253p:plain:w100

たかのり) 活動しているコミュニティーはPyCon JP の立ち上げの時からスタッフとして関わっていて、Pythonの人たちが集まって何かが生まれるといいなという思いでやっています。何かを伝えたいなという思いはないですね。お祭り好きなんですよ。

そこ(PyCon JPのスタッフをやっていて)から、こういうのやらない?というオファーがあります。

最近は本のレビューを依頼されることが増えました。とある企業向けにPythonの実力を測れるような問題をつくったりもしてます。Python学習の動画教材もレビューしてます。

信頼できるレビューアーを探すのは大変なので、本を出版する著者同士でレビューをしあってますね。

f:id:kamekokamekame:20171024183243p:plain:w100

清原) Python界のツッコミ屋さんですね。

f:id:kamekokamekame:20171024183259p:plain:w100

たかのり) 最近は、日本語力の高まりを感じています。自分の中の推敲力が上がっています。

Python mini hack-a-thon

f:id:kamekokamekame:20171024183237p:plain:w100

佐藤) Python mini hack-a-thonはどういう経緯ではじめたんですか?

f:id:kamekokamekame:20171024183306p:plain:w100

たかのり) 昔、Zope*1とPlone*2を会社で使うために調べて、調べたことを自分のブログにガンガン書いていたんですよ。そうしたら(当時面識がなかった)寺田さん*3からZopeについて話して!とメールが来てZope Weekend 6というイベントで発表しました。その後Plone研究会にも参加するようになりました。

何度目かのPlone研究会の後の飲み会で寺田さん、清水川さんと3人で「最近、開発してないなー」「俺も」「俺も」(誰がいい出したかは不明)という話が出て。

「時間取ればやるよねー」

と意見がまとまって、月1回集まってZope/Plone開発勉強会 を開きはじめました。それが後のPython mini hack-a-thon(#pyhack)ですね。

f:id:kamekokamekame:20171024183237p:plain:w100

佐藤) なぜ続いていると思いますか?

f:id:kamekokamekame:20171024183253p:plain:w100

たかのり) 実はみんなに来てほしいと思っていないんですよ。まず、3人の中で都合のよい日を決める。そこから参加したい人を募集しています。

あくまで自分たちが開発するタイミングがほしいだけっていう感じでやっているので続くのかなと思います。

Python mini hack-a-thon(#pyhack)のすすめ方

  • 自己紹介、名前、今日は何をやるか発表する
  • もくもく各自開発
  • 最後にこんな感じでしたーって発表
  • 飲みたい人は懇親会に参加して飲む

f:id:kamekokamekame:20171024183243p:plain:w100

清原) 毎回、懇親会に参加する人がいてすごいな~と思います。

f:id:kamekokamekame:20171024183256p:plain:w100

たかのり) 俺と寺田さんが飲みたいだけだから。

f:id:kamekokamekame:20170824143039p:plain:w100

佐藤) 自分ドリブンで、犠牲精神がないのがいいですね。

清原) メインの人が飲んで、盛り上げているので盛り上がるんですね。

f:id:kamekokamekame:20171024183250p:plain:w100

たかのり) それでつながっている人がいっぱいいて、人材斡旋が楽になりました。

f:id:kamekokamekame:20171024183237p:plain:w100

佐藤) 何か企画がある場合にってことですか?

f:id:kamekokamekame:20171024183253p:plain:w100

たかのり) 本の執筆や勉強会への登壇について、相談されることが多いので、Python mini hack-a-thonのSlackを見て、誰がいいかなぁと考えたりします。Pythonistaの名簿が揃っているんですよ。

f:id:kamekokamekame:20171024183237p:plain:w100

佐藤) 会ったことあるし、知っている人だからですね。

f:id:kamekokamekame:20171024183306p:plain:w100

たかのり) そうそう。この人はやってくれそう!と思う人に声をかけてます。

f:id:kamekokamekame:20170824143054p:plain:w100

佐藤) 紹介は紹介する側の信頼にも関わりますからね。

清原) Python界の仲人って感じですね。

f:id:kamekokamekame:20171024183253p:plain:w100

たかのり) 俺はつなげて終了で、終わったら打ち上げに呼んでほしい!

f:id:kamekokamekame:20171024183237p:plain:w100

佐藤) Python界隈のHUBになりつつありますね。

f:id:kamekokamekame:20171024183306p:plain:w100

たかのり) 完全になってますね(ニヤリ)

f:id:kamekokamekame:20170824143800p:plain:w100

清原) 僕はpyhack卒業生ですね。

Pythonをはじめたきっかけは?

f:id:kamekokamekame:20171024183237p:plain:w100

佐藤) Pythonをはじめたきっかけはなんですか?

f:id:kamekokamekame:20171024183302p:plain:w100

たかのり) 最初は学校でC言語を学んで、仕事をはじめてC言語書いてて、JavaとPerlも書いてましたね。

Zopeは会社の部署内のサイトとしてつくって、コンテンツ管理もどきとして使っていました。それから、Ploneといういいものが出たので乗せかえました。 Redmine*4のように、wikiを書く代わりにPlone上にプロジェクトをつくってページを追加していくかたちで使っていましたね。 Ploneのカスタマイズ方法をブログで公開してて。

あの瞬間は日本でいちばんPloneに詳しかった。

f:id:kamekokamekame:20171024183243p:plain:w100

清原) 5人中1位みたいな?

f:id:kamekokamekame:20171024183256p:plain:w100

たかのり) そう(笑)

f:id:kamekokamekame:20171024183237p:plain:w100

佐藤) 寺田さんからのメールで、Plone研究会からPyCon JPへつながっていくんですか?

f:id:kamekokamekame:20171024183306p:plain:w100

たかのり) 寺田さんがPloneカンファレンスに行くということで、「一緒に行こう!」と誘われたんですよ。でも、ヨーロッパ開催で、旅費が掛かるから躊躇していたんです。

そうしたら、寺田さんから私が作っていたプロダクトを次のPloneのバージョンで使いたいから機能追加して欲しいという依頼がきて、「代わりにPloneカンファレンスのチケット代を出すよ」と言われました。今考えるとその仕事の内容よりチケット代のほうが高かったので、寺田さんも気を使ってくれたんだなと思っています。

1回行ったらイベントが楽しくて、次の年は自腹で参加しました(笑)

f:id:kamekokamekame:20170824143054p:plain:w100

清原) はまってますねー

f:id:kamekokamekame:20171024183259p:plain:w100

たかのり) その頃(2010年)、PyCon APACがシンガポール開催されて、寺田さん、イアンさん、イクバルさん、増田さんの4人がたまたま各自参加してて、シンガポールで日本でもやろうという話になったんですよ。

でも、PyCon JPのモデルはPloneカンファレンスですね。

f:id:kamekokamekame:20170824143039p:plain:w100

佐藤) 何が楽しかったんですか?

f:id:kamekokamekame:20171024183302p:plain:w100

たかのり) PyCon JPで目指していることは、世界中から人が集まって、知らない人同士が話して、新しい交流が生まれることです。 美味しいごはんが出て、パーティーがチケット代に含まれていてみんなで一緒にごはんを食べたり飲んだりできるのが外せないところですね。

f:id:kamekokamekame:20170824143039p:plain:w100

佐藤) それで、PyCon mini JP を2011年の1月にやったんですね。

f:id:kamekokamekame:20171024183253p:plain:w100

たかのり) PyCon mini JPをやって、そこそこ反響があったので『やっていこうぜ!』となりました。その年の11月にPyCon JP 2011を開催しました。

f:id:kamekokamekame:20170824143149p:plain:w100

佐藤) 私、何か話しましたよ。パネルディスカッション。(まだビープラウドの所属じゃなかった頃の)たかのりさんが依頼しに来てくれましたね。

f:id:kamekokamekame:20171024183256p:plain:w100

たかのり) そうそう。 Pythonを仕事に使っている会社の社長を集めてパネルディスカッションをしようという企画で。

f:id:kamekokamekame:20171024183240p:plain:w100

清原) 僕はそのパネルディスカッションでビープラウドを知って入社しましたね。

一同) おー

f:id:kamekokamekame:20170824143149p:plain:w100

佐藤) その頃、スポンサーってどれくらいいましたか?

たかのり) miniの時は4社でしたね。

佐藤) その4社中のnexediさんとビープラウドがminiの時から7年連続でスポンサーやっているんですよね。

たかのり) 2011年はゴールドスポンサー1社, シルバー 2社 , ブロンズ4社の7社でした。

佐藤) 今は何社くらいですか?

f:id:kamekokamekame:20171024183259p:plain:w100

たかのり) 2017年は約40社になりました。

f:id:kamekokamekame:20170824143039p:plain:w100

清原) PyCon JPはめちゃくちゃ成長していますね。

佐藤) 2011年からやってどんな感じでPyCon JPは変わって行きました?

f:id:kamekokamekame:20171024183259p:plain:w100

たかのり) コアのところはそんなに変わっていないと思います。スポンサー、参加人数は増えていますね。 参加者が大きく増えたので、誰と誰が交流しているかはわかりづらくなっていますね。

7年経ちましたが、PyCon JPの継続性を管理するのが一般社団法人PyCon JPの役割で、お金の管理をして、監査しています。 はじめは持ち越すお金の管理のために一般社団法人PyCon JPを設立しました。

f:id:kamekokamekame:20170824143039p:plain:w100

一同) なるほど。PyCon JPの歴史の生き証人ですね!

次回は、鈴木たかのり氏が最近力を入れていることに迫ります。

blog.pyq.jp

PyQオフィシャルブログでは『Pythonエンジニア列伝』を不定期掲載します。Pythonに関わっているさまざまな人にインタビューし、これからプログラミングを学習する方にエンジニアが普段考えていることややっている活動などを紹介していきます。

(聞き手:佐藤治夫: @haru860、清原弘貴: @hirokiky / 執筆:大村亀子: @okusama27

*1:Python製Webアプリケーションフレームワーク

*2:Zope上で動くコンテンツ管理システム

*3:@terapyon一般社団法人PyCon JP 代表理事

*4:Ruby製プロジェクト管理ツール

次に何を学ぶか迷わない。PyQに「コース」をリリースしました

f:id:hirokiky:20171026103921p:plain

何かを学ぶときに一番難しいことは、何をどの順番で学ぶのかということだと思います。

自分にあった適切な内容だけを学べれば時間も無駄もなく集中して効果の大きい学習ができると思いませんか?

そのために、 PyQコース機能をリリースしましたコースがあれば、次に何を学ぶかを迷わず、ストレスなく学習に集中できるようになります

pyq.jp

たしかに、迷ったり探しているうちに学んだ関係のないことが人生に役立つことは多くあります。 ですがPyQを使ってプログラミングを身に着けている間は、ストレスなくスムーズに学習に集中できることが何よりだと考えています。

コースに従って学習を進められるので、何を学ぶべきか迷いません

コース機能は学びたいことにあった コースを選ぶだけで次に学ぶべきことが分かる ようになります。

今までのPyQにはこんな問題がありました。

  • 「どれから順に学んだら良いか分からない」
  • 「次に学ぶものを自分で毎度クリックして選ぶのが手間」

ご要望もたくさんいただきました(ありがとうございました!) その問題を解決できるのが、コース機能です。

コースを選択していれば、ダッシュボード画面でも「コースの中で次に学ぶクエスト」が常に表示されます。 「とにかくPyQを開いて『次のクエスト』を始めればなりたい姿に近づける」とストレスなくスムーズに学習ができるようになりました。

f:id:hirokiky:20171026104127p:plain

「現状の自分」と「なりたい姿」からコースを選べます

現状の自分のプログラミング・Pythonの習熟度と、なりたい姿や学びたいことから最適なコースを選べるようになっています。

f:id:hirokiky:20171026104011p:plain

  • 「プログラミング初心者の人がPythonを学ぶ」コース
  • 「JavaやPHPなど他言語を知ってる人がPythonを学ぶ」コース
  • 「Pythonを知っている人がWebを学ぶ」コース
  • 「データ分析・機械学習を学ぶ」コース
  • 「スクレイピングの仕方を学ぶ」コース
  • 「ユニットテストや設計の勘所を学んでPythonスキルをアップできる」コース

などなど、現状と目的に則したコースを迷いなく選べるようになっています。

進捗が分かりやすくなったので、学習のモチベーションアップになります

選択したコースをどれだけ進めたかがすぐに分かるようになっているので、自分の学習の進み具合やレベルアップを目で見て感じられます。

f:id:hirokiky:20171026110134p:plain

「4月までにココまで身につけたい」という場合に、今自分がどれだけ進んだかが分かるので時間の見積もりがしやすくなっています。

また自分の進捗や頑張りが見えることでモチベーションアップになるかなと思います。 学んでいて「もっと学びたいな」「楽しいな」と思えるときは学習効果も高まるのではないでしょうか。

すべてのデザインを見直しました

今までたくさんご要望いただいていた問題も同時に解決しています。

  • クエスト一覧でどこまで自分が学習したか分かりにくい
  • 自分のプロフィール画面でどこまで学習しているか見えにくい・分かりにくい
  • 復習用に前のクエストを学んだときの、「次のクエスト」が直感と違う

このブログ記事では説明しきれませんが、コース機能の追加に併せてダッシュボード画面、クエスト一覧やユーザーのプロフィール画面も根本から見直して再設計、デザインしました。

コースの選び方

すでにPyQにご登録いただいている方は、ダッシュボード画面の以下のリンクからコースの一覧画面に移動できます。

f:id:hirokiky:20171026104551p:plain

すると以下のコース一覧画面に移動しますので、コースを選んだり、各コースで学べることを見てみましょう!

f:id:hirokiky:20171026104011p:plain

pyq.jp

これからPyQを始める人も、簡単に設定できます

PyQをこれから始める!という方は、 学習を初めよう から指示に従って進んで会員登録していただくだけで、コースの設定もできます。

  1. ユーザーアカウント登録
  2. プラン購入
  3. PyQのチュートリアル
  4. コース選択

あとはコースに従って学んでいくだけです!

興味のある方はぜひ以下から登録を開始してください。

pyq.jp

開発の小話

id:hirokiky です。 今までたくさんご要望いただいていた「小さなストレス」や「わかりにくさ」を解決したいと思って今回のコース機能をチーム皆んなで作りました。ご要望やご質問、本当にありがとうございました。

コース機能自体はシンプルな機能ですが、根本的に全体の設計やUXを見直したりとチーム全員で作っては議論し作っては議論し。。。を重ねてできたものです。

PyQチームでは「学習の中にある小さなストレスこそ学習を妨げる」と考えています。たしかにコース機能は「世界を変えるビッグな機能」ではないですし、クエスト一覧画面の改善もささやかなものです。 ですが、PyQは大きな変革よりも小さなストレスを無くすことが大事だと考えています。

その小さなストレスこそ学習の妨げになるからです。 何かがずっとストレスだったり気になっていたりしていると、学ぶべきことが頭に入ってこないですよね。

Pythonを学んでる方がストレスなく気持ちよく使って、仕事で使えるプログラミングスキルを学んでいただきたいなと考えています。 ぜひ、PyQを使って実務で使えるPythonプログラミングを身につけてください。

pyq.jp

なぜif文内に直接計算を書かないのですか?へのPyQサポートの回答

id:hirokiky です。

  • 「変数に値を置くタイミングって何ですか?」
  • 「小まめに変数に入れずに if 文内で直接計算したらダメな理由はありますか?」

というご質問を PyQ メールサポートにいくつかいただきました。

たしかにこれは、実務でプログラムを書いているときにも悩みものです。 レビューの観点としても重要かもしれません。

今回はそんな、変数に置くタイミングの悩みをサポートできればと思います。

質問

PyQの模範解答では x + y の計算を result = x + y と一旦保存してから、 if result < 20: と判定しています。

result = x + y
if result < 20:
    ...

この場合 if x + y < 20: でも正しいですが、違いや利点、理由はありますか?

if x + 5 < 20:
    ...
  1. resultと一旦変数に置く理由は?
  2. resultと一旦置かないとき、今後プログラムが複雑化する可能性などはありますか?

回答

回答いたします。 練習用に書いているプログラムではメリットやデメリット、違いが分かりにくいかもしれません。

ですのでなるべく、実務でのプログラムなども考えて回答できればと思います。

1. 変数を一旦他の値として置いたほうが良い理由

計算結果を変数に一度置いたほうが良いのは、以下の利点があります

  • 変数名によって、計算の意味を説明できること
  • デバッグの際などに変数を使いやすいこと

変数名でプログラムの意味を説明する

プログラムの意味を説明する方法としては、コメントやdocstringがあります。 ですが良い変数名に一旦置くことで、プログラムの意味を説明してくれる利点があります。

例えば以下のように price * 1.08 の結果を price_inc_tax という変数名に置くことで、 「なるほど、消費税込みの価格を計算したんだな」と想像しやすくなります。

price_inc_tax = price * 1.08

if price_inc_tax > 1000:
    ...

(もちろん一例ですので、消費税は別途値として共通化したほうが良かったり関数化したほうが良かったりします)。

このように変数名として置くことで計算やプログラムの意図を説明しやすくなります。

細かく細かくコメントを入れるよりも、見ればわかる変数名をつけるほうが大事です

デバッグしやすくなる

これはチョットした便利さのためです。 例えばprint関数を入れて動作を確認したいなというときに、 print(result) とすると結果がすぐにわかります。

result = x + 5

print(result)  # デバッグのために一行入れるだけ

if result > 5:
    ...

pdbを使う場合やloggingする場合、Djangoのトレースバックを見るときやSentryに通知されるときも含めて、 変数に置いておけばデバッグ情報として残されるので値の確認がしやすくなります。

過剰にやる必要はありません

たしかに x + y などの計算の「意味」が簡単な場合はワザワザ変数に置くのは大げさかもしれません。 変数に置くにしても、変数名から意味が分かりにくければ説明という意味も効果が薄れます。

ですがPyQのカリキュラムの始めの問題は、なるべく分かりやすくお伝えしたいと思っていますので、

  • プログラム内では複数のことを1行に詰め込まず、(とくに初歩的な内容の場合は)丁寧に分かりやすくしたい
  • プログラムを過剰にまとめず1行1行書いて読みやすく書く習慣をお伝えしたい

という意図で、プログラムはなるべく変数に保存するようにしています。

2. 変数に置かない場合の問題

例えばPyQの問題でも if x + y > 5: のようにまとめて書ける場合は多いです。 とくに簡単なプログラムの場合は問題になりませんが、複雑になってくると問題になります。

例えば先ほどの消費税計算の例をもう一度考えると、以下のif文は分かりにくくなっていますね。

price = 120
if price * (1 + 0.08) < 500:
    ...

このような場合考えられる今後の問題:

  • 中長期開発の場合、後で見返したときに分かりにくい
  • 消費税計算のプログラムが各所に書かれるおそれがある

「変数に入れる」という習慣になっていれば、変数の意味を考える機会も増えます。 そうすればプログラムの意味を考えて、「この処理は関数に切り分けられるかも」という発想も湧きやすくなります (副次的な効果ですが)。

例えば、このような関数に切り分けるということです。

def calc_tax_included(price, tax_rate=0.08):
    return price (1 + 0.08)

price = 200
tax_included_price = calc_taxt_included(price)
if tax_included_price < 500:
    ...

プログラムが複雑になればなるほど、まとめて書いてしまうリスクはでやすくなりまし、 逆に、細かく変数に入れすぎて読み難くなるリスクもでてきます。

プログラムは何度も書く中で勘所を身につけるものです。 今回は少し抽象的な話になってしまいましたが、 プログラムを書いて覚えるという実践はぜひPyQで積んでいただければと思います

ぜひ、PyQで「プログラムの勘所が分かる」、「レビューで重要な意見交換に集中できる(細かな点はお互いうまく書けるので見なくても済む)」ようなプログラミングのスキルを身につけて貰えればと思います。

pyq.jp

PyQが「Flake8」を学べる課題追加!

こんにちは。かめちゃんです。

今日はご要望の多かったFlake8課題を追加したお知らせです!

実務でのPythonに追加しました。

f:id:kamekokamekame:20171016164302p:plain

f:id:kamekokamekame:20171016164307p:plain

チームで開発する場合など、全員が共通の認識を持ってコーディングするとレビューのコストも節約できますね。この課題はそんな時に利用するコーディング規約に関わるものです。

コーディング規約とは

コーディング規約とは、コードの書き方をまとめたガイドです 。同じプログラミング言語を使った場合も人によってコードの書き方は異なってしまいます。 コーディング規約を導入することで誰が書いても同じスタイルでコードがかけるようになり、様々な問題を解決できます。

  • コードの書き方が統一されていて読みやすいので、理解するまでの時間が少ない
  • コードの書き方が統一されているので、Diffで見たときなど修正箇所を把握しやすい
  • コードの書き方が初めから統一されているので、後から整理しなおす時間がない

チームで コーディング規約を使用することで、最初から誰が書いても同じようなスタイルでコードを書くことができ、 上記の問題により発生する時間が削減されます 。それにより、ソフトウェアの開発は加速し、開発するソフトウェアの品質の向上に繋がります。

課題ではソースコードチェッカーであるFlake8を用いて、ソースコードをチェックします。

下記のようなエラーが出る状態のコードを修正していただきます。

f:id:kamekokamekame:20171016164310p:plain

課題を終えると、「PEP8とは何か?」「Flake8の利用方法」「Flake8に指摘された箇所の修正方法」を習得できます。

ぜひ、チャレンジしてください(*^_^*)ノ

pyq.jp