Pythonって、どんなもの?
Pytohnは、汎用のプログラミング言語です。
AIに特化している訳ではなく、様々な用途で利用可能な言語です。
DOSプロンプトでDOSコマンドを叩くのと同じように、命令を1行づつ入力し、即実行することが可能なので、結果を試しながらプログラムを作り上げていくことがやり易くなっています。
AIでPythonが使われている理由は?
AIを作る時に必要な「機械学習」のライブラリが充実しているため、よく使われるようになりました。
データ分析においては、「R言語」も多様されていますが、こちらは統計解析のライブラリが中心になっており、Pythonほど機械学習のライブラリが充実していません。
また、「R言語」はメモリの消費量が大きく、同じことをするにもPythonよりメモリを多く搭載しなければならないこと、「R言語」よりもPythonの方が分かりやすいプログラムコードを書けることから、AI構築ではPythonが主流になっています。
Pythonは初心者に優しい?
最初の敷居は低いと思います。
プログラム言語には、大きく分けてコンパイル型とインタープリタ型の2種類がありますが、Pythonはインタープリタ型です。
インタープリタ型は、入力された命令を1行ずつマシン語に翻訳、実行という手順を行う方式であるため、気軽にプログラムを書いて、結果を確認することができます。
従って、少しずつ理解しながらプログラムの書き方を覚えるという学習スタイルには最適です。
Webサイトには数多くの解説があり、また書籍も発売されていますし、自分のパソコンにPythonの環境をインストールすることも簡単なので、学習材料は充実しています。
ただし、ある程度の機能を持ったプログラムを作る場合、テキストエディタでプログラムを書いて、それをPythonの実行環境で実行する手順になりますが、この時慣れていないと、インデント(字下げ)のエラーが出まくります。
Pytonはプログラムの制御範囲をインデントで表現しているため、インデントを正しく書かないとエラーになって実行できません。
慣れていないとインデントのエラーを修正するだけでも大変なので、Pythonに対応したエディターを別途インストールする方が無難です。
AnacondaというPythonの統合環境があって、それをインストールするとPythonと、それに必要なエディタが自動でインストールされますので、お薦めです。
Pythonのデメリットは?
実行速度が遅いことです。
こちらのサイトに計測した記録があります。
実に100倍くらい遅いです。
C#なら1秒で終わる処理が、Pythonなら100秒かかります。
これは、コンパイル型とインタープリタ型の違いが理由です。
コンパイル型の言語は、プログラムをCPUが直接処理できるマシン語に翻訳するという手順(コンパイル)を、すべてのソースコードに適用してからプログラムを実行します。
インタープリタ型は、1行取り出すごとに、その行に対してコンパイルを実行する方式であるため、翻訳処理というオーバーヘッドが掛かるためです。
ただ、これは単純なループ処理や演算処理の話で、機械学習をする場合においては当てはまりません。
厳密には、Pythonは1行づつ直接マシン語に翻訳して動作しているわけではありません。
Pythonは実行する1行ごとに、その複雑な構文を、より単純な「中間言語」という形式に翻訳しています。
この中間言語は、「仮想マシン」と呼ばれるプログラムがマシン語に翻訳し、CPUに指示を出しています。
例えば値を大量にコピーするとか、ファイルからCSVを読み込むとかの一括処理においては、その処理を実行するための「中間言語」を「仮想マシン」に送るだけでよく、を「仮想マシン」が必要な処理をまとめてマシン語にしてCPUに送ってくれるので、その部分は高速に処理することが可能になります。
つまり、自分で複数の命令を組み合わせるような場合は時間が掛かりますが、Pythonの「仮想マシン」に備わっている命令を実行する場合は、高速に処理できるという事になります。
Pythonで機械学習するとこんな感じ
Pythonで「決定木」と呼ばれる機械学習をプログラムした場合、下記のようにコードを書きます。
実際には、前処理やテストデータと学習データの分割など、もうすこし多くの処理が必要になりますが、単純な機械学習だと2行程度の記述で出来てしまいます。
今、Pythson技術者が不足している?
PythonはJavaやC#より歴史が古く、1991年に公開されています。
しかし、注目されたのはAIブームに火が付き始めた2010年頃からになるため、JavaやC#ほどの技術者はいません。
また、AIの市場自身も急速に伸びてきているため、需要が追い付いていないのが現状です。
一説によると、AI技術者を含むIT関連の技術者は、2020年で37万人、2030年で79万人が不足するのではないかと言われています。
政府も人材不足についての対策を本格的に検討してきています。
AI技術者に限らず、IT技術者はけっこう泥臭い仕事です。
納期に間に合わせるための残業は日常的で、それでいて高額な給料をもらっている訳でもなく、最近入社した新入社員の言葉を聞くと、IT業界全体にブラックなイメージがあるようです。
私はこの業界に入って30年以上になりますが、最初に比べるとかなり改善されてきたとはいえ、プロジェクトによっては休日が無くなることもしばしばあります。
そうしたこともあり、よけいに人員不足に拍車がかかっているのかもしれませんね。
でも、面白いし楽しいことも事実です。
苦労はありますが、お客様と接しながらお客様の希望を形にしていく、そして出来上がった結果に喜んでいただけると達成感ややりがいを感じ、これが原動力となって次に進むことが出来ます。
確かに会社によってはブラックなところもあるでしょうが、そうでない会社もたくさんあるので、良い会社を選ぶ目を養いつつ、IT技術者を目指してみてはいかがでしょう?
Python覚えると就職に便利?
IT技術者としては、どの言語であろうと習得している方が就職に有利です。
データ分析など、AI技術者を必要としている会社に就職するのであれば、Pythonを習得している方が有利に働きます。
しかし、結局は本人のやる気次第なので、同じスキルを持つ人が並んだ場合、Python技術者を採用するくらいの差だと思います。
Pythonを習得するというのが有利に働くことが重要なのではなく、Pythonを習得するくらいAIに興味や情熱があるという所が大きいですね。
なので、そういう面をアピールしてもらったら有利に働くと思います。
Pythonをどうやったら覚えられる?
以前、私は数年間、新人教育をやっていたことがあります。
そこで気づいたことですが、プログラマになりたくて入社した新人の中には、その希望と裏腹に、プログラムを考えるためのロジカルな思考が出来ない方がいるという現実です。
これは文系、理系という枠の問題でもありません。
生まれつき運動が得意な人、歌が得意な人がいますが、プログラミングもしかりで、ロジカルな思考に得意、不得意な人がいます。
自分がプログラマやAI技術者を目指すのであれば、就職する前にロジカルな思考ができる事を確認したほうが良いかもしれません。
話をもとに戻しますと、ネットや書籍を使って、独学で学習することは十分可能です。
何か1冊、または1つのサイトを見つけて、それを中心に勉強すればいいと思います。
その際、まず手を動かすことが大切なので、Pythonの環境をPCにインストールして、実際にコードを入力しながら動作を確認するのが良いと思います。
自分で学習すると、どこかで疑問が出たり、壁にぶつかった時、そこから抜け出すのに時間が掛かります。
そんな時、誰かに聞ける環境があれば、有難いですよね。
また、独学の場合は変に勘違いして間違った理解をしていても、なかなか気づくことができません。
費用は掛かりますが、プログラミングスクールで学ぶという方法なら、分からないところはいつでも聞けるし、間違った理解をしていても指摘してもらえるので、効率的に学習を進めることが出来ます。
費用は数十万が相場のようなので、けっこう思い切りが必要な自己投資になりますが、将来この道で生きていきたいなら、検討の余地はあるかと思います。
もしプログラミングスクールに通うのであれば、できるだけ実務経験者の講師がいるスクールを選びましょう。
書籍やネットでは習得できない、現場でのセオリーや注意点を教えてもらうことが出来ます。
1つ言語を完全に習得すると、別の言語を覚えることが楽になります。
Pythonを覚えておけば、そのスキルは将来JavaやC#、Rubyなど他の言語を使う時に、必ず役に立ちます。
コメント