サイトアイコン 協栄情報ブログ

2年目インフラエンジニアが個人開発してみた話【Python】

2年目インフラエンジニアが個人開発してみた話アイキャッチ画像


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

※社内向けの自己アピール記事です笑。技術的な話は書きません、感想です。

 

インフラエンジニアになって丸一年が経ち、業務でプログラミング言語を覚える必要が出てきました。

 

"せっかくプログラミング学習するならWebアプリでも作ってみよう"と当時は安易に考え、インフラエンジニアが個人開発を始めた話です。

 

今回の記事は、インフラエンジニアが個人開発をやってみて思ったことや全体的な開発の流れを紹介します。

 

 

インフラエンジニアがなぜ個人開発?


わたしは2023年7月からPythonの勉強を始め、9月に人生で初めてWebアプリを作りました。

 

↓それがこちらです↓
https://noriori.tokyo/

 

 

 

 

なぜインフラエンジニアが個人開発を始めたのでしょうか。

 

 

わたしの現在地


わたしはインフラエンジニアとして、AWSクラウド領域を主に担当し、サーバ、ネットワーク、セキュリティの設計・構築・運用をしております。

 

プログラミング経験はほぼなく、オンライン学習ツール"Progate"でRubyとPHPの基礎演習を一通りやった程度しかありません。ですので、わたしはプログラミング言語に関しては、ほぼど素人ですね。

 

 

個人開発するキッカケ

プログラミング経験がほぼないわたしが、なぜ個人開発を始めたのでしょうか。キッカケは2つあります。

 

  1. 現場でプログラミングスキルが求められた
  2. 作りたいアプリケーションがあった

 

 

わたしのキッカケなので、さらっとだけ説明しますね。

 

1. 現場でプログラミングスキルが求められた

わたしが今参加している現場では、100以上のシステム、500以上のサーバが稼働してます。新しい技術を取り入れる風土があり、先日機械学習を利用したレコメンドサービスが導入されました。

 

そのレコメンドサービスはAWS Personalizeを利用していて、ソースコードはPythonで書かれています

 

そして、まさかなのですが、プログラミング未経験のわたしがそのレコメンドサービスの運用を任されたのです。ちなみに、そのソースコードを書いた人はすでに現場にいません。

 

わたし以外レコメンドサービスを触れる人がいないので、結果的にわたしがソースコードの管理やリファクタリング、サービスのアプデに伴う改修をしなければいけなくなりました。

 

2. 作りたいアプリケーションがあった

2021年、2022年に保育園送迎バスの置き去り事件がありました。母が保育士なので、その事件が他人事とは思えず、ITでなにかできないかと考えていました。

 

考えた結果、園児の乗降管理ができるアプリを作ってみたいと思ったのです。

 

 

インフラエンジニアが個人開発するメリット3つ

インフラエンジニアが個人開発をしてみて、良かった点を3つ紹介します。

 

  1. 開発チームとのやりとりがスムーズになる
  2. プロジェクト全体がわかる
  3. コスト管理に厳しくなる

 

個人開発してよかったことがたくさんあるのですが、インフラエンジニアという本業にどう良い作用があったかに着目しました。

 

1. 開発チームとのやりとりがスムーズになる

各プロジェクトはおおまかに基盤であるインフラチームと開発であるアプリ・Devチームに分かれると思います。

 

毎週開発チームと打ち合わせをしますが、個人開発を経験すると開発チームの話がスムーズに頭に入ってきてコミュニケーションが楽になります

 

2. プロジェクト全体がわかる

個人開発は初めから終わりまで、すべて一人で行います

 

要件定義やWebデザイン、セキュリティ、サーバの契約、サービスリリース、広報など、やることすべてを挙げたらキリがないのですが、プロジェクトではすべて計画され、自分に見えないところでだれかが実際に各作業が行われています。

 

個人開発をすると、プロジェクトの全体像や知らなかったタスクを知ることができます

 

3. コスト管理に厳しくなる

個人開発をする際に、地味にお金がかかります

 

サーバレンタル料やドメイン代、参考書籍代、などなど。すべて自分の財布からお金が出ていくので、自然と削れるところを探し始めます。インフラエンジニアとして、コスト管理は最も重要なタスクの一つですよね

 

 

