「バイソン」<もしかして>「Python」
上司「木曜日、Pythonの勉強会参加するから、勉強しておくんだよ」
部下「はい!(なんだそれ)」
バイソン【検索】
部下「おかしい…牛しか出ない」
と、いうことで昨日は上司と共に自社のスタッフ向けイベントにスタッフじゃないけど参加してきました。
講師は辻真吾先生でテーマは「Pythonの魅力とオープンソースの多様性」でした。
理由としては、「お前は放っておくと勉強しないから」だそうです。バレてる。
なぜPythonを勉強するのか
ではなぜPython勉強会だったのかというと、Pythonという言語が私向けだったからです。
PythonとじゃJavaとC++にに並んでGoogle社内で使用される3大言語の一つだそうで、Googleのサービスも当然のことながらYouTubeやDropboxなどでも広く適用されている言語です。
インデントを用いてブロック構造を定義しているのでソース自体が非常にきれいで見やすく、スクリプト言語だからコンパイル不要で扱いやすさが初心者にも向いているのだとか。
それと、今後Webの解析などを覚えていきたいと思っているわたしにとって、解析に向いている言語を今後覚えていく言語としてベンチマークしていくのはいいよねってことだそうです!ベンチマークとかこの前覚えたての言葉使っちゃった…
前回のプリメイドAIやCEATECでの反省を活かして色々下調べをして臨んだ勉強会。
Pythonの良さやできる事などを学べたのは勿論のこと、OSSとの付き合い方を学べた勉強会でした。それと人工知能(AI)、DeepLearning。
やっぱり今人工知能ブームだしどこにいても耳にするなあと。
人工知能やDeepLearningについても今まで調べてきた知識があったのですんなり内容が内容として入ってきて、知識を得る経験の大切さを実感しました…
オープンソースは選択肢が多い
OSS(オープンソースソフトウェア)はソースコードが一般公開されているもので、無償で自由に使用・複製・改変諸々可能だよ!ってやつなのですが、沢山の人が沢山公開してくれているので如何せん種類が多い…そんな種類の多いオープンソースをどう精査していくかという話ですが、基本的には勝ち馬に乗ったほうがいいそうです。
というのも、勝ち馬のものはそれだけ人が多いということなので開発コミュニティも大きく情報が充実しているそうです。
迷ったら人が多く人気のある者を素直に使ってね!ってことなんですね。
講師の辻さんは今までマイナー路線を進んでいたこともあり人気言語に負けていたのだとか…(笑)
そんな中で辻さんの初勝利とも言えるのがPython、なんと最近のGoogle TrendによるとRubyよりも検索数が多いのだとか!
考えられる理由としては、
・可読性があること
・Cライブラリとの連携の良さ
・バージョン感の互換性の良さ(でも2系と3系は全く互換性がない)
と言ったところがあげられるのではないかとおっしゃっていました!
Pythonを解析で使う際のおすすめのパッケージとか
「Anaconda」 データ解析環境の構築に最適らしいです
実際「pip」の方が最新バージョンとか自動で持ってきてくれる?し便利なのですが、コンパイルのときにC言語がその場でコンパイルされちゃうのだとか。
LinuxやMacは対処法があるから問題ないらしいのですが、Windowsだとこれが結構問題らしく、こういった問題点をcondaはカバーしてくれているそうなのでcondaぜひ使ってみて!とのことでした。
ちなみに互換性のない2系と3系のPython両方を使うこともできるとのことです
( ᐛ )و
「Jupyter notebook」 Webブラウザを利用できるPythonです
コードの入力・実行・表示を保存できてノートをHTMLで動かせるのが特徴です。
環境がAnacondaを入れておけば入っているということで、Anacondaとの相性もいいというわけなんですね〜
PythonをWebアプリ開発で使う際のおすすめのパッケージとか
「Web Server Gateway Interface」 PythonにおけるWebアプリ開発の標準モジュールです
フレームワークのおすすめは
・Bottle
Python初心者がBottleを使ってみたら案外簡単に動いてくれた - Qiita
・Flask
ウェブアプリケーションフレームワーク Flask を使ってみる - Qiita
・Pyramid
WSGIとは?PythonとWebアプリケーション | Hornet|静岡拠点のWeb、ホームページ制作
仕事でPython使うことになったので、0から勉強してみた(Django 入門編) | Ardito Tech Blog
などがあります。表記上のほうが軽量で下に行くほど軽量ではないけどかゆいところに手が届く、そんなかんじだそうな。
フレームワークに関しては比較してくださってる方がいらっしゃるので興味があったらご覧になってみてください。
その他
「Report Lab」PythonでPDFの制作ができるそうです
無料版と有料版があるそうですが辻さん曰く、無料版で十分使えるとのこと。
PythonのPDFライブラリ「ReportLab」の使い方(用紙サイズ、向き、文字出力、改ページ) - Symfoware
人工知能についてのお話
ここで一度、人工知能についてのお話がありました。
なぜ今AIブームが来てるのかについては以前記事にしたDeep Learningが出てきたからということでした。
Deep Learningについてはこちら。
Deep Learningが出てきたことで機械学習に革命が起きたということです。
従来であったら、<データ>から<プログラム>をして<ほしい結果>を導き出していました。
一方、機械学習では<データ>としてほしい結果を出力し、それを<機械学習アルゴリズム>にあてはめて<プログラム>を導き出すそうです。
ただそこには限界が在って、機械学習のアルゴリズムの出力はすべて数値なのだそう。
Deep Learningが得意とする画像もRGBで数値化されますし、自然言語は出現回数のようなデータになるそうです。
Strong AI(強いAI)とWeak AI(弱いAI)という言葉があるそうです。
Strong AIは、人間と同じやり方で問題解決をするもので、
Weak AIは、特定の問題解決に特化したものです。
今は特定の問題解決に特化したものは研究が進んでいるそうですが、まだ人間のように思考して問題を解決出来るようになるにはもう暫く掛かるのではないかとのことでした。
ただここで、一つ疑問が。
Deep Learningって人間の脳の神経パルスを模したニューラル・ネットワークの仕組みを用いて学習をしていくものだと学びました。
そう考えるとStrong AIなのでは?という。
一方で、画像認識に用いることを考えると<特定の問題解決>をするものになる…
じゃあ結局どっちなの?っていう。
↓
辻さん曰くDeep LearningはまだWeak AIの部類なのではないかということでした。
というのも、ニューラルネットワークを通してDeep Learningでは一方向で結論を出すのに対して、人間の脳はパルスの同じところを何度も回って思考することで結論を出すのだそう。
そう考えると、まだ100%人間の思考を模しているとは言い難いのではないかとのことでした。
なるほど。。。ためになった•̀.̫•́✧
Pythonはglue(ノリ)言語だそう。
つまり、色んな外部ライブラリをつなぐ言語であるということなんですね。
データ解析や科学計算だったら NumPyやSeiPy
無くてはならない超高性能ライブラリに Pandas
データの可視化には matplotlibやseaborn
機械学習は scikit-learn
Deep Learningは KerasやChainer、Tensor Flow
とかとかとか、こういったものと互換性がよいという点でもPythonはすごいよ!
って話でした。
すごい量になってしまった。
なによりかにより、言語について学ぶならちゃんと言語を学んでおくべきだなと思うので、Pythonとかちょっと勉強してみようかな〜と思う部下なのであった!
おわり