新卒で入ったWeb開発会社で1年が経ったので習得・経験したことをまとめてみた

## 初めに
こんにちは。つばさ株式会社の福田です。

2024年4月にこの会社に入って丸1年が経過しましたので、その間に習得・経験したことをまとめてみようと思います。

バックエンドエンジニアとして業務を行っています。

## プログラミング言語関連
### [Python](https://www.python.org/)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/f129dc4e-c806-429a-86a5-e90382ad05bc.png)

弊社はAWSを使っていますので、どのサービスでも相性のいいPythonを使っています。

大学でC, C++, C#をやっていたので、基本的な構文はすぐに理解できました。
ただPython特有の文法なんかはネットの記事や技術書を読んで勉強しました。

買ってもらった本
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/333ae0d5-6e7a-46e8-8a6a-3aa621c5afa1.png">

[きれいなPythonプログラミング](https://www.amazon.co.jp/%E3%81%8D%E3%82%8C%E3%81%84%E3%81%AAPython%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%81%AA%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F%E3%81%9F%E3%82%81%E3%81%AE%E6%9C%80%E9%81%A9%E3%81%AA%E6%96%B9%E6%B3%95-Al-Sweigart/dp/4839977402)

### Pythonのバージョン管理・パッケージ管理ツール
- [pyenv](https://github.com/pyenv/pyenv)
- [Poetry](https://python-poetry.org/)
- [uv](https://github.com/astral-sh/uv)

「pyenv + Portry」もしくは「uv」単体を開発環境に合わせて使い分けています。

入社するまではこんなツールがあることを知りませんでしたが、便利すぎてこれらがないと開発できなくなってしまいました。

### ライブラリ
#### [Powertools for AWS Lambda](https://docs.powertools.aws.dev/lambda/python/latest/)
弊社ではよくAWS LambdaでAPI開発を行うので、こちらのライブラリは必須級です。

#### [PynamoDB](https://github.com/pynamodb/PynamoDB)
DynamoDB用のORM風ライブラリです。
社内アプリを開発するときはデータベースにDynamoDBを採用しがちなので、こちらもよく使います。

#### [SQLAlchemy](https://www.sqlalchemy.org/)
<img width="100" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/c515cdfa-322d-4152-a86c-4b8e2f580218.png">

リレーショナルデータベースのORMです。
Amazon RDSとオンプレ環境でPostgreSQLを採用したときに使いました。

#### [FastAPI](https://fastapi.tiangolo.com/ja/)
<img width="100" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/ece17bd1-f2f8-490f-86d6-fd3ed7a99cfe.png">

とある案件でオンプレ環境でのAPIを開発するときに使いました。

#### [pytest](https://docs.pytest.org/en/stable/)
半年ほど前にちゃんとテストを書きたくなったので勉強しました。

こちらの本が非常に良かったです。
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/66e3b770-0cf1-4c3a-a464-19d03fe7db6c.png">
[テスト駆動Python](https://www.amazon.co.jp/%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95Python-%E7%AC%AC2%E7%89%88-Brian-Okken/dp/4798177458/ref=pd_lpo_d_sccl_1/355-7970360-5508628?pd_rd_w=gIxcC&content-id=amzn1.sym.855d8f70-df76-4181-80b0-56e48ae3bb9b&pf_rd_p=855d8f70-df76-4181-80b0-56e48ae3bb9b&pf_rd_r=8V82QNWNPX7MSPJHKCEN&pd_rd_wg=H0b6c&pd_rd_r=51bbcaa4-e60f-4639-9f93-654435e97bce&pd_rd_i=4798177458&psc=1)

## [Git](https://git-scm.com/)・[GitHub](https://github.co.jp/)
<img width="110" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/ffe02960-e25c-45d9-a006-bcce1e411233.png"><img width="100" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/4bad9334-2265-410d-aabf-5ca422269e65.png">

恥ずかしながらこちらも入社するまで全く使ったことがありませんでした。

勉強し始めて数週間である程度チーム開発できるレベルになり、今ではよく使うコマンドなら高速で入力できるようになりました。

こちらの本が非常にわかりやすかったです。
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/4f7849f5-2a00-446f-a384-07009c104957.png">

[いちばんやさしいGit&GitHubの教本](https://www.amazon.co.jp/%E3%81%84%E3%81%A1%E3%81%B0%E3%82%93%E3%82%84%E3%81%95%E3%81%97%E3%81%84Git-GitHub%E3%81%AE%E6%95%99%E6%9C%AC-%E4%BA%BA%E6%B0%97%E8%AC%9B%E5%B8%AB%E3%81%8C%E6%95%99%E3%81%88%E3%82%8B%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%AE%A1%E7%90%86-%E5%85%B1%E6%9C%89%E5%85%A5%E9%96%80-%E3%80%8C%E3%81%84%E3%81%A1%E3%81%B0%E3%82%93%E3%82%84%E3%81%95%E3%81%97%E3%81%84%E6%95%99%E6%9C%AC%E3%80%8D%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/dp/4295013617/ref=pd_sim_d_sccl_4_1/355-7970360-5508628?pd_rd_w=cwu60&content-id=amzn1.sym.d686209d-8edb-4501-90de-4e255f5b32cf&pf_rd_p=d686209d-8edb-4501-90de-4e255f5b32cf&pf_rd_r=4S64W0J6EXZXHPF2ZVTB&pd_rd_wg=iVqR7&pd_rd_r=bb826311-25e0-4947-8fd2-92c64ce3e9cd&pd_rd_i=4295013617&psc=1)

### [GitHub Actions](https://github.co.jp/features/actions)
まだ最近使い始めたばかりですが、簡単なワークフローなら自分で設定できるようになりました。

## 作ったもの
### NFC-Stamp
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/517eac64-4d7c-45e7-a8dc-25cbf899e171.png">

![373178912-a486ab4b-0169-4038-8447-6f82e54b1589.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/68728096-c30d-4961-9f1c-4e273d1bb3fb.png)

各社員が持っているMACアドレス内蔵カードをNFCリーダーにかざすと、出勤・退勤を記録できる社内アプリ。

出退勤時に社員本人と管理部にメールを送信する機能や、管理ページから社員の出退勤情報をみることができます。

実際に去年の10月から本番運用されています。

### お問い合わせフォーム
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/4d2b1770-644d-4588-94ef-fed9e0fd4280.png">

![contact-architecture.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/80f0cabb-f33c-4a6b-a1f9-1fa934413197.png)

弊社HPからアクセスできるお問い合わせページと応募用ページ。

ここからお問い合わせ情報などを送ると内容がDynamoDBに保存され、管理部にメールを送信します。

さらに応募情報を送信すると、S3バケットに履歴書を保存し、署名付きURLをメールに貼付して管理部にメールを送信します。

今年の3月ごろから本番運用が始まりました。

## その他ツール
### [Serverless Framework](https://www.serverless.com/)
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/477a6274-7b6c-48d1-b414-6363cf39b426.png">

Lambdaのデプロイに使っていましたが、アップデートによってログインが必要になったりと使いづらくなったため、次に紹介するSAMに乗り換えました。

### [AWS SAM](https://aws.amazon.com/jp/serverless/sam/)
AWS謹製のリソースデプロイツールです。

ローカルでAPI GatewayやLambdaをエミュレートできるので開発しやすくていい感じです。

またVSCodeに[AWS Toolkit](https://aws.amazon.com/jp/visualstudiocode/)という拡張機能があって、その中の[Infrastructure Composer](https://aws.amazon.com/jp/infrastructure-composer/features/)機能と組み合わせるとGUIでAWSアーキテクチャを構築できるので非常にGOODです。

ServerlessやTerraformよりも速くAWSの新機能やアップデートに対応するらしいですが、比較したことはないのでよくわからないです。

### [Docker](https://www.docker.com/ja-jp/)
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/3ded689d-ad61-4823-be0f-d6180cf825a1.png">

DynamoDBやSAMでローカルエミュレートするのに使っていて、ガッツリコンテナ開発！っていう感じでは使ってないです。

### [Postman](https://www.postman.com/)
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/a08df18c-49a2-4351-88b3-1227d4da8e91.png">

API開発支援ツールで、API実行機能やAPI管理機能、APIテスト機能などいろいろ揃っています。

結構ツールとしては老舗らしいですが、この次のApidogも結構よくてどっちをメインで使うか迷っているところです。

### [Apidog](https://apidog.com/jp/)
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/1dbc7af1-2c94-463a-9f62-d0df76d14477.png">

こちらもPostman同様API開発支援ツールとなっています。

まだどちらも使い始めたばかりですが、できることは割と似ていると思います。

ただApidogの方がUIがかわいいし、運営がたくさん記事とか書いていて熱意を感じるのでこっちを使いたいなぁと思っています。

## その他技術
### 暗号技術
共通鍵暗号方式、公開鍵暗号方式、ハッシング、署名など、現代暗号の基礎を勉強しました。

こちらの本が非常にわかりやすかったです。
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/37045dd3-2d08-4722-a548-b2742e5a6fff.png">

[暗号技術入門](https://www.amazon.co.jp/%E6%9A%97%E5%8F%B7%E6%8A%80%E8%A1%93%E5%85%A5%E9%96%80-%E7%AC%AC3%E7%89%88-%E7%B5%90%E5%9F%8E-%E6%B5%A9/dp/4797382228)

## 資格
弊社では以下の2つの資格取得を指示されます。

### [AWS Certified Cloud Practitioner](https://aws.amazon.com/jp/certification/certified-cloud-practitioner/)
AWS初心者がAWSの基本的なサービスについて知るという意味合いで勉強する資格です。

AWSの勉強の取っ掛かりにするのにちょうどいいと思います。

### [AWS Certified Solutions Architect - Associate](https://aws.amazon.com/jp/certification/certified-solutions-architect-associate/)
Cloud Practitionerの内容からさらに踏み込んで各サービスの詳しい機能や、要件を満たすにはどのサービスを組み合わせればよいかを問われます。

普通に結構難しいと思いますが、点数ギリギリで合格したことを上司に報告したら笑われました。

## 参加したイベント
### [survive the titanic?](https://peatix.com/event/3881295/view?k=9d9e2e985591c340be48e0951e28c61b25bb6f85)
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/dba71c27-b5f0-4276-be9d-262a7a038a53.png">

クウジット株式会社が主催したワークショップ​。

「タイタニック号のデータから生死を分ける因果を読み解く」というデータ分析がテーマ​でした。

急遽参加することになったので当日はバタバタしましたが、こういうイベントに参加するのは初めてだったので楽しかったです。

### [AWS Summit Japan](https://aws.amazon.com/jp/summits/japan-2024/)
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/a47c57d7-133f-4e93-98b9-8d80cdf912b1.png">

言わずと知れたAWS公式の日本最大のイベントです。

弊社では毎年開発部のメンバーを連れて参加しているようで、今年も参加する予定です。

去年参加した頃はまだAWSを触り始めたばかりで、セッションや展示の内容を100%理解できませんでした。
あれから1年経ち、結構AWSへの理解も進んできたので今年のSummitが今から楽しみです。

### [Qiita Conference 2024 Autumn](https://qiita.com/official-campaigns/conference/2024-autumn)
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3981262/eb1cb4e1-1a71-4158-8144-4c7dafe92293.png">

Qiitaが定期的に開催しているテック系イベントです。
オンラインで参加しました。

すべての講演を見ましたが、正直面白いと思えるものは少なかったです。

このときは参加申し込みをしましたが、YouTubeでも同時配信・アーカイブ化されるようなので、次回からはYouTubeでいいかな・・・。

## まとめ
私がこの1年やったことをざっと書き出してみました。

まだまだ勉強することは山ほどあるので、引き続き頑張っていきたいです。

就職活動されている方が弊社を知るきっかけや参考になれば嬉しいです。