これからpythonを勉強して、「AIエンジニアに俺はなる!」と意気込んでいる方に向けて、お勧めの勉強方法を紹介します。
特に独自のオリジナルプロダクトを作って、世の中に展開していきたいと野望を抱いて勉強を始める方には本当にお勧めです。
結論から言うと、pythonのwebフレームワークであるstreamlitを使いながら勉強したほうが絶対に効率が良いです。
理由をこれから説明します。
気軽にWebアプリケーション化できる!
こんにちは。AI coordinatorの清水です。
最近は寒すぎて、ずっと家に引きこもりながらプログラムソースコード書いて遊んでいます。
今週末はスキーに行ってきます!そしてたまに捻挫して帰ってきます。
さて、そんなことはどうでもよく、pythonを勉強するなら絶対にstreamlitと合わせながら勉強したほうが後々効率が良いので、それ理由について説明します。
理由はたった一つです。
AIプログラムを記述しても、人に提供できる形で作らないと意味がない。
これにつきます。
プロダクト化を目指しているなら絶対に避けて通れない道です。
AIプロダクト(この場合、AIでなくても良い・・・)を作った際、
どのような形で納品しますか?
です。
まさか納品時に開発環境を構築したPCを渡し、「起動するときはターミナルを開いて、コマンドプロンプトからコマンドを打ち込んで、そしてpythonを起動してから使用してください」なんて、こんな馬鹿な方法で納品するわけないですよね?
まあ、納品先がそれで良いなら全然OKですが、ほとんどのケースでそれはないと思います。
常識的に考えれば、
ユーザーが使いやすい形で納品する。
はずです。
実はAIは納品方法が難しい
AIはコンピューターリソースをかなり食います。そのため「気軽に使う」が割と難しいです。
納品方法の例を挙げれば、
- エッジで提供:電源を入れれば、あとは勝手にプログラムが起動してAIが使える。
- スマホ:アプリに組み込む。
- クラウドで提供:URLをクリックするだけでAIが使える。
が代表的な納品方法かと思います。
しかし、上記3つはpythonを勉強するのとは別の技術スキルが必要になります。
そのため、AIプログラムをいくら作っても、いざ納品時にどうするかで頭を悩ますのです。
エッジにしてもスマホプリにしてもクラウドにしても、ググればそれなりに使えるようになりますが、どの基盤にプログラムを載せるにせよ、その基盤に合わせた作りかたをしていないと、大きく作り直す羽目になります。
エッジで提供する方法を考えてみる
エッジにはラズパイやらjetsonやら便利な小型マイコンが世の中には沢山あり、プログラム自動起動方法の説明などいくらでもありますが、物理的なケースやスイッチなども取り付けることを考えると、エッジ上での開発は気軽に出来そうで割と難易度が高いです。
そして昨今では、この小型マイコンは半導体不足やらなんやらで、入手し辛いうえ、値段がくそ高くなりました。
数年前に比べて気軽に挑戦できる感じではなく、物理的なハードウェアを扱うことから、電源周りもかなり勉強しないと最悪火災が発生するなど、学習コストという意味ではハードルはかなり高いといえるでしょう。私も購入したばかりのラズパイを、その日のうちにショートさせたことがあります。
ただ私のようにロボットが好きな人は積極的にチャレンジして行くと良いでしょう。
スマホアプリで提供する方法を考えてみる
まあ、いうまでもなく、専用のSDKを使って開発が必要なります。pythonだけでは完結しません。そのうえアプリストアで販売するためのアプリ登録や審査など、割とめんどくさいです。
というか、めんどくさいです。
ただ、アンドロイドは知らんが、iosはCore MLといったマシンラーニング専用のリソースがあって、勉強すると結構面白いです。
最終的にスマホアプリ化を目指しているのであれば、スマホアプリ専用のSDKを積極的に活用しつつ、pythonを勉強すればよいと思いますが、未経験の方が両方同時に勉強するはかなり大変だと思います。
それにwebアプリの場合、ブラウザを起動すればアプリが使えるため、スマホアプリ化をする必要がないケースもあります。そのあたりも踏まえてスマホアプリ化を考えたほうが良いしょう。
クラウドで提供する方法
一方、クラウドは楽勝です。すぐに出来るようになります。
何らかのwebフレームワークにそってプログラムを作っておけば、速攻でプログラムをクラウド上にデプロイして、世界中にいきなりプロダクトを展開することが可能です。
お試し版ですが、参考に以下の画像にyolov5をwebアプリ化したリンクを貼っています。
たったワンクリックって物体検出AIが使えます。(アクセスが集中すると起動に時間かかるかもです。)
ちなみに、このWebアプリはpythonだけで実装しています。
この程度のWebアプリであれば、ソースコードも300~500行程度で作れます。動画やリアルタイム機能を除いて写真機能だけにすれば100行で作れるでしょう。
いやいや、ちょっと待てと、
クラウドの知見が必要だろ?
と、突っ込みがありますが、慣れれば、
アカウント作成からデプロイまで15分で出来ます。
そして、そのあたりのデプロイ方法についても当サイトで紹介します。
そのため、これからAIエンジニアを志す方はpythonのwebフレームワークである「streamlit」を使うことをお勧めします。
streamlitを使う理由は他にもあるぞ!
streamlitはデータサイエンティストのためにつくられたwebフレームワークです。そのため、データ分析結果を表示する機能が多数準備されていて、さらに見た目もかっこいいです。
プログラム1行で見た目がカッコいいGUIが作れる。
中途半端にデザインに凝るぐらいなら、streamlitのGUIを積極的に活用したほうがかっこよく出来上がります。
「streamlit」でグーグル検索すれば、たくさんの例が出てくるので、一目でデザイン性の良さがわかるかと思います。
そしてソースコードもほとんど記述する必要なく、グラフ表示が可能だったりします。
こういった理由などから、streamlitは見た目の開発に注力する必要なく、AI開発に専念できるため、かなり学習コスト抑えて勉強することが出来ます。
未経験の方にも取っ付き易いです。
ブラウザで動くから、作っていて楽しい。
個人的にこの理由が一番ですね。作ったものがブラウザ上で動いている姿を見るとメッチャ楽しいです。
たった1行のプログラムでカメラ起動から撮影機能までも実現できていたり、1行で風船を飛ばしたりと、基本的なものからユニークなものまで、開発ライブラリーがそろっています。
opencvでカメラ起動と撮影機能を実装しようと思ったら、20~30行程度記述する必要があります。その点、streamlitはソースコードを少なくして実装が出来ます。
このあたりは初心者にっとて、滅茶苦茶うれしい部分になりますね。
で?どうやってその「streamlit」使うの?
公式サイトのトップページに動画があって、その通りやればブラウザ上でアプリが作れます。
APIリファレンスも丁寧にサンプルソースコードと合わせて説明があるため、とても扱いやすいです。
pythonで少しAIをかじったら、すぐにでもstreamlitを使ってブラウザ上で動かす練習をしてみると良いと思います。
私も早いうちからこのstreamlitを使っておけばよかったと思っています。
そのほかのpython Webフレームワーク
一応、触れておきますと、streamlit以外に、
- Django
- flask
といったpython Webフレームワークもあります。
そのうち紹介しようと思いますが、こちらはフロントエンドやバックエンドの知識が必要になるフレームワークです。HTMLやJavascriptなどフロント側の言語の学習も必要で、自由度の高い開発が出来る分、それなりに勉強が必要になります。
ちなみに私はflaskから勉強しました。フロントエンドとバックエンドの通信の仕組みなど、分けわからん感じで必死に勉強した記憶があります。
大掛かりに開発が必要になったときに勉強すればよいと思います。
さあ、AIエンジニアをはじめよう!
最後まで読んで頂きありがとうございます。
ぜひ頑張ってください。引き続きAIエンジニアネタを発信していきます。
LEAVE A REPLY