エムティーアイ エンジニアブログ

株式会社エムティーアイのエンジニア達による技術ブログ

クリスマスも終わったことだし新卒一年目の私が入社してから触れた技術を振り返ってみる

こんにちは
クリスマスも終わっていよいよ年末ですね
どうも新卒1年目のエンジニア井上大樹です

「あぁ~今年ももう終わりだな~」
ということで最初で最後の新卒1年目を技術で振り返ってみたいと思います。

(すみません。気づいたら長くなっていました。)

MEANスタック

(私は今年の4月に入社したので3月までの内定者だったときに触れていた技術の話)

いまでも何かちゃちゃっと動かしたいときはNode.jsを使いますがこの時が一番使っていたような気がします。
実は内定者時代に超簡素なE-Learning Webサービスもどきを制作いたしまして、その時のサーバはHerokuNode.jsExpressを利用していました。
さらにそこにpassportというパッケージを利用してOAuth認証したGoogleアカウントと紐づけたユーザ情報をmongoDBに保存するという構成でAngularJSを用いたSPAとしておりました。

もうアルファベットだらけですね。。。

いわゆるMEANスタックで制作してみたかったので挑戦しましたが、 Heroku上でNode.jsのExpressサーバを立てるまでしかやったことがなかったので
OAuth認証ってそもそもどういう仕組みなの
とか
AngularJS使い方よくわかんねーそもそもJSのフレームワークってどゆこと
とかとか
いろいろ大変だったなぁといった感じでした。
(書いてて思いましたがこのこと記事にする。きっと←)

Electron

実は2月にひと月だけ入社前にアルバイトとして働いていました。
とは言ってもコードを書くことはなくマニュアルを作成するといった内容で最初は働き始めました。
これが実は実はマニュアルを作るためにダミーのデータを作らなければならず非常に面倒でした。
しかも毎日データを入れるようなシステムのマニュアルだったため次の日になればまたダミーデータを入れる作業の繰り返しでったので、エンジニアの性でしょうか、自動化したくてたまらなくなり自動でダミーデータを入力するプログラムを作成しました。
この時もNode.jsが大好きだったのでElectronを使ってほかの人も使えるようにアプリにしてみました。

この時苦労したのはそのシステムが持っているはずのHTTPのAPIに直接アクセスするような仕組みが整っていなかったことです。
幸いインターフェイスがWebだったのでテストツールで自動化するアプローチが可能でした。
その時使用したテストツールはSeleniumというものでユーザのブラウザに対する操作をプログラムから実行するというもので、文字通り今まで行っていた作業をそのまま自動化しElectronでアプリ化しました。

(作った後に知りましたがダミーデータの入力はデモとして見せるときに使えたりするのでなんだかんだ必要だったみたいです)

AWS

入社してひと月半くらいが経ち研修も一通り終わったころに
「AWSを使ったサーバレスアーキテクチャの構築を説明する研修資料を作成する」
という仕事がありました。
しかもこれが厄介なことにサーバレスだけじゃなくNoSQLデータベースも使用してフロントエンドには何かしらJSとCSSそれぞれフレームワーク入れて全部説明すると…
(いや盛り込みすぎでしょ)
それで最終的に落ち着いた構成としてはAPI Gateway経由でLambdaを呼び出しDynamoDBのデータにアクセスし、フロントはS3で静的にファイル提供を行いVue.jsSemanticUIを使用するという構成。
もちろん(?)デプロイにはGulpを使ってソースコードはGit管理でした。
技術モリモリな感じがたまらないですね。
私にとってVue.jsとかその時触って以来触ってないので懐かしい。。。

RxSwift

AWSにがっつり触れた後にはRxSwiftで開発しました。
趣味でですがObjective-CではiOS開発をしたことがありましたので「大丈夫っしょ!」ぐらいの軽い気持ちでプロジェクトに関わったのですが、これがびっくりSwiftの文法が全然違くて焦りました。
その上ただのSwiftではなくRxSwiftなのでSwiftの文法と同時に始めて触るRx系フレームワークの動きについても理解しなければならず大変難しかったです。
この時有効だったのがモブプログラミングでした。
これのおかげでだいぶ理解も進みました~先輩方ありがとうございます~♪
実はこのプロジェクトでもAWSにも触れていてAPI立てたりLambdaでサーバレス処理してみたりといろいろいじらせてもらいました。
このときAWSの構築にServerless Frameworkを使ってみたりAPIの仕様書にSwaggerを使ってみたりいろいろやっていました。

Azure

いやほんとコロコロいろんなとこに異動していまして、社内ツールをAzureで構築するといったことを行いました。
実際にシステムを構築することになるのは私の後任の担当者なので、ほとんど設計しか行わなかったのですが(これまたいいべんきょうになりました)
AzureのWeb Appsでフロントを提供しつつAPI Apps経由でLogic Appsを呼び出しOutlookやSQLデータベースにアクセスするような構成のものを作成しました。
Active Directoryと連携して社内の別のシステムと連動できるようにしたりしましたが、ログインできるだけでもうれしかったです…(笑)

Tensorflow

これが最後です。
社内ツールの設計が終わったあとは人工知能の開発を行いました。
今も同じように人工知能の開発をしています。
そもそも人工知能なんてろくに開発したことない状況で「やってみたい」とか言っちゃったもんですから配属決まってからが大忙しでした。
人工知能系のフレームワークは数が多く、フレームワーク同士がかかわっていることも多々あります。。。
そのため最初はなかなかわかりませんでしたが、そんな中でも触っていたのがTensorflowKeras, darknetなどです。
基本的に画像系の人工知能に関わっているのでPython(ほとんど初めて触る)やOpenCV(初めてだった)などはよく利用しています。
AWSでGPUを持つインスタンスを立ち上げていろいろ開発を行っていたのですが、毎回TeraTermなどでSSH接続してコマンドをパチパチ打っていたのですが、苦手だったので非常にフラストレーションが…
そこでWebUIを持つPython開発ツール(?)であるJupyterを導入したところ超感動しました。
WebでPythonデバッグできてファイルのアップロード/ダウンロードはおろかTerminalまで開けちゃうという優れもの。
私はJupyterを自動で起動するように設定し必要な時にはAWSのEC2インスタンスを立ち上げてアクセスするだけといった環境を構築しました。
もう手放せないです。。。

以上が私の今年1年間でした! (こんなの誰が読みたいんだろう)

来年もいろんな技術に触れるぞーーー