前置きが長くなりましたが、個人開発の実際の流れを説明していきます。

 

 

インフラエンジニアが個人開発してみる

個人開発とは、

個人開発は趣味活動であるのでプライベートの時間を割いて開発することになります。 個人の時間というリソースは有限である一方で、個人開発において考えることは山ほどあります。「個人開発を始めてみよう──「失敗」を避ける大事な考え方とは?」より

 

個人開発をする際に、考えることがやまほどあります。この章では、わたしが実際に行った開発の流れと、開発する際に役立ったツール、個人開発する際の注意点を紹介します。

 

 

個人開発の流れ

一般的な個人開発がどういった流れなのかはわからないのですが、わたしは個人開発する際に、以下の流れで作ってみました。

 

要件定義

基本設計

コーディング

テスト

リリース

 

開発"V字モデル"の簡易版ですね。この流れの中でわたしが重要だと思った部分が2つあります。

 

要件定義と、基本設計です。

 

一つ目の要件定義です。実際にわたしが使った要件定義のフォーマットは以下ですね。

 

 

個人開発なので、ここまでガチガチに固めなくて大丈夫ですが、"機能要件"は絶対に考えましょう

 

いわゆる"製品スコープ"と呼ばれるものです。

 

個人開発していると、途中でアレもコレもと機能を付けたしたくなってきます。機能を足し始めると、工数が増え、完成が遠のきます。

 

個人開発なんだから別にいいじゃんと思うかもしれませんが、本当にその機能必要ですか?とりあえず最初に考えた機能で世に出して、必要になったら付けたしませんか?

 

要件定義を作っておくと、考えや工数のブレが抑えられます。ぜひ作ってみてください。

 

 

つぎに基本設計です。使用した設計書フォーマットは以下です。

 

 

基本設計のフォーマットで実際に役立ったのは、"ユーザーフロー"と"データベース設計"です。

 

個人開発を初めてやる場合、データモデルやインターフェースフロー、テスト計画なんてわかりません。ここで時間を費やすくらいなら、画面遷移をパパっと作って、コーディングし始めたほうがいいと思います。

 

しかし、"データベース設計"だけは考えておきましょう

 

"データベース設計"は正直かなり曲者です。今回わたしが作成したWebアプリは、"データベース"との戦いと言っても過言ではないです。それくらいデータベースに苦戦します。

 

データベースの基礎を学んで、設計しておきましょう。ちなみに開発途中でもデータベースの設計は変えられます。わたしは何度も変更し、そのたびに関係するソースコードを何度も変更するはめになりました。データベース許すまじです。

 

個人開発の流れは以上です。

 

 

はじめての個人開発で役立つツール6選

わたしは人生で初めて、ひとりでWebアプリを作りました。当然ですが、なにも参考にせずに作り上げたわけではなく、多くのツールに助けられました。

 

わたしが個人開発をした際に役立ったツールを6つ紹介します。

 

  1. Udemy
  2. ChatGPT
  3. Github
  4. YouTube
  5. IDE(VisualStudioCode,Pycharm)
  6. IaC(Terraform,Ansible)

 

1. Udemy

あとでChatGPTの話をしますが、ChatGPTだけでWebアプリを作ることは可能です。

 

ただし、プログラミング言語の基礎があっての話ですね。

 

Python?SQL?Git?みたいなレベルでは、無理だと思います。まずは個人開発する際に使用するプログラミング言語の基礎学習をしましょう。

 

そして、基礎学習にもってこいなのが、Udemyです。

 

Udemyで自分が学習したい言語を検索し、評価が高く、かつ評価者数が多い講座を一つやりきりましょう。わたしは今回の開発でPythonを選択しましたので、次の講座の基礎演習を3周しました。
https://www.udemy.com/course/python-beginner/

 

2. ChatGPT

つぎは"ChatGPT"です。AIチャットサービスの中で最も有名ですよね。

 

わからない、困ったときは全部ChatGPTに聞きましょう。解決しない場合もありますが、問題となる部分がつかめるので、その時初めて検索しましょう。

 

また、ChatGPTはコードも書いてくれます。そのままコピペするのもいいのですが、学習の一貫として自分の手で打ちましょう。コードの流れがつかめるようになります。

 

3. Github

GitHubはソースコードをホスティングするサービスです。Gitを使用しているので、バージョン管理ができます。

 

レンタルサーバやクラウドにデプロイする際にgit cloneするだけでソースコードをサーバに持ってこれるので、大変助かります。

 

4. YouTube

つづいては動画配信サービス"YouTube"です。当然ですが、ChatGPTやGoogle検索でもわからないことがあります。

 

そんなときはYouTubeです。

 

意外とYouTubeに問題解決につながる動画がアップロードされていることがあるんですよね。調べるときは英語で調べましょう。海外の動画は問題解決に役立つお宝の山です。

 

5. IDE(VisualStudioCode,Pycharm)

みなさんにはお気に入りのテキストエディタがあるかと思いますので、慣れたものを使うのがいいですね。一応わたしが使っているIDEツールを紹介します。

 

 

6. IaC(Terraform)

さいごはIaCツールの紹介です。個人開発はコードを書いて終わりではなく、サービスを世にリリースしたいですよね。

 

サービスを提供するためには、サーバが必要ですし、システムテストをする際に何度もデプロイするかと思います。AWSやGCP上にデプロイするとき、毎回マネコンでサーバを起動するのは手間です。

 

Terraformならたった一つのコマンド(terraform apply -auto-approve)で何度でもサーバを起動することができます。自動化できる部分は自動化して、コードに集中しましょう。

 

 

初めての個人開発における注意点3つ

はじめて個人開発をすると、おどろくほどたくさんの問題が出てきます。その中でも絶対に注意すべきポイント3つ紹介します。

 

  1. コスト
  2. セキュリティ
  3. スコープ

 

1. コスト

コスト管理は個人開発で地味に重要です。ローカルで開発しているときは、おそらくゼロ円ですよね。

 

しかし、テスト段階になって、AWSにサーバを立ててテストしてみたり、レンタルサーバの契約をしたりしはじめると、ちょこちょことお金がかかってきます

 

とくにクラウドサービスを使うと従量課金なので、なにもしてなくでもお金がかかります。注意しましょう。

 

2. セキュリティ

個人開発で一番重要なのがセキュリティです。ユーザー情報を登録するサービスの場合、個人情報の保護やパスワードのハッシュ化、サーバへの不正ログイン、DDOS攻撃、セキュリティに関しては考えるべきことが多くあります。

 

とくにユーザーの情報と、サーバの保護はしっかりやっておきましょう。

 

3. スコープ

3つめはスコープです。要件定義の際に話しました、"製品スコープ"のことですね。

 

繰り返しになりますが、まずは最初に考えた機能での完成を目指しましょう

 

ひとつ出来上がると、モチベーションが全然かわります。しかし、アレもコレもと機能を足して完成が遠のけば、結局なにもできずに途中でやめてしまうかもしれません。

 

最初に決めたスコープ内で、まずは一つ完成させましょう。

 

 

まとめ

インフラエンジニアのわたしは、個人開発をすることでたくさんの学びを得ました。

 

その中でも一番の学びは、"やればできる"です。

 

数カ月前までPythonについて全然しらなくて、関数やクラスなんてもってのほかでした。そんなわたしがPythonを使って、とりあえず動くものをリリースできたのです。

 

プログラミングや開発に興味がある方は、ぜひ始めてみましょう!やればできます!

 

 

↓ほかにも個人開発に役立つ記事を公開しています。ぜひ参考にしてみてください。

 

■【初学者向け】PCにPythonを学習するための環境を整える part1【Windows編】
https://cloud5.jp/saitou-python-install/

 

■【簡単】Pythonで始めるwebアプリ開発入門【Flask】
https://cloud5.jp/saitou-intro-flask/

 

■【初心者向け】Amazon EC2でRedisを使ってみる
https://cloud5.jp/saitou-redis-handson/

 

■【AWS】Terraformを使うための環境準備
https://cloud5.jp/saitou-terraform-start/

 

■【ubuntu】Let’s Encryptを使って無料でHTTPS通信を実現しよう【使い方】
https://cloud5.jp/saitou-letsencrypt-install/
 

モバイルバージョンを終了