部下の日記

遊んでいるのがバレると上司(@fijigoco2255)に課題を出されるそんな部下(@bukataya3)の雑記置き場です

「バイソン」<もしかして>「Python」

上司「木曜日、Pythonの勉強会参加するから、勉強しておくんだよ」

部下「はい!(なんだそれ)」

バイソン【検索】

部下「おかしい…牛しか出ない

https://upload.wikimedia.org/wikipedia/commons/8/89/American_bison_k5680-1_edit.jpg

と、いうことで昨日は上司と共に自社のスタッフ向けイベントにスタッフじゃないけど参加してきました。

講師は辻真吾先生でテーマは「Pythonの魅力とオープンソースの多様性」でした。

twitter.com

理由としては、「お前は放っておくと勉強しないから」だそうです。バレてる。

 

なぜPythonを勉強するのか

ではなぜPython勉強会だったのかというと、Pythonという言語が私向けだったからです。

PythonとじゃJavaC++にに並んでGoogle社内で使用される3大言語の一つだそうで、Googleのサービスも当然のことながらYouTubeDropboxなどでも広く適用されている言語です。

インデントを用いてブロック構造を定義しているのでソース自体が非常にきれいで見やすく、スクリプト言語だからコンパイル不要で扱いやすさが初心者にも向いているのだとか。

それと、今後Webの解析などを覚えていきたいと思っているわたしにとって、解析に向いている言語を今後覚えていく言語としてベンチマークしていくのはいいよねってことだそうです!ベンチマークとかこの前覚えたての言葉使っちゃった…

 前回のプリメイドAICEATECでの反省を活かして色々下調べをして臨んだ勉強会。

Pythonの良さやできる事などを学べたのは勿論のこと、OSSとの付き合い方を学べた勉強会でした。それと人工知能(AI)、DeepLearning。

やっぱり今人工知能ブームだしどこにいても耳にするなあと。

人工知能やDeepLearningについても今まで調べてきた知識があったのですんなり内容が内容として入ってきて、知識を得る経験の大切さを実感しました…

 

オープンソースは選択肢が多い

f:id:bukataya:20161021113002j:plain

OSSオープンソースソフトウェア)はソースコードが一般公開されているもので、無償で自由に使用・複製・改変諸々可能だよ!ってやつなのですが、沢山の人が沢山公開してくれているので如何せん種類が多い…そんな種類の多いオープンソースをどう精査していくかという話ですが、基本的には勝ち馬に乗ったほうがいいそうです。

というのも、勝ち馬のものはそれだけ人が多いということなので開発コミュニティも大きく情報が充実しているそうです。

迷ったら人が多く人気のある者を素直に使ってね!ってことなんですね。

講師の辻さんは今までマイナー路線を進んでいたこともあり人気言語に負けていたのだとか…(笑)

そんな中で辻さんの初勝利とも言えるのがPython、なんと最近のGoogle TrendによるとRubyよりも検索数が多いのだとか!

考えられる理由としては、

・可読性があること

・Cライブラリとの連携の良さ

・バージョン感の互換性の良さ(でも2系と3系は全く互換性がない)

マルチプラットフォーム

と言ったところがあげられるのではないかとおっしゃっていました!

 

Pythonを解析で使う際のおすすめのパッケージとか

「Anaconda」 データ解析環境の構築に最適らしいです

実際「pip」の方が最新バージョンとか自動で持ってきてくれる?し便利なのですが、コンパイルのときにC言語がその場でコンパイルされちゃうのだとか。

LinuxMacは対処法があるから問題ないらしいのですが、Windowsだとこれが結構問題らしく、こういった問題点をcondaはカバーしてくれているそうなのでcondaぜひ使ってみて!とのことでした。

ちなみに互換性のない2系と3系のPython両方を使うこともできるとのことです

( ᐛ )و

qiita.com

「Jupyter notebook」 Webブラウザを利用できるPythonです

コードの入力・実行・表示を保存できてノートをHTMLで動かせるのが特徴です。

環境がAnacondaを入れておけば入っているということで、Anacondaとの相性もいいというわけなんですね〜

qiita.com

 

PythonをWebアプリ開発で使う際のおすすめのパッケージとか

「Web Server Gateway Interface」 PythonにおけるWebアプリ開発の標準モジュールです

hombre-nuevo.com

フレームワークのおすすめは

・Bottle

Python初心者がBottleを使ってみたら案外簡単に動いてくれた - Qiita

・Flask

ウェブアプリケーションフレームワーク Flask を使ってみる - Qiita

・Pyramid

WSGIとは?PythonとWebアプリケーション | Hornet|静岡拠点のWeb、ホームページ制作

Django

仕事でPython使うことになったので、0から勉強してみた(Django 入門編) | Ardito Tech Blog

などがあります。表記上のほうが軽量で下に行くほど軽量ではないけどかゆいところに手が届く、そんなかんじだそうな。

フレームワークに関しては比較してくださってる方がいらっしゃるので興味があったらご覧になってみてください。

www.sejuku.net


その他

「Report Lab」PythonでPDFの制作ができるそうです

無料版と有料版があるそうですが辻さん曰く、無料版で十分使えるとのこと。

PythonのPDFライブラリ「ReportLab」の使い方(用紙サイズ、向き、文字出力、改ページ) - Symfoware

 

人工知能についてのお話

ここで一度、人工知能についてのお話がありました。

なぜ今AIブームが来てるのかについては以前記事にしたDeep Learningが出てきたからということでした。

Deep Learningについてはこちら。

bukataya.hatenadiary.com

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まとめ

Pythonはglue(ノリ)言語だそう。

つまり、色んな外部ライブラリをつなぐ言語であるということなんですね。

 

データ解析や科学計算だったら NumPySeiPy

無くてはならない超高性能ライブラリに Pandas

データの可視化には matplotlibseaborn

機械学習は scikit-learn

Deep Learningは KerasChainerTensor Flow

 

とかとかとか、こういったものと互換性がよいという点でもPythonはすごいよ!

って話でした。

 

すごい量になってしまった。

なによりかにより、言語について学ぶならちゃんと言語を学んでおくべきだなと思うので、Pythonとかちょっと勉強してみようかな〜と思う部下なのであった!

 

おわり