pythonコーディングひと段落
次はWEBアプリ
さて、プログラミングの方も、ちまちま進めています。 前回紹介した本の、ブラックジャックをpythonで作るところまでは完了です。
とはいえ、コマンドラインのみで動く簡単なものですが。
[ H 7 ]とか[ D 5 ]というのは、それぞれハートの7、ダイヤの5といった表記です。
モヤっとコード
このプログラムはfor文やif文、リスト等が分かっていればすぐに作れるので、あまり躓くことはありませんでした。
関数についても、メインのモジュールに関数を直書きして、メイン関数の中で使う、という流れ。
クラスを作ってインスタンス化→インスタンスメソッドを使う、といった処理は無かったため、物足りない感じ…。
(クラスメソッドとかスタティックメソッドとかがまだ腹落ちしていないので…次の課題ですね)
そんな中でも、ちょっとモヤっとするコード(完全にマスターしたとは言い切れないもの)があったのでメモ。
いわゆるリスト内包表記
#デッキを作る
def make_deck():
rank = range(1,14)
suit = ('S','H','C','D')
deck = [(i,j) for i in rank for j in suit]
random.shuffle(deck)
return deck
deck=[(i,j) for...
の部分ですね。
(i,j)
というタプル(要素を変更できない配列)のリストを生成しています。
rank
が1から13までfor文で回る間、それぞれS,H,C,Dがfor文で回る二重ループの表記。これで全ての組合せのリストとなっています。
こういうのサラっと書けるようになりたい。
複数の戻り値を格納
#勝敗の結果を判定
message, player_money = win_lose(dealer_hand, player_hand, bet, player_money)
print(message)
win_lose
という関数で勝敗が確定し、表示する文字列と所持金の増減値を返します。
それらをそれぞれ、message
とplayer_money
に格納しています。
これは便利ですが…その関数が何をどの順番で返してくるのか、注意しないとすぐにバグ化する予感。
そしてDjangoへ
ついつい心の中で「ディージャンゴ」って呼んじゃいますが、「ジャンゴ」なんですよね。なぜだ。
ここでWEBアプリを動かす為のサーバが必要になるのですが、現在はその環境を構築中です。
自宅にあるWindows10のノートPC上に、CentOS7の仮想サーバを構築し、そこにDjangoを乗せて見ようと思っています。
CentOS
Linuxを基本にしたOS(ディストリビューション)の1つ。いくつかある中で、結構メジャーに使われているらしい。これも使いながら勉強していきましょう…。
参考
所感
Djangoへの道のりはもうちょっと長かっ た…。
小さな一歩
プログラミングの勉強開始!
2回目の更新です。今回はプログラミングの話。
初回のブログに書いた通り、pythonという言語を勉強して最終的に何かアプリを作りたいと思ってます。
まだどんなことが出来るか分かってませんが、自分が使いたくなるものを自分のために作る!…というモチベーションでやって行く。
ちなみに今直近で欲しいものは…
市営テニスコート予約(補助)+管理
ができるアプリです。
なぜなら、今利用している市の施設予約システムがとても不便だから。
その理由は
- レスポンシブでない。 (スマホで見辛い…pc起動したくない)
- 一昔前のUIで使いづらい。 (期間を範囲指定して空いている日を一括で見たい…)
- 管理画面見ても、いつ抽選が実施され予約確定になるのか分からない。
などなど。
なんかこう、アプリで指定した条件で、市のシステムにリクエスト投げてその結果をアプリで受ける、みたいなのが作れたら後は自分向けのUIにしたり。
また、その予約情報をLineとかでシェアできるようにして参加者への連絡の手間を減らすとか出来たらいいなぁ!(そういうの既にあったら教えてください…使いたい!)
パパ友とのテニスが捗る。
入門書を買いました
とりあえず基本的な文法とかは↓のサイトで勉強しています。
■Python-izm | Python の入門から応用までをサポートする学習サイト
他にもWeb上で勉強できることはありますが、何か手元にひとつバイブル的なものが欲しいのと、何かアプリを作りながら進められるものが無いかと。その方が理解が深まりますからね。
そう思い立ち、先週、池袋ジュンク堂で色々眺めていたところ良さそうな本があったので、買いました。
この本で学べること
今コードを書きながら読み進めているところですが…軽く内容を紹介します。
pythonの基礎
どの本でもまずはここから。
pythonのインストール方法、基本的な文法、プログラムの実行の仕方…。
電子書籍もいいですが、文法なんかは紙の本ですぐにページめくって確認できた方がいいですよね。
pythonでブラックジャックのゲームを作る
実際にトランプゲームを作りながら、pythonに慣れることができます。(まだやってないので、そう信じています)
WEBアプリを作る
前段で作ったブラックジャックをWEBブラウザ上で遊べるようにすることで、WEB開発のスキルを身につける。
WEBサーバも構築が必要になりますが…それを簡単に作るためにDjangoというWEBアプリのフレームワークを使うようです。
こいつをインストールすれば、簡単にサーバを立てられる!便利!
ブラックジャックのディーラーに人工知能を導入
プレイヤーの入力(戦略)を人工知能に機械学習させ、ディーラーがその戦略に従うようになる…と。なんか凄そうでかなりワクワクしますね!
学びたかったディープラーニングにも触れられている点もGOOD!
実際に人工知能のプログラミングまではやらず、既に出来上がっているモジュールを導入するだけのようですが、考え方は載っています。
ちなみに、使われているライブラリは以下の通り。
Numpy
数値計算ライブラリ。
高度な数学関数、ベクトル計算を正確かつ高速にできる。
Theano
数値計算ライブラリ。
数式そのものから解法を考えてくれる。
Numpyよりも最適な計算方法を編み出してくれる特徴がある。
Keras
ディープラーニング用のモジュールを含んだライブラリ。
ディープラーニングの基礎となるニューラルネットワークの構成を上手いことこう…やってくれるらしい。まだよくわかりません…要勉強orz
Pandas
データ処理をするためのライブラリ。
簡単にデータの検索、変更ができる。
7月中にはマスターしたい
本って色々買って手を出したくなるけど、まずは1冊をとことんやることが大事って偉い人が言ってた。
そして自分が理解したことを、自分の言葉で説明できるよう腹落ちさせることが重要です。
それが、このブログの目的でもあります。
時には間違った理解を書いてしまうこともあるかも知れません…そんな時はどんどんコメントでツッコんで頂けると助かります!
ブログはじめました。
ブログ開設の目的
社会人になり、IT企業に勤めて7年目。
結婚して、子供ができて、マンション買って…プライベートはとても充実していたけど、仕事に関してはイマイチやる気も出ず、生活費を稼ぐためのものと割り切っていました。
しかし、その考えにもそろそろ限界が来たのです…。
目標も何も無かったため、仕事関連の勉強をしようとしても興味を持てず、自分に取り込むことが出来なくなっていることに気付きました…。
この状況を何とかするべく、何かやりたい事を見つけて、目標を持って、自分のスキルアップに繋げたいと思い、それをブログに綴ることにしました。
ブログのテーマについて
このブログでは、以下の3つのテーマをメインにやっていこうと思っています。
- プログラミングのスキルアップを目指す投稿
- 趣味のイラストを投稿
- 家族、育児についての投稿
仕事だけでなく、プライベートも充実させたい。更には、自分の趣味も続けて行きたい、という思いからこの3つにしました。
プログラミングのスキルアップ
言語は最近流行りのpythonで、最終的に何か役立つアプリやwebサービスを作れたらな…と思っています!
pythonを選んだ理由は、記述が簡単であるのと、今自分が興味を持っているDeepLearningを勉強する上でも適しているのかなと思っているからです。
なぜなら、それを実現するライブラリが揃っているから……というところも含めて勉強します_:(´ཀ`」 ∠):
趣味のイラスト
小学生の時から絵を描くのが好きで、漫画家になりたいと思っていました。
(きっかけはCLAMPのカードキャプターさくらにどハマりしたため)
趣味を仕事にすると楽しめなくなるのでは…と思っていたのと、大学時代に自分で本を作って満足したので、仕事にはしませんでしたが、絵を描くのは好きなので続けたいと思っています。
家族、育児について
現在、妻と、二歳の娘がいます。
日々の成長に驚いたり、それが寂しかったり…色々な感情が湧いてくるので書き留めたいと思っています。
あとは親バカ精神ですかね(笑)
最後に
なんとかモチベーション維持しながら頑張りたいと思っていますので、感想、コメントなどお気軽にお願いします!!
それでは、今日はこの辺で。