皆さんこんにちは。小幡です。
ありがたいことにPythonとAWS環境でのサーバーサイドのお仕事をさせて頂ける機会に恵まれて、現在はPythonのコーディングについて日々勉強させて頂きながらアプリ開発に従事しています。
私も実際にミスをしたコーディングや、体験について、二度と同じミスをしないように備忘録として記録します。これから30代未経験エンジニア転職をされる方の参考になれば幸いです。
無駄に三項演算子を使ってしまう
以前、こちらのブログでも紹介させて頂いた三項演算子ですが、ブーリアン型で使うと冗長化してしまうということで、Pythonにおいての最適解と思われるものを記録しておきます。
ちなみに、以前紹介した記事はこちら
まず、最初に書いたコードがこちら。
取得したデータが存在する場合はTrue、存在しない場合はFalse、ブーリアン型でreturnしようと考えました。
一番最初に思いついた、単純なif文
# 何らかのデータを取得。今回は'OK'
response = 'OK'
if response:
response = True
else:
response = False
return response
これだと行数が増えてしまいます。ということで三項演算子に行きつきました。
# 三項演算子にしてみる
response = 'OK'
response = response if True else False
return response
自分の考えでは、これが最適解でしたが、なんどもresponseを書いてしまっている事と、retunで比較演算できるということを教えて頂きました。
その結果の最適解がこちら。
# 最適解と思われるコード
response = 'OK'
return response is not None
Pythonのis not を使用した、わかりやすくありながら、とてもシンプルにまとめられていると感じます。
returnで比較演算出来る事やis notの意味がわからないと辛いかもしれませんが、脱初心者の一歩を踏み出したような気がしました。
改行、スペース、タブが統一されていない
JavaやC言語では、ある意味1つの処理に対して、コーディングの仕方が多数存在することがあたりまえであり、それがプログラミングの面白さのように見られることがあります。
しかしPythonでは、1つの処理に対して正しいコーディングが1つとされているようです。
これは改行、スペース、タブに関しても同様で、標準的なコーディング規約がデフォルトで存在しており、好き勝手に手を加えることができません。
スペルミスなどの単純な記述ミスが多い
これは初歩的なミスですが、自分でもタイポの多さに驚くほどです。
というのも、知らない英単語をたくさん使うということが多々あり、コピペして使用したり、google翻訳をしようしたり、と英語能力の低さにより無駄な作業量が増えてしまっており、それが原因で記述に対する意識が低下してしまっているのだと考えます。
プログラミングの学習もさることながら、英語学習も真剣に行わなければならないと痛感しています。
他人のコードが読めない
それと、長い間一人でPHPの学習を進めていたせいもあり、他人のコードがほとんど読めない、理解できないということが多々ありました。
原因の1つにPHPの記述方法が手続き型でオブジェクト指向がまったく出来ていなかったということが大きいとおもいます。
またゲッターやセッターをほとんど使っていなかったことなども大きいです。
テストがまったくできない
これも一人でずっとコーディングしていたということと、大規模プロジェクトについてまったく知識がなかったことが大きいです。
1人で掲示板を作ったりしているときは、特にテストなどせずに、本番環境であるレンタルサーバーにファイルをアップデートしていました。
ひたすらprint()を実行していた感じですので、テストについてはノータッチでした。
しかし、Pythonのテストについては、ググるとたくさん出てくるので、ちょっとしたコードのテストを実行するのであれば、それほど苦労はしないかと思います。
仕様書が読めない
私の場合、先日ITパスポートを受験し、情報処理技術者試験の勉強をしていたので、そこで大規模プロジェクトの概要について少し触れた程度の知識しかありませんでした。
などの、まったく仕様書が読めないところからスタートでした。
これについては、ひたすら初めて見る単語をググっては読み、ググっては読みの繰り返しだったかと思います。
どこを、どの程度、質問して良いかわからない
ありがたいことに私は先輩から丁寧なご指導を頂きながらお仕事をさせて頂いております。日々感謝しながら作業しているわけなのですが、とにかく質問する内容とタイミングには気を使っています。
というのも、自分が質問される立場になって考えると、大半の事は「ググればわかる」ような質問になってしまっていると感じるからです。
例えば、仕様書の読み方がわからなかった時、大抵の読み方についてはググるとわかります。プロジェクトの特殊な仕様などについては、質問するのがベストなのかもしれませんが、その特殊な仕様がどこなのかわからないといった具合に、質問箇所を見極めるのに苦労しました。
恐らく質問すれば、どんな簡単なものでも解答頂ける環境なのですが、今後のためにも初歩的な問題に対しては自己解決できるようにしたいと考えて居ます。
また、コーディングに関しても、質問すればするほど、コーディングの解答を頂いている様な感じになってしまい、ほとんど自分でコーディングしてない。という状況にも多々陥りましたが、自分が未経験ということで悔しい気持ちを、次の学習へとつなげていくことにしました。
これらについては、私は明るく元気に仕事をしていくしかないなぁと考えて居ます。
一日でも早く仕事を覚え、コーディングスキルを向上させ、プロジェクトに貢献する。そのことを考え、日々努力していくしか私にできることはないので、コツコツ頑張っていきます!!