G's ACADEMYから始まったアプリ開発と課題
G's ACADEMYを卒業して既に4年。その時登壇させていただいたGGAの直前に生まれた長男も4歳になり、ついこの前次男も生まれました。
G'sでプログラミングを学び、現在は社内向けのWebアプリを3本リリースし、現在も1本展開中です。
あの頃はPHPで書いていたのですが、今やC#がメイン。
もっとコードで実装できる機能や、表現力の幅を広げるために書籍やUdemyを買い漁り実践しては首を捻ったりしていました。
ですが、IT系企業でもない製造業の中で働くプログラマーは、ただコードを書いているだけでは業務の完結はしないのです。
クラウドを積極活用したい理由
アプリ開発は「作って終わり」ではありません。
これは1本目のデプロイから苦心している点ですが、作ったアプリが問題なく継続して稼働する場所を確保し、監視でき、トラブル対応をしていかなければなりません。
1本目の時は未知との遭遇的な難しさがあり、稼働するアプリが増えるごとに、発生するトラブル対応や、機能追加後やバグ修正後のデプロイ対応でじわじわと時間が削られていくようになりました。
少数の人員で運用を続けるには自動化技術(IaCやCI/CD)の取入れが急務と感じ、それ以外にも動機はあるのですが、クラウドの適切な活用による運用保守コストの削減を目指すようになります。
Ciscoでネットワークを学ぶという選択
私は普段愛用している言語がC#ということもあり、その延長戦でAzureにも興味がありました。
そこでAzureを色々と触り始めるのですが、なんともはっきりとはしないのですがモヤモヤを抱え続けることになります。
その原因がこれです。
192.168.0.1
172.16.0.1
10.0.0.1
そうです。
IPアドレスです。
それ以外にもFirewallなどのキーワードが出てくると、思考停止してしまっていることに気づいたのです。
ネットワーク関連の知識は必須という認識はもともとあったのですが、書籍を読んでOSI参照モデルの図を見ても、TCP/IPモデルの図を見ても、それ以上のイメージが発展せず、C++でネットワークプログラミングを実践しても、ただパケットをプロトコルに従って処理する以上のイメージが掴めませんでした。
そんな私がクラウド上で表現される構成図を見ても、
「なんだろう、見えない壁があってこれ以上先に進めない!」
という気持ちが解消されることはありませんでした。
そんな私がたどり着いた解決策がCiscoでした。
実はこのアドベントカレンダーを投稿する前にこんな記事を書いています。
この記事は、あるきっかけで知った研修に参加した際の体験談的なものです。
簡単に説明すると、Ciscoの機器が実機でおいてある教室で、実機にコマンドを打ちまくって色んなパターンのネットワーク環境を構築するものになっています。
研修参加者も情シス部門の方や、ネットワーク構築ベンダーの方がいたりと、アプリ開発者は珍しいパターンのようでした。
といっても最大8名の研修なので、特に気にならなかったです。
遠回りの価値
私の取り組みは一見「遠回り」に見えるかもしれません。
しかし、この経験から得たネットワーク技術の影響は大きかったです。
事実として、「抵抗感」がなくなりました。
クラウド上で登場するネットワークにはパブリックとプライベート、それに合わせてVPNで接続するか否かなどの選択肢があり、特にこの領域は社内向けアプリを提供する私にとっては避けては通れない領域になります。
AzureやAWSなどには資格試験があり、そこをきっかけに始める方法が主流だとは思います。
ですが中には私のような物好きな方もいらっしゃると思います。
特にG'sの現役生、卒業生は、こういった学び方が好きな方もきっといるはず!
私自身、業務で実践していく中で、アプリ開発はプログラミングを行うだけでなく、クラウド、ネットワーク、セキュリティといった分野を総合的に扱う「総合格闘技」のように感じるようになりました。
アプリの要件に見合ったちょうど良い設計を選べる力を身に着けたい。
単なる開発者ではなく、プロジェクト全体を俯瞰して最適解を導き出せるエンジニアになりたいという方には、こんな遠回りもたまにはいかがでしょうか?