プログラミング初心者がPythonを学んだ話

f:id:pinkie79:20220118105803p:plain

こんにちは!エンタープライズ・ソリューション開発部の村田です。

2019年に新卒で入社して今年で3年目となります。

 

まずは簡単な自己紹介。

学生時代は物理学を専攻していて、プログラミングのプの字も分からない状態でした。

入社後は新入社員研修でjavaとPHPを3か月学びましたが、配属後は試験やドキュメント作成といった業務を主に担当していたため、プログラミングとはあまり縁のないまま3年目となりました。

そんなプログラミング初心者の私が社内のスキルチェンジPJに参加してPythonを学んだお話です。

 

 

1.Pythonとは

まず初めに今回学習したPythonとはどのようなプログラム言語なのか簡単に説明します。

 

Python(パイソン) は1990年代初頭ごろから公開されているプログラミング言語で、わかりやすく、実用的な言語として、広く使われ続けています。Pythonはプログラムの「読みやすさ・わかりやすさ」をとても重視していて、Pythonを知らない人でも、理解しやすいようにデザインされています。もちろん、読みやすさ一辺倒ではなく、実用的で、高い拡張性も備えています。読みやすさ・習得しやすさと、実用性のバランスが、Pythonの大きな魅力といえるでしょう。

            (https://www.python.jp/pages/about.htmlより引用)

 

といったように初心者でも読みやすく理解しやすい言語となっているようです。

また、ライブラリの数が多く、特にAI開発や機械学習に特化したライブラリが豊富にあるため、今後も需要が高まっていくプログラミング言語と言われています。

2.スキルチェンジPJとは

今回私が参加したスキルチェンジPJとは以下の3つの柱から技術的強みの基盤を作ることを目的とした社内プロジェクトです。

①トレンドの技術を身に着ける


 AWS、サーバーレス、Python、CI/CD

②新しいことを始めるコツを身に着ける


・今ある技術がずっと使えるわけではない

・新しいものが出てきたときに自らキャッチアップを始められるように

③「チーム」での開発を経験する


 チーム運営、コミュニケーション、見積力、開発ツール利用

 

プロジェクトの進め方としては、リーダーが作成したissueに沿って各自作業を進めるといった方式です。

作業を進めていく中で、調べても分からない問題にぶつかった際には、リーダーや他のメンバーに相談して解決していくといった流れでissueをこなして行きました。

スキルチェンジPJではサーバレスの環境で開発する経験と、チーム開発する能力を身に付けるため、AWS(Amazon Web Services )やGitについてのissueも数多くありましたが、今回はPythonの学習にフォーカスしてお話していきます。

f:id:pinkie79:20220113110002p:plain

図1 実際のissue

3.学習手順

今回スキルチェンジPJではPythonで「IAMロールを操作するAPI」というものを作成しました。

 

IAMロールとはなんぞやという方にIAMロールについて簡単に説明しますと、AWSの中で使用される操作権限を付与するための仕組みです。

AWSではユーザーやグループではなく、サービス自体にも権限を付与することが出来ます。

このサービスに権限を付与する為に使用するのがIAMロールです。

 

3-1.プログラミング学習サイトで基礎知識の学習

初めにpaizaというプログラミング学習サイトを利用し、if文やfor文など、基礎的な構文を学習しました。

構文自体は新入社員研修で学習したjavaの構文と似ていたため、あまり苦戦することなく進めることができました。

構文の学習で感じたことは、プログラミング言語が違っても似たような処理ができて、書き方もそこまで大きくは変わらないんだなぁということでした。

 

例1  if文

f:id:pinkie79:20220113110035p:plain

図2 Pythonで記述したif文

f:id:pinkie79:20220113110122p:plain

図3 javaで記述したif文
例2 for文

f:id:pinkie79:20220113110234p:plain

図4 Pythonで記述したfor文

f:id:pinkie79:20220113110241p:plain

図5 javaで記述したfor文

3-2.APIの作成

paizaで構文の学習が完了したら次はいよいよAPI作成に着手です。

今までは「値が3以上なら〇、それ以外なら×を表示する」のような簡単な処理しか書いたことが無かったので、初めissueで「IAMロールを読み込む」や「IAMロールを作成する」という文字を見たとき、

どこから手を付けたら良いのかすら分からず、戦慄したのを覚えています。

 

実装の方法は、様々なドキュメントを読み漁ったり、他のメンバーやリーダーと相談しながらコツコツ進めていくといったものでした。

数週間かけてAPIを実装して、ようやく動いた時はずっとクリアできなかったゲームをクリアしたときのような達成感がありました。

f:id:pinkie79:20220113110318p:plain

図6 実際に作成したAPIの一部(getメソッド)

4.開発をするうえで大切なこと

初めてPythonで開発をして大切だと感じた事は以下の2点です。

①調べる力

今回が初の開発という事もあり、実装するときは以下の様な流れになることがほとんどでした。

 

実装方法を調べる⇒実装してみる⇒エラーが起きる⇒原因を調べる⇒修正する⇒別のエラー発生⇒原因を調べる⇒(以下ループ)

 

なので、実装時間の8割は調べていた時間と言っても過言ではありません。

そのため、いかに効率良くほしい情報にたどり着けるかがプログラミングをする上で大切だと感じました。

 

APIの実装を始めてすぐの頃は、調べ方もあまり分からず適当なワードでヒットした日本語の記事やドキュメントを読むことがほとんどでした。

しかし、実装を進めていくうちに、英語圏の記事の方が情報が多いことに気がつき、後半は「〇〇 how to 」などの英語での検索もするようになりました。

残念ながら英語は読めないので、Google翻訳に頼りながらの調査になるのですが、ニッチな問題になればなるほど英語圏の方が情報が多く、ほしい情報を入手しやすいと感じました。

②あきらめない心

APIを実装していく中で、どうしても問題が解決せず、丸一日ほとんど進まず、

「自分にはプログラミングは向いてないのではないか」と凹む時期がありました。

しかし今改めて悩んでいた箇所を見返してみると、当時の自分には全く分からなかったのに、意外と簡単に問題の解決法を見つけることが出来ます。

何を言いたいかと言いますと、

あきらめないで取り組み続ければ少しずつだけど必ず成長していくという事です。

すごく当たり前な話ですが、これは今後エンジニアとして働いていく中で非常に重要だと感じました。

 

 

今後はこのスキルチェンジPJで得た知識と経験を活かして、より良いエンジニアを目指し、日々精進していこうと思います!