PythonでAm●zon自動購入bot作ってみた番外編(.NETエンジニアが初めてPythonに触れて思ったこと)
押忍!
某youtuberの登場キャラでおなじみ「鎖骨打ちのサトJ」です!
自動購入botについて終盤に差し掛かってきて書くことないんで今日は
Pythonに触れて思うこと
をかいていこうかと思います
前回の記事はこちら
有料配信ですが結構ためになること書いたつもりなんでぜひ購入お願いします!
■はじめに
この二記事でも書いた通りですが自分の経験言語は以下になります
①C#
②VB.NET
③Java
④JavaScript(Gas,JQuery)
言語経歴ですが、
まず未経験でSES企業に入社したのですが、そこでは
プログラマーとしての適性はないからヘルプデスク枠でなら採用します。なんで研修ではプログラミングはやらんし、プログラミング案件の参画は無理だけどJavaブロンズ取ったら考えてやってもいいよ
的なことを言われて頭来たんで苦労しましたがJavaブロンズを1か月で取得しました。
んで緊張しいで面談通らなかったのもありJavaブロンズを取得したので奇跡的にプログラミング研修に参加することになって残り2か月でJakarta EEを使ったwebアプリケーション作成課題の研修に参加して研修中にJavaシルバーを取得しました。
(ちなみに過去にヘルプデスク枠で採用された人でJavaブロンズをとった人はいたらしいですがJavaシルバーをとった人は当時自分だけでした。)
んでようやく現場参画ってなったんですが当時の会社の営業が糞だったんで結局開発案件に参画してくれなかったため、1年で見切ってポテンシャル採用で今の会社に社内SEとして入社しました。
ほんとはweb系企業に入りたかったんですがとりあえず給料は今より上がるし常駐から解放されるんで開発はあきらめて入社したんですがここでも奇跡が起き事業がちょっと特殊だったため基幹システムはパッケージでなくフルスクラッチで作られていたため保守でプログラミングをすることになりました。
この基幹システムはVB.NETとJavaScriptで開発されていたものだったので以降は主にVB.NET経験が増えてきます。なんで一番歴が長いのはVB.NETです。
(ちなみにVB.NETはちゃんと勉強したことはなく今までのJavaの知識でとりあえず何とかしてました。)
その後、VB.NETでの基幹システム改修(メンテナンスってレベルではない大規模機能追加とかもありました。)や他社システムとの連携APIの開発をやっていきました。
最近はバッチなど新たに一から作るのは同じ環境で動くC#を使って作ったり、業務で使ってるスプレッドシートをGASを使って動かしたりとかもやっております。
まぁ結論から言うとJavaは一番最初に覚えた言語ですが実務では使ったことなく一番得意な言語はVB.NETで一番好きな言語がC#って感じです。
■これからPython初めて使ってみて「は?」って思ったことを書いていくよ
実際にコード書く前に一度プロゲートでPythonを勉強したことはあったのですがその時点で「は?」は結構ありましたが実際に書いてみるとさらに見つかりました。
その中でも特に「は?」って思ったのを5つランキングで書いていこうと思います
⑤変数のスコープがなんか変
例えばこれです
while True:
login = input("*ログインID(半角)>")
if login != "":
if CheckUtiltys.CheckMailAddress(login):
break
elif CheckUtiltys.CheckPhoneNumber(login):
break
else:
print("ログインIDが不正です。")
else:
print("ログインID(半角)は必須です。")
なんでwhile内で定義したローカル変数がwhile外でも使えんねん!!
C#とかでこんな感じで書いてlogin変数呼び出したらコンパイルエラーになりますね
まぁある種便利なのかもしれないけどPythonでプログラミング学習してこれが当たり前になってるとほかの言語やったとき絶対こけそう
④条件分岐や例外処理で何も書かないとエラー
例えばこんな感じです。
try:
#処理
except exception as e:
#何もしない
exceptの下に何も書かないとなんでエラーなんねん!!
エラー処理握りっぱなしは良くないと思いますがどうしても何もしないって時あるかと思います。
そういうとき「pass」って書けばいいらしいけど変なとこを省略してなんでこういうの省略しないのかが謎
③変数型について
Pythonでは自動で型変換をやってくれます。例えば
#文字列
mozi = "あああ"
#数値
kazu = 1
みたいに特に型指定しなくても自動で型を判定してくれます
これはまぁ慣れればいいんですがdefの引数で型宣言してない関数のソースコードも結構見受けられました。
さすがになんでも渡せるのはまずいだろ、、、
って思っちゃいました。
せめてdefの引数くらい型宣言しましょ
あとキャストの仕方ですが
mozi = "123"
kazu = Int(mozi)
これが解せない。
なんでかっこがこの位置なん
C#とかJavaだと
string mozi = "123";
int kazu = (int)mozi;
って書き方だからすげえ違和感。
VB.NETだと
Dim mozi as String = "123"
Dim kazu as Integer = Integer.Parse(mozi)
だからVB.NET信者はあんま違和感感じないのかな
②Import文
他ファイルの他クラスをインポートしたいときは
from [ファイル名](モジュール名) import [クラス名]
って形で書くらしいんですがこれめちゃドツボはまりました。
C#だとusingですが普通にimport [クラス名]って感じで書いてたらなかなかコード通らなくてなんでやねんってなってました。
これだと import [モジュール名]になってしまうらしいです。
Pythonってそもそもクラス化しないときもあるらしいんで確かにこれだと通らないケースもありそうだけどそもそもクラス化しないってのがちょっとよくわからない。
ふざけんな
①elifってなんやねん
pythonのif文でelseifを書くときは「elif」って書くらしいんですけどなんでこれ省略するんかな
普通にelseifでええやん
てかelseifはしょんならtry-catchの何もしないときのpassとか余計なこと欠かせんな
elifだけはマジ納得いかん
■終わりに
以上他言語からPythonに移ってきた自分が思ったことでしたが共感したのありましたでしょうか?
他にもモノ申したいこともたくさんありますがPythonもいいところはたくさんあるんで文句言いながらも今後も使っていこうかと思います。
次回は本編戻ってAm●zonの画面操作について書いていこうかと思います