Pythonを学ぼう–Google Colaboratory!(Japanese)

PythonはGoogle、Amazon、Microsoftなどの巨人企業にも大人気!

何事も始めの一歩は大変です。Pythonは演算を得意としたプログラム言語で、GoogleやAmazon、Netflix、Microsoftなど、皆さんが知る巨大企業のビジネスアプリケーションや、人工知能の根幹技術を支えている中軸言語のひとつです。人工知能は自動運転みたいに未来の世界と思っているあなた。それは間違いです。例えばあなたが食べているコンビニの食材は、人工知能により需要予測されて発注され、店舗に届けられている可能性があります。このようにPythonは全米だけではなく、世界中の中枢企業S&P500と呼ばれる指数に一覧されている優良企業が好んで使う技術の一つで、この言語を知ることで、一気に海外での就業の門戸を開きます。

始める前につまづく人たちも多い:環境構築の難しさ

ただ、バラ色の話ばかりではありません。それだけ需要が高いということは、それだけ参入するのが難しい、高度技術領域に位置付けられています。WOLFは、途中で挫折する人が多いのを目にしてきました。中でも最も多いのが、入り口でつまづく人です。原因を調べるとその最も多い理由の一つが環境構築にあります。少し難しいと思うかもしれませんが、何の事は無い話で、要するに環境がうまく作れない。そういう事です。スポーツするには機材が必要です。選手だけでは成り立たない体操の鉄棒とか、スケボーならスケボーに加えて、パークが必要になります。スノボは雪が降る山や気候という環境条件も必須です。それらがなければそもそもできませんよね?プログラミングにも環境があります。Codeを書けば動く訳ではなく、その裏には、そのCodeを処理する計算資源と言われるパソコンのCPU・GPUやサーバーが必要になります。これら一連の環境に加えて、Codeを使い回しできるようにモジュール化してます。お弁当屋さんが、唐揚げ弁当とか幕内弁当とか、一々オーダを受けてから一つ一つ作るのではなく、纏めて料理して、パッケージに詰めて売っている感じです。その方が効率がいいですよね?このように盛り合わせのパッケージにして、公に出ているものを、巷ではライブラリなどと呼んでいます(記憶しなくていいです)。ライブラリは、なんでもかんでも持っていれば動く訳ではなく、相性とか依存関係があり、これが環境構築のハードルをあげています。例えば弁当も、幕内弁当なら味噌汁つけると思いますが、オムライスなら味噌汁ではなくコンソメスープかもしれません。納豆に対してご飯であって、流石にパンにのせないでしょう。また食後のデザートのように、食べる順番(依存関係)もあったりします。さらには、OSがあります。オペレーティングシステム=弁当屋のキッチンみたいな感じ。Python(料理人の包丁みたいに思えばいいです)で人工知能アプリを作る際、弁当を作るときのように、ビルのテナント借りて、キッチンがないと商売できないですよね。さらにはメモリ(弁当屋の頭脳見たいな感じ。料理する順番とか、仕込みの順番とかシェフとオーナーが考えますよね。)との適合性というものも存在し、まあまあそれを統合して運用できるようにするのが面倒臭い訳です。計算資源に代表的なものには、Googleが出しているGCP、Microsoftが持つAzure、そしてAmazonのAWSなどがあります。それに加えてAnacondaみたいなオールインワンパックもあり(例えていうと、弁当屋さんを開業するノウハウ全てを駆使して、Anaconda一丁。って頼むと、全部盛りで準備して運営してくれる優れものと考えてください。それでもCode実行のための作業フォルダ指定コマンドやデータの格納先操作コマンドなど、最低限Linuxで扱うような基本ファイル操作言語知識を求められたりして、結局挫折する人がたくさんいます)。そこでこのブログでは、そういう弁当屋設立準備を飛ばし、いきなり包丁(Python)を持って料理するところから入れるように入り口をわかりやすくしました。環境構築必要なし、Anacondaのインストールすら必要なし。持ち物はあなたのパソコンとウェブブラウザ(Google Chromeを推奨してます)、そして美味しいコーヒーで十分です。では始めましょう!

Wolf息子
Wolf息子

ねぇパパ。 マインクラフトのクリエィティブワールドのMODで自動でAgentを操作して、楽々ブロック積み上げてる子がいたんだよ。あれ凄いんだけど何?

