ゼロから始めた私のPython勉強録
(Webアプリ編)
※ 注意
この発表は感想です
今回のテーマ
今回はWebフレームワークPyramidを
使えるようにになるまでの勉強履歴を発表します。
Pyramidとは
● DjangoやFlaskと同様のWebフレームワーク
●
好きなサードパーティー製パッケージを
組み合わせて使うことができる
http://docs.pylonsproject.jp/projects/pyramid-doc-ja/en/latest/index.html#
自己紹介
自己紹介
これまでの勉強の流れ
実際にやったこと
失敗したこと
勉強してきた中で気がついたこと
最後に
自己紹介
名前 : 緑川 京太
生年月日 : 1990年12月25日 (24歳)
経歴 :
・ 東京農業大学 応用生物科学部
・ 大学卒業後すぐに友人と起業→失敗(^^;)
・ 7月末に株式会社リーディングエッジ社に入社
4ヶ月間Pythonを勉強
・ 12月1日からOpenStackの開発案件に参画
Python歴 : 4.5ヶ月
facebook.com/keita.midorikawa.35
NEW!!
@ktamido
初期スキル
OSはWindowsしか使ったことがない
ワード、エクセル、パワポぐらいしか使えない
プログラミングの経験はゼロ(そもそもPythonを知らなかった)
現状のスキル
基本的な構文は理解している
簡単なツールを一人で作で作ることができる
Pyramidを使ってWebアプリを作ることができる
ほんの少しjs、jQueryが使える
Linuxコマンドがわかる
Yamahaのネットワーク機器をコマンドラインから設定できる
英語のドキュメントが少し読める
これまでの勉強の流れ
これまでの勉強の流れ
実際にやったこと
失敗したこと
勉強してきた中で気がついたこと
最後に
自己紹介
環境
OS : Ubuntu 15.04
Python :Python3.4
IDE : Pycharm-5.0.1
Framework : Pyramid
スタート 2ヶ月
Python
スタートブック みんなのPython
 1ヶ月目〜2ヶ月目
CodeKata
ネットワーク機器のテスト
自動化ツールを
Pythonで作る
Raspberry Pi購入
Linuxの教科書
1ヶ月
Pyramidを触り始めるまでの流れ
ここまでで身についたスキル
Pythonの基本的な構文を理解
簡単なツールを一人で作で作れる
基本的なLinuxコマンドを理解
Yamahaのネットワーク機器をコマンドラインから設定できる
ここからWebアプリの勉強をスタート!!
Webアプリの学習の流れ
2ヶ月 3ヶ月
Pyramidの
チュートリアル
みんなのPython
Web編 HTML版
意味不明すぎて挫折
初歩から学べる教材が
ないか探す
 3ヶ月目
使い方を覚える
Pyramid
チュートリアル
再挑戦
Webアプリの学習の流れ
3ヶ月 4ヶ月
 4ヶ月目
ブログ、
カート、
ログイン、
新規登録画面
などを作成
Bootstrap
作ったアプリを
カスタマイズ
何とか完遂
Git・GitHub
電話の自動音声制御
アプリを作り始める。
ajaxに手を出す
Webアプリの学習の流れ
4ヶ月 5ヶ月
 5ヶ月目
ネットワーク機器のテスト業務
新天地へ!!
実際にやったこと
これまでの勉強の流れ
実際にやったこと
失敗したこと
勉強してきた中で気がついたこと
最後に
自己紹介
ほぼ確実に心が折れる罠
● すでにフレームワークを使ってWebアプリを
作ったことがある人向けに書かれている。
●
分からない単語だらけ
>>ネストが深くなり全体像がさっぱりつかめない
● 2系のコードで書かれているため読み替えが必要
●
日本語の資料が少ない
いきなりチュートリアルから始める
BAD
みんなのPython Webアプリ編
● Webアプリとは何かという根本的な部分から説明
● DB、ORM、フレームワークの必要性がよくわかる
● CGIでいろいろ作りながら学習することができる
● 「O/Rマッパーを使ったデータベースの操作」まででOK
※書籍はすでに絶版。 HTML版→http://coreblog.org/ats/stuff/minpy_web/
● 2系のコードで書いてあるため、読み替えが必要
● テンプレートエンジン、ORMを作らないと進めない
GOOD
BAD
みんなのPython Webアプリ編
SQLAlchemy, jinja2 etc...
● 特にDB周りは混乱しやすいので、
SQLAlchemy単体の使い方を覚えておくと◎
●
わかる部分が増えて理解しやすくなる
GOOD
ライブラリ単体の使い方を覚える
正直まだキツイ
● URLディスパッチの概念
●
エンドポイントのデコレーター
●
アカウントの認証周り
●
細かい部分の説明はほぼすべて英語
チュートリアルに再挑戦
チュートリアルに再挑戦
あとは気合と根性でゴリ押し
この辺の資料は公式文章しかない
途中Djangoに逃げそうになるも何とか完遂
電話自動応答アプリ,ブログ etc...
●
一度理解できればあとは早い
●
チュートリアルでは使わなかった、
いろいろなメソッドを試してみると◎
● とにかく手を動かして、Pyramidに慣れる
●
やりたいことを実現するには英語が必須
自分でいろいろ作ってみる
GOOD
簡単に使えるCSSフレームワーク
●
簡単にモダンなデザインができる
● 2,3日で簡単に覚えられる
●
公式のドキュメントが充実、サンプルも多数
●
デザインに割く時間が少なくなった
●
モチベーションアップ
GOOD
Bootstrapを使う
http://getbootstrap.com/
もともとTwitter社が開発・提供していた
モダンなデザインを作るためのCSS,JSのライブラリ集
ある程度大きい物を作るなら必須
●
気軽に機能追加などができる
● 最初はcommit,checkout,puthだけでも十分便利
●
公式ドキュメントが日本語でわかりやすい
● Github PagesでTinkererブログを公開するのも◎
良かった
git、githubでバージョン管理
Git : https://git-scm.com/book/ja/v2
GitHub : https://github.com/
失敗したこと
これまでの勉強の流れ
実際にやったこと
失敗したこと
勉強してきた中で気がついたこと
最後に
自己紹介
失敗1 : Pycharm有料版を買うお金をケチる
無料版のPycharmでもある程度できるから
有料版は買わないでいいや
●
端末とPycharm、ブラウザを行ったり来たり
●
プロジェクトひとつ作るにもやたら時間がかかる...
●
テストもやりづらい...
統合開発環境なのに全然統合されてなくね...
失敗1 : Pycharm有料版を買うお金をケチる
全くそのとおり... /(^o^)\
先輩
- Pyramidを公式にサポート
- テストの実行やアプリの起動が簡単
- ワンクリックでプロジェクトが作れる
- ステップ実行可能で、処理の流れを追える
格段にスピードアップ
失敗1 : Pycharm有料版を買うお金をケチる
お金で解決できる問題は、お金で解決しましょう!
有料版を購入!
テスト書くのめんどくさい。
全部作り終わってから書けばいいや。
失敗2 : Testを書かない
原因がよくわからないバグが発生
失敗2 : Testを書かない
問題の切り分けができず無事死亡
作った時間がまるまる無駄に...
クラスや関数を作るごとにコツコツテストしたほうが良かった
失敗3 : js,jQueryに手を出す
ajax通信を使って今風なアプリを作りたい
一応作るには作れたが、、、いろいろバグが出る
失敗3 : js,jQueryに手を出す
しっかりしたものを作るには付け焼き刃過ぎた。
あとで時間をかけてしっかり学んだほうが良かった
Pyramidの資料が少ないんだったら、
できる人を召喚して聞くのがいい!
おまけ : 自分で勉強会を企画
Pyramidもくもく会なるものを企画
おまけ : 自分で勉強会を企画
人が集まらず一人でもくもくする結果に...
途中から先輩が来てくれました(笑)
勉強してきた中で気がついたこと
これまでの勉強の流れ
実際にやったこと
失敗したこと
勉強してきた中で気がついたこと
最後に
自己紹介
勉強してきた中で気がついたこと
 公式文章を読むことの大切さ
ブログなどの2次的情報は古かったり、間違っていることが多い
わざわざ資料を探す手間も省ける
学習が進むにつれ、資料が少なくなってくる
>>特に英語の公式文章が読めると非常に役立つ
勉強してきた中で気がついたこと
 とにかく手を動かして書くこと
知識を得たら、とにかく書いて動くものを作る
読むだけ、人から聞くだけでは、できるようにはならない
書いてるうちに突然わかるようになることもある
勉強してきた中で気がついたこと
 周辺知識に手を広げすぎない
本当に勉強したい部分に手がつけられなくなる
習熟度合いが低いとかえって混乱してしまう
マルチタスクは集中力が落ちる
期間が長いと最初の方のことを忘れる
一つのことを一気に覚えたほうが効率がいい。
勉強してきた中で気がついたこと
 検討ではなく検証とテスト
分からないコードはiPythonなどでとりあえず動かしてみる
多少面倒でも、クラスや関数を作るごとにしっかりテストする
>> 問題が起こったり、改修するとき、切り分けが格段に楽になる
勉強してきた中で気がついたこと
 バージョン管理をする
確実に動作するバージョンを確保しておくことで、
気軽に改修ができる
実験的な機能を複数同時に開発できる
プロジェクトの進捗を管理しやすくなる
最後に
これまでの勉強の流れ
実際にやったこと
失敗したこと
勉強してきた中で気がついたこと
最後に
自己紹介
これからやりたいこと
●
作りかけのアプリを完成させる
● OpenStackなど仮想化関連の知識を付けたい
●
英語をもっと読めるようになりたい
最後に
学ぶこと自体を楽しめるか

S07 t2 midorikawa