コボラーがpython始めてみた話

56
COBOL エエエエエエ Django エ web エエエエエエエエ エエエエエエエエ エエエエ

Upload: yuuki-nakajima

Post on 12-Jan-2017

1.395 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: コボラーがPython始めてみた話

COBOL エンジニアがDjango で web アプリを作る

まで日本システム技研 中島祐樹

Page 2: コボラーがPython始めてみた話

いきなりですが、勉強会の過去の発表者みんな凄い人じゃないです?

Page 3: コボラーがPython始めてみた話

みんなの python 勉強会なんだから庶民である僕でも python が使えるところを見せて敷居を下げなければ!

Page 4: コボラーがPython始めてみた話

ーで、お前誰よ

{“name”:” 中島祐樹” }{“age”:31}{“company”:” 日本システム技研” }{“my favolite”:”seiyuu”}{“twitter”:”@nakajidamedeath”}

Page 5: コボラーがPython始めてみた話

 大学:文系 ( 西洋史 ) 業務歴: 6 年ぐらい COBOL オンリー 1 年ぐらい C#(.NETFramework3.5)      3 ヶ月ぐらい Django      2 ヶ月ぐらい python← いまここ!

Page 6: コボラーがPython始めてみた話

僕がいた某現場のイメージ

画像元:Wikipedia

←お客様←情室←大手 Sier←中抜き業者 (大手Sierと仲が良い )←僕の派遣先とその下請け

Page 7: コボラーがPython始めてみた話

僕がいた某現場のイメージ・はっきり言ってエンジニアの仕事じゃない・キックオフからリリースまでの三ヶ月で修正は2日ぐらい・設計書から進捗管理まで全てはエクセル・ホーガン氏・保守チームだったので失敗すれば怒られる、出来て当たり前・修正方法が分かってるようなバグでも直させてもらえない→各種調整のため・僕が頑張っても中抜き業者が儲かるだけなのでやる気が出ない・単価も低いし、むしろやる気出さずに辞める方が得じゃね

話し出すとキリが無いのでやめます

Page 8: コボラーがPython始めてみた話

Django 始めたきっかけ・ COBOL+ 保守 + ウォーターフォールみたいな仕事はもうムリ!・これからは web !・弊社にたまたま Django 推進運動が起きてた・ COBOL 現場から自社に帰って最初の日に Django入門の勉強会が開催される・最初は訳分からなかった。

Page 9: コボラーがPython始めてみた話

言語別給与ランキング

http://hrog.net/2015102624991.html

Page 10: コボラーがPython始めてみた話

今回話すこと

知識ほぼ皆無な僕でも web サービスをデプロイすることができた話その時につかんだ、必要な知識や考え方

Django での web サービス開発の話をしていきたいです。

Web サービス作ってみたいけど、よく分からない人向けになるかなと思います

Page 11: コボラーがPython始めてみた話

そもそも Web サービスってどう動いてるの?

推薦図書)

プロになるための Web 技術入門

Web を支える技術

Page 12: コボラーがPython始めてみた話

ざっくり

パソコンからwebブラウザでアクセス

Webサーバー DBサーバー

参考) Qiita超絶初心者のためのサーバとクライアントの話http://qiita.com/shuntaro_tamura/items/ae55b99deb9e2a170754

http通信

Page 13: コボラーがPython始めてみた話

http通信クライアント (.html 的な ) とサーバーの通信・リクエスト:クライアント→サーバーの通信 例 ) GET/POST http://www.XXXXXX.jp/XXX/XXX.html http/1.1 ・レスポンス:サーバーからの戻り 例 )   http/1.1 200 OK 画像データとか色々   

Page 14: コボラーがPython始めてみた話

基礎的なことだけ・・・GET : URL でパラメータをサーバーに渡す

例: google 検索

Page 15: コボラーがPython始めてみた話

POST : http リクエストの中にパラメータを付与する一見してログ等に残らない

・データの更新時・重要なデータの通信 ( パスワードとか )

Page 16: コボラーがPython始めてみた話

MVC MTVコントロールWebブラウザ

View処理をするMODELデータベース部分

TemplateほとんどHTML

①リクエスト②取得や更新

③指定④レスポンス

Webアプリケーション

GET http://XXXX/XX.html

http/1.1 200 OK 色々

Page 17: コボラーがPython始めてみた話

基本的知識もついたところでWebアプリを作っていきましょう!

Page 18: コボラーがPython始めてみた話

Web サービスを作るまでに必要なこと

① 何を作りたいか考える② 環境構築③ 製造④ デプロイ

Page 19: コボラーがPython始めてみた話

Web サービスを作るまでに必要なこと