Fire Wolf
Fire Wolf

息子よ。いいところに気づいた。それは多分Loopなどの繰り返し構文を使ったプログラミングと呼ばれるものを使っている可能性がある。いま調べたらマインクラフトにはPythonのMODがあるため、その子はPythonを使ったかもね。

Wolf息子
Wolf息子

うーん、蛇みたいな名前でよくわからないや。友達がMOD入れればできるとか言ってたけど、面倒臭いのは嫌だな。でも知りたい。

Fire Wolf
Fire Wolf

そうだなぁ。MODとかマインクラフトの環境に加える修正プラグインモジュールみたいなもんだと思うが. それらを総称して環境構築と言ったりする。ただ環境構築は確かに面倒臭い。マインクラフトにもWindows版やMac版があるように、そのOS環境に最適なプラグインを入れないと壊れて動かなくなる。

Fire Wolf son
Fire Wolf son

マイクラできなくなるのは嫌だな。でもAgentを自動で動かして見たいからPython学んで見たいよ。

Fire Wolf
Fire Wolf

わかった、今回は特別に環境構築は飛ばして、いきなりPythonがいじれるようにしてあげる。ただ、もし興味を持って本格的にやるとなったら、ちゃんとMODとかの設定も覚えないとダメだよ。

Fire Wolf son
Fire Wolf son

やったーありがとうパパ。うん、まずPythonを触って見たかったんだ。それで面白ければ環境を構築する。環境構築しないと試せないのが辛かったんだよ。

Fire Wolf
Fire Wolf

よし、じゃあ始めるか!

まずは最初の一歩から稼ぐ力を身につけよう!

FIRE(Financial Independence, Retire Early)を達成するには、インデックスファンドなどの投資を実践していくことは必要です。しかし多くのYouTuberが小手先の投資術を語るものが多いので、WOLFは懸念を持っています。このブログでは投資ではなく、投資に回す源泉となる給与所得を大きく向上させる真の実力を理解してもらうためのブログです。稼いだ給与所得が大きければ大きいほど、投資でリスクを取らずとも、大きなリターンを得られます。わかりやすくいうと。1億投資に回せて、低リスクなインデックス投資ができれば、たとえローリターンの5%でも500万稼げます。これに対し、投資のことばかりYouTubeで学んでも、副業や本業の給与所得の稼ぐ力を高める努力をしないと、年間100万円しか投資できないかもしれません。その場合のリターンはたったの5万円です。こういう人たちは1億投入できる人と同じリターンである500万円を得ようとすると、ハイリスクな株などに投資し、500%の危険なレバレッジ投資をしないと、同じ500万円を稼げないのです。これがいかに非現実的な話かわかると思います。一部両学長のように誠実なYouTuberで億単位を稼いでいるまともな実業家もいますが、残念ながらそういう誠実な方々は希少です。このように投資YouTuberに煽られて、怪しげなハイリターン(しかしリスク莫大)のビジネスや投資に手を染めて、全財産を失いかねない状態に陥って自己破産した人たちを、Wolfはアメリカで間近に見てきました。幸いWOLFはS&P500にリストされるような、アメリカの大企業の幹部たちと、日々ITやアプリケーションの構築、企業戦略をアメリカ人役員として実施してきて、何をすべきかを学んできました。もっとも世界で高給取りの職種になったデータサイエンティストという職業について、まだ入り方や入り口が見えないという方は多いと思います。その分かりにくさと障壁の最初の壁が、IDEや計算資源などの開発環境構築ステップにあると考えました。この時点で、「WOLF、横文字やめてや!」という方、大丈夫。今は理解できない場合読み飛ばしてください。今回は簡単にいうと、この面倒な開発環境を全部取り除き、いきなりPythonを実行してもらいます。

