自己紹介的なポートフォリオ的な
# はじめに
ご覧いただきありがとうございます。クソ下手くそな文章ですが最後までお付き合いください…
is_ryo と申します。今年で27歳になりました。
今は京都のIT企業でIoTチームの中で主にAWS上に構築するアーキテクチャの設計・構築や、チームで開発しているWebアプリケーションの開発・管理を担当していて、アプリケーションエンジニアとして仕事としています。
このブログを書いている理由は、転職も含めてこれからのキャリアを考える上で、今までの自分が何をしてきたのかこれから何をしたいのかなどをまとめるために書きました。
また Qiita を見ていただければ、ある程度僕が何をやっているのか分かるかもしれないです。
# スキルセット
・ AWS
使い始めて4年程度。好きなサービスは Lambda と DynamoDB。
・ HTML / CSS / JavaScript ( Pug / SASS(Scss) / TypeScript )
Webアプリケーションで使ってます。書く時は HTML / CSS / JavaScript ではなく Pug / Scss / TypeScriptで書いてます。もう型のない世界には戻れない。
・ Node.js
使い始めて3年程度。サーバサイドの言語として使っています。また Lambda のランタイム言語としてもよく使っています。JS のまま書いていたり TS で書いたりしています。
・ Vue.js
使い始めて1年半程度。Webアプリケーションのフレームワークとして採用しています。Vue を書くときも Pug / Scss / TypeScript で書いています。最初は趣味で書いていたのですが、丁度Webアプリケーションのリプレイスしようっていう話が出てきたので導入しました。
・ Python
Lambdaで使ったり、IoTシステムで使うGWの中で使ったりしています。ただほんとにチョットカケルってレベル。
・SORACOM
IoTデバイスからの通信をセキュアしてくれるサービス。AWS へのクレデンシャルをデバイス側に持たせなくて済むので基本的に使っています。
# コミュニティ活動
Vue のコミュニティ v-kansai や TypeScript のコミュニティ kansai.ts のオーガナイザーをやっています。またJAWS関係のイベントだったり VueFes などのスタッフをやったりしています。
# 今やってること / 今までやってきたこと
## Webアプリケーション開発
ElasticBeanstalk を使ってWebアプリケーションを構築。サーバサイドは Node.js で書いています。DynamoDB に溜まったデバイスのデータを WebSocket 経由で取得して、クライアントサイドでグラフ描画などして可視化しています。
ほかには jQuery で書かれていた自社アプリケーションを Vue へリプレイスして、CloudFront + S3 や AmplifyConsole を使ってサーバレスでホスティングしています。DBへのアクセスは基本的に API 経由で行うようにしているので、APIGateway + Lambda を構築して、そこに処理を書いています。また部分的に Amplify JavaScript F/W で AppSync を使って GraphQL でアクセスしている部分もあります。
## IoT デバイス
センサーからゲートウェイに収集されたデータを Python や Fluentd 、 SORACOM を使ってクラウドへ送信するロジックを書いていました。最近はデバイスがクラウドにデータを送信してきたところから後ろのロジックを担当しているので、今はほとんどやっていないです。
## IoT デバイスからの I/F 設計、クラウド側のアーキテクチャ設計・構築
IoTデバイスから送信されてくるデータの形式を設計したり、それに合わせた AWS のアーキテクチャを設計、構築しています。
デバイスからのプロトコルはHTTPだったりMQTTだったりします。MQTTは双方向でメッセージをやり取りできるので便利。
主な構成としては KinesisDataStreams → Lambda → DynamoDB だったり、IoT Core → ( Lambda → ) DynamoDB といった構成が多いです。
どうやったらデータの欠損を少なくすることができるのか、データの可視化をするためにデータをどう加工したらいいのかなどを考えてアーキテクチャを設計しています。
## AWS構成管理ツール導入
よく利用するアーキテクチャについてテンプレート化して構築のための工数を削減するために、ServerlessFramework や AWS CDK を導入しました。特に最近は AWS CDK にハマっていて、AWS CDK の何がいいかと言うと 、TypeScript から CloudFormation のテンプレートを生成してくれるところです。CloufFormation の独特なJSONだったりYAMLの書き方を覚えなくてもいいのがすごく嬉しい。このスライドですごく簡単にまとめてますので良かったら見てください。
# これからやりたいこと
Vue も TypeScript も AWS もできるっていう環境だったらなんでもやります。( そんな環境あるんか……… )
技術的にはフロントエンドエンジニアやアプリケーションエンジニアとしてキャリアを積んでいきたいです。ただ現状だと自分しか興味のあるエンジニアがいないので、「レベルの低い環境でトップエンジニア」になってしまっていて成長限界を感じているので、今の環境を変えてレベルアップをしたいと思っています。
あと5-10人くらいのチームを組むという環境でも仕事をしたいです。今は基本的に個人プレーが多いので、チームを組んで役割分担をして作業したり、役割を調整したりするなどの経験がほとんどないからです。
逆にスタートアップなどの少人数で泥臭くやっていくぞ!みたいな環境も経験してみたいと思ってます。
# 連絡はこちらへ
最後まで読んでいただきありがとうございます。こんなへっぽこエンジニアでも声をかけていただけるのであれば、コメントとか Twitter で DM ください。