① 何を作りたいか考える ←機能は絞ろう!② 環境構築 ←結構大変!③ 製造 ←今回の肝④ デプロイ ←結構大変!

Page 20: コボラーがPython始めてみた話

①何を作りたいか考える・とにかく機能は徹底的に絞る!・ゼッタイ出来るでしょってレベルまで落とす!・機能は後からでも追加可能

Page 21: コボラーがPython始めてみた話

②環境構築色々方法はあるので、まずはどれかに絞って行うのが良い ( 色々見ると混乱します )

Qiita の Django 入門に沿って行った

http://qiita.com/kaki_k/items/511611cadac1d0c69c54

Page 22: コボラーがPython始めてみた話

エディタについて• SublimeText:導入後にカスタマイズ必要• Vscode:入れるとすぐに使える、横に延びるのが難点• Pycharm:機能豊富な IDE、一年間で 3万円• pycharmCE:無料、 djangoプロジェクトを認識してくれない

Page 23: コボラーがPython始めてみた話

その他ソース管理: githubとか bitbucketとか最初は難しいと思うので、苦労するようなら無くても良いような気がします。自分は bitbucketでマスターにプッシュだけ覚えました。ソースツリーがあると楽ちん

Page 24: コボラーがPython始めてみた話

これで準備完了です!

Page 25: コボラーがPython始めてみた話

作ってみよう!

Page 26: コボラーがPython始めてみた話

トップページざっと作ってみたサイト

Page 27: コボラーがPython始めてみた話

ざっと作ってみたサイトなんか検索すると結果が表示されるサイト

Page 28: コボラーがPython始めてみた話

③製造1.プロジェクトの作成  django-admin.py startproject djangopractice2.APPの作成  python manage.py startapp quest

3. モデルの定義する (データベースの設計 )

5.URLの設定をする6.Viewの処理を書く

4.マイグレートする

7.Template書く8.データベースの設定

Page 29: コボラーがPython始めてみた話

1.プロジェクトで出来るフォルダの中身

settings.py:各種の設定ファイル、タイムゾーンとか使用する APPの記載とかurls.py:url を書くviews.py:MVT モデルの Viewに相当※最初は作られないので後で付け足す

Page 30: コボラーがPython始めてみた話

2.App 追加で出来るフォルダ

models.py:テーブル定義書きます

urls.py:トップページ /quest/XXの URLを記載views.py:処理を書きます

理由は分からないけど views.pyは作られないので自分で作ってる

Page 31: コボラーがPython始めてみた話

3. モデルの書き方基本的にテーブル定義です  1 対 Nの関係を意識すると良いかも?  N 対 Nはちょっと難しいのですが、難しく考えなくてもよしなにしてくれます

Page 32: コボラーがPython始めてみた話

4.マイグレーションってなに?

定義

Models.py データベースDBの情報

Settings.py

Models.pyに書かれた定義をデータベースに反映させる作業

マイグレーションファイルmakemigrations migrate

Page 33: コボラーがPython始めてみた話

4.マイグレーションってなに?

定義

Models.py

←0001との差分だけ持ってる

Makemigrationsするたびに履歴を残してくれるので戻すのも簡単!

マイグレーションファイル 0001

マイグレーションファイル 0002

Page 34: コボラーがPython始めてみた話

4.マイグレーションって何?詳しくはこちら!【 django 】マイグレーションツールの使い方https://remotestance.com/blog/2612/

Page 35: コボラーがPython始めてみた話

5. URLの設定をするurls.py の最初に書き方の説明は書いてある

"""djangopractice URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/1.9/topics/http/urls/Examples:Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))"""

Page 36: コボラーがPython始めてみた話

日本語でおk

Page 37: コボラーがPython始めてみた話

5.urls.pyの書き方urlpatterns =[url(r‘^admin/’, admin.site.urls),url(r‘^$’, views.home, name=‘home’),url(r‘^quest/’, include(‘quest.urls’, namespace=‘quest’)), ]

←admin 機能 ( 詳細は先々月の資料参照 )← トップページ

↑ 今回追加した APP の名前

簡単な正規表現のスキルが必須です!正規表現分からないという人はこちらまで・・ Qiita初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」http://qiita.com/jnchito/items/893c887fbf19e17d3ff9

Page 38: コボラーがPython始めてみた話

5.urls.pyの書き方urlpatterns =[url(r‘^admin/’, admin.site.urls),url(r‘^$’, views.home, name=‘home’),url(r‘^quest/’, include(‘quest.urls’, namespace=‘quest’)), ]

←admin 機能 ( 詳細は先々月の資料参照 )

Page 39: コボラーがPython始めてみた話

5.urls.pyの書き方urlpatterns =[url(r‘^admin/’, admin.site.urls),url(r‘^$’, views.home, name=‘home’),url(r‘^quest/’, include(‘quest.urls’, namespace=‘quest’)), ]

Page 40: コボラーがPython始めてみた話

5.urls.pyの書き方urlpatterns =[url(r‘^admin/’, admin.site.urls),url(r‘^$’, views.home, name=‘home’),url(r‘^quest/’, include(‘quest.urls’, namespace=‘quest’)), ] ↑ 今回追加した APP の名前

Djangoプロジェクトに questアプリを includeするという意味なのでアクセスしても該当するテンプレートが無ければ落ちる!

Page 41: コボラーがPython始めてみた話

5.urls.pyが呼び出す viewurlpatterns = patterns('',

url(r'^$', views.Search_view, name='search_result'), # 検索用)

ここに書かれた処理が呼ばれます!

Page 42: コボラーがPython始めてみた話

6.views.pyの書き方def Search_view(request): ''' 検索結果の一覧 ''' # 項目名が一致する項目を取得し、その項目から事実を取得、その事実を持つ項目を返す errors = [] if request.method == 'GET’:      word = request.GET['word'] quests = Quest.objects.filter(about__icontains=word) return render_to_response('quest/search.html',                    {‘quests’: quests}, context_instance=RequestContext(request)

← リクエスト:最初にでてきた http 通信

← リクエストの中身が GET か POST

← テンプレートファイルを指定

レスポンスを返す↑

リクエストに対して、処理をしてレスポンスを返す!↓ さっき urls.py で指定したメソッドが呼ばれる

Page 43: コボラーがPython始めてみた話

7. テンプレートの書き方基本的には htmlっぽいです

return render_to_response('quest/search.html',                    {‘quests’: quests}, context_instance=RequestContext(request)

Page 44: コボラーがPython始めてみた話

テンプレートの書き方 <tbody> {% for quest in quests %} <tr> <td class="col-xs-4 col-sm-4 col-md-4"><nobr>{{ quest.title }}</nsobr></td> <td class="col-xs-7 col-sm-7 col-md-7">{{ quest.fee }}</td> </td> </tr> {% endfor %} </tbody>

views.pyでリターンしたオブジェクトが使える

Page 45: コボラーがPython始めてみた話

データベースの設定標準で以下のデータベースが使えますsettings.pyに記載しますSqlite3:最初はこれでいいかもMySQLOraclePostgreSQL

Page 46: コボラーがPython始めてみた話

MYSQLでやりましたが・・文字コードでてこずりました。標準が latinとかいうのだったため、そのまま使用したら全角使った瞬間エラーになりました。。この辺りもググって何とかしましたが、正直あんまり説明出来ません。。。

Page 47: コボラーがPython始めてみた話

④デプロイ一通り製造が終わったらいよいよデプロイ!

Page 48: コボラーがPython始めてみた話

だがしかし

Page 49: コボラーがPython始めてみた話

多分時間も無いし、ここからクラウドの話し始めるのは厳しいのでざっと紹介だけ・・

Page 50: コボラーがPython始めてみた話

④デプロイ超難関・クラウドにうpしたい  herock→postageSQLを使うと基本無料 アクセスが規定値を超えたら止まるだけでお金はいきなり取られない

僕自身は Azureの IaaSにうpBitanamiなるインストーラーで Djangoも pythonもインストールされた状態でしたが日本語ドキュメントほぼ皆無で結構大変でした。。。

Page 51: コボラーがPython始めてみた話

Pythonはどこで勉強したの?正直、ほとんど勉強してませんでした。Djangoのクエリ機能が優秀すぎて、それコピペするだけでほとんど書けてしまったので、気になるところは適当にぐぐってました。

Page 52: コボラーがPython始めてみた話

Python 勉強するなら?Paiza:転職サービスだけど、問題が出て、ブラウザ上でソース書いて実行みたいに実践形式で学べる

彼女が出来る ! 年収が出る!

Page 53: コボラーがPython始めてみた話

感想・論理部分をほとんど理解しないまま適当にコピペしながら開発していたので苦労した。論理部分はちゃんと覚えておかないとダメ・運良く教えてくれる人が弊社にいたので都度都度訊きながら何とかなった。

Page 54: コボラーがPython始めてみた話

Webアプリを始めるには運と論理の扉を開け!

Page 55: コボラーがPython始めてみた話

( 時間が余ったら宣伝 )ギークラボ長野

Pycon mini Nagano

6 月に長野でやります!

Page 56: コボラーがPython始めてみた話

以上です

終わりだよ〜 (o ・∇・ o)