人生バラ色の話ばかりではありません。Pythonは非常に需要が高く高給取りになれると言いました。でも、それだけ需要が高いということは、それだけ参入するのが難しい、高度技術領域に位置付けられています。WOLFは、途中で挫折する人が多いのを目にしてきました。中でも最も多いのが、入り口でつまづく人です。原因を調べるとその最も多い理由の一つが環境構築にあります。少し難しいと思うかもしれませんが、何の事は無い話で、要するに環境がうまく作れない。そういう事です。プログラミングにも環境があります。Codeを書けば動く訳ではなく、その裏には、そのCodeを処理する計算資源と言われるパソコンのCPU・GPUやサーバーが必要になります。これは例えていうと、作文を考えれば良いです。ワードのようなノートツールとキーボードがなければ文章書けませんよね?プログラミングも同じ。NotebookなどのCodingを記述するEditorが必要です。WolfはAtomやJupyter Notebookを使用していますが、色々な環境があります。またそれらノートはOSとの相性もあったりして厄介です。WindowsやUbuntu、LinuxやMacOSといった具合に、ワードで作る作文のカリキュラムが学年別に存在するように、プログラミング基本の土台の操作環境をOSと考えてもらえば良いです。作文するとき、1年生には1年生の、高等学年には高学生向けの難易度やカリキュラム、指針のような土台が存在します。流石に基礎カリキュラムや指針を無視して書いても、作文は零点と思います。ちょっと例えは良くないですが、まあOS=作業基礎土台と考えておいてください。OSも多種多様。学校に学年別カリキュラムの土台があるように、OS別に掛け合わせ発生、構築するものも多く、大抵この設計構築段階で失敗します。また、プログラミングは様々なパッケージを利用します。パッケージは例えるとランドセルの中身です。小学生が文房具セットや工作キットを1年生で大量にもらい、授業によって、教材以外に体操服が必要だったり、絵の具が必要だったり、コンパスや定規が必要だったり、持ち物を変えて授業を受けるように、プログラミングも様々なツールを様々な用途別に使います。描画ツールを提供するmatplotlib、データ処理をするpandas、数値演算処理のためnumpyや、イメージデータを処理するtensorflowなど。Anacondaは、一年生の全部入りキットみたいなもので、学校でドカンと全部必要な持ち物を用意して渡してくれる感じです。学年はOSみたいなものです。授業の運用は、学年を前提にしているように、プログラミングにもOS環境を前提としています。ただ、上級生になると、先生に「じゃあ来週は理科の実験をするので各自で〇〇を持参ください。」のように、適時持ち物を指定してくると思います。これがPipというコマンドツールでインストールしていくイメージです。全部盛りのAnacondaと違って、必要な持ち物を順次揃えていく概念に近いです。ただPipで持ち物を入れていくときは、入れるコンビや順番を気にする必要があるかもしれません。また最低限Linuxを扱えないと、指定フォルダを構成するところでつまづいたりします。時間割を読み込めないと、当日何を持参するかわからず、授業が受けられないのと同様、実行環境にはフォルダ別に適材適所な道具を入れることが必要になります。その場所と時間で何をやるのか?例えば水泳するのに、ゴーグルしかなくて水泳パンツを忘れたら泳げないのと同じです。でもパンツがあれば、少なくともゴーグルはなくても泳げます。(不便ですが依存関係はない)Pythonにもこのような依存関係が存在したりします。(覚えなくてもいいですが、ふーん、そうかぐらいで見ておいてください。)このため、Anacondaのように全部盛りが巷で推奨されていたりしますが、それでも間違いが起こり挫折するのです。またプロになっていくと、ランドセルと机の環境だけでは講義内容を処理しきれなくなります。例えていうと我々プロは大学レベルのようなもんです。ランドセルに大学生クラスの持ち物を全部入れるのは無理なように、大学にいくと、やる事が増え、巨大な図書館の雑誌記事や書籍、文献を利用したり、インターネット経由で膨大な情報を調査したり、高度な授業を裁くのにランドセル以外のスーパーコンピュータや、ツールや情報源が、勉強や処理に必要になります。ランドセルをPCとして見立てると、これら高度な大学生ツール群がクラウド計算資源と考えれば良いです。さて、今日はこうした複雑な持ち物検査プロセスを全て飛ばします。一年生がよく持ち物をなくしたり、忘れたりして授業が受けられない残念なケースと似ていて、必要なパッケージを入れ忘れたりすると、PythonをCodingすらできませんん。そんな悲しい事がないよう、WolfがGoogleという公開学校に、全て準備してもらっている道具を使って皆さんにPythonに触れてもらうのです。これにより、面倒臭い必要な道具を入れたランドセルの準備をちまちまする必要をなくします。(しかし本格的にやろうと思ったら、開発環境設定は面倒臭いんです。Wolfの友人にはKaggleのアンソニーゴールドブルームという創業者がいます。2015年くらいにサンフランシスコで打ち合わせた時は、まだGoogleに買収される前でしたが、彼が起業したKaggleはデータサイエンスのグランプリ的存在です。WOLFの友人にも、割と著名なGrand MasterやMaster(スターウォーズで言う所のマスターヨーダとかオビワンケノービみたいなデータの達人の人たちです。)が多くいますが、先週も談話した際、彼らも口を揃えて、「本当に環境構築は悩ましいですね。」といってます。ヨーダクラスでもそう言っているのですから、あまり気にしないほうがいいです。ただ将来プロになれば避けて通れません。そのうち徐々にやれば良いです。)

プログラミング知識ゼロでも、迷う事なく入り口を見つけられるように用意しました。開発環境や計算資源構築で挫折することはさせません。)そこでWOLFは、基礎的な技術知識の入り口をクリックひとつで理解できるように提供し、一人でも多くの方に門戸を開くことを狙いとして、とにかくまず人工知能にコードレベルで触れて見る経験をGoogleの提供しているWeb Serviceで開始します。

Fire Wolf son
Fire Wolf son

でもさ、パパ。そんなに美味しい話あるの?環境構築せずにはじめられる無料の環境? Googleに課金されるんじゃないの?

Fire wolf
Fire wolf

さすが息子よ。まずこの情報過多のYouTube時代において、詐欺まがいの情報も多いから疑ってかかる姿勢は狼の息子として正しい。でも大丈夫。本当に無料なんだ。本格的な計算資源として使う場合は、もちろん上位互換のProバージョンがあり、それは課金されるが、気に入ってもっとやりたければ払う。これが鳥山明先生の記事でも書いた、リカーリングモデルの基礎なんだよ。良いものは課金してスケールするべきなんだ。世界中の人がドラゴンボールを読みたいのだから、印税かけてスケールする。お互いWin Winで理にかなっている。とはいえお前はドラゴンボール知らない世代か・・・。

大丈夫。無料です。文系の方でも、プログラムのプの字も知らない人でも動かせるマテリアルを、Codeで実行できる環境も含めて紹介します。もちろん処理速度は遅いです。お金を払えば高速化できる処理も、無料で使うのだから、そこは我慢しましょう。例えが良くないですが、ディズニーランドで早く乗り物を捌きたければ、バケパで高額なミラコスタのパッケージ費用を出してでも、FASTPASSを大量ゲットするのと似てます。(すいません、貧弱な例えで)では始めましょう。

Google Colaboratoryへ入学しよう!

このGoogle Colaboratoryリンクをクリックするだけで、上述したランドセル入りの学校と机、図書館や運動場などが揃ったファーストクラスの学習環境を無料で用意してくれています。まずGoogle Accountをお持ちでない方は、Gmailなど、Googleアカウントをアカウントを開設してください。その上で右下の「New Notebook]をクリックします。

初めてのCodingを Hello fire wolfで!

これでノートブックが起動したはずです。おめでとう!ここまで恐らく1秒のボタンクリック操作だけ。すごい時代ですね。さて、早速以下のコードをコードセルにコピーペーストして見てください。

import datetime
dt_now = datetime.datetime.now()
print("hello fire wolf! I coded this on:")
print(dt_now)

ペースとしたら、 [shift]+[return] を同時に押してください。あるいはセルの左に表示されるプレイボタンを押しても実行できます。クリックすると、以下結果が次のセルに表示されるはずです。

Wolf息子
Wolf息子

パパ、表示されたよ!凄い!

—–

hello fire wolf! I coded this on:

2021-08-20 18:21:22 -> This should be different from this screen and the timing you executed.

大きな山も、小さな一歩から

Pythonには様々なモジュールがあります。ライブラリと呼ばれるこの実行コードの詰め合わせは、いろいろな処理を人間のかわりに高速に実行してくれます。人工知能が、将来人間の職業を奪うと言われる所以です。たとえば、上記コードでは”import datetime”で、このお手軽機能をあなたの環境に構築しています。dt_now = datetime.datetime.now() というメソッドを記述することで、dt_nowに実行時の時間をタイムスタンプして格納しています。3行目は、””内の文章を表示するだけのコードですが、次の4行目に、2行目で定義してコード実行した引数の結果である実行タイミングの日時を表示します。なんだ実行時間をとっただけか?と思われるかもしれませんが、これがコンビニで、1秒に何百何万と全国店舗でスキャンされる購買品の領収書に、自動印字されることを想像して見てください。人間でいちいちそんな作業していたら、とんでもない時間を日時記入することに費やされていることが直感的にわかると思います。Pythonはさらにもっともっと複雑な関数で、自動化処理や予測をすることだってできます。小さい一歩ではありますが、この数行で、あなたはプログラミングの日付を自動に特定のデータ型で呼び出す関数や、文章を表示させる関数を実行したのです。あとはこれを拡張していくという階段を登り始めることになりますが、小さな一歩も踏み出せなければ、階段は登れません。

自動化、予測モデルの真価は適用範囲を拡大することで実現

実行ファイルは、今は数行なので全く持ってありがたみがないですが(笑)、これが何万行というコードを記述して、複雑な処理をミリ秒以内に自動化したり、予測したりしていく大企業の作業を想像して見てください。その場合保存したり、他の開発者にレビューに出したりする必要が出ます。Google Colaboratoryでも自分のファイル名を指定して保存することができ、それをipynbというファイル拡張しで、コードやMarkdownテキストを含めて連携することが可能です。こんな感じでファイル名を変えてください。Your_own_name.jpynb.

WOLFも最大で200名以上の機械学習モデルのリーダーをしていたことがありますが、EC2などの処理コストだけで数千万円近くかかるような大規模機械学習システムです。そうなってくると、レビューが必要になります。一つのミスで、大規模なシステム障害を起こせば、それだけで社会的問題になるばかりでなく、数十億円単位の損失を失うリスクもあります。いよいよ次の回は、いきなり難易度をあげ、自動処理ではなく、人間が判断する処理を予測するモデルを構築します。ディープラーニングと呼ばれるこの次回紹介する手法では、花の画像を機械が見て、瞬時に種別を判定して返り値を返す予測をします。これを応用することで、例えばX線画像から、これまで専門技師や石が判断していたガンの腫瘍などを、機械がより高精度に判定(悪性腫瘍か否かを1と0で判定)できたりします。この一連の流れを、学習による推論と読んだりしますが、ここについては次回詳しく説明します。

まとめ

WOLFも昔無一文になり、路頭に彷徨いました。そんな中、周囲の人たちに助けられて今の自分があります。今度はWOLFがそんな方達を助けたいと思って、このブログを立ち上げました。知りうる知識を無料で公開し、その就業へのアプローチを紹介することをミッションにしています。私の喜びは、みなさんがよかったと思えるネタを提供すること。WOLFはこの職業についてから、結果として日本にいた大企業の給与の26.9倍の給与所得を得るに至りました。(記事はこちら)このブログは単なるきっかけづくりの入り口です。これをやったからと言って7桁ドルの給与を即時に手に入れるということを意味しません。しかし、7桁ドルに限りなく近づける最短職種の一つであることはS&P500の企業のほとんどを内側から知るWOLFの目線から見て、ほぼ確信しており、自信を持って勧められる職種です。しかし、それを感じ、一歩を踏み出すのを決めるのはあなた。稼ぐ力をつけるのは、あなた自身なのです。レストランを経営したりするのと比べ、IT領域はほぼ投資金額ゼロで学習したり、起業したりできます。どうせリスクが低いなら、自分の時間を投資して見ませんか?

このブログでは、次回ディープラーニングという実践分野を紹介します。次の講義を聞いた後、興味を持たれたら、次のステップは、世の中に提供されている無料のコースを積極的に活用していくことをお勧めします。今はスタンフォードやMITなどの一流大学の講義を無料で聞ける時代です。ただ待っているのではなく、自分から群れを抜け出し、一匹狼になり、新たな新境地を目指しましょう。Python環境がなくてもOK! 人工知能知りません?Welcomeです。このブログは、Python環境やCloudがない方でも始められるWebベースのNotebook環境を紹介します。将来機械学習をやりたい方も、そうでない方も、読み物としてCodeを自分で実行する体験を詰めるように提供します。これであなたも人工知能のうんちくくらいは語れるようになります。ただWOLFとしては、ウンチクではなく、皆さんが真剣にそこに向かう一歩になることを願っています。いつかWOLFがいる会社に、あなたも参加するかもしれませんね!

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください