使っている技術について
はじめに
本エントリーでは、弊社ITコンサル部の開発で使用している主な技術について、選択理由を中心に説明します。
・TypeScript
・React
・Amazon Web Service(以下AWS)
TypeScript
弊社ではメインのプログラム言語にTypeScriptを選択しています。その理由は、以下の通りです。
・ブラウザ・サーバで動作する。
・型システムを使える。
・AWSにおけるInfrastructure as Code(以下IaC)に使える。
補足 AWSにおいて、Serverless Frameworkを用いてLambdaをリリースするとき環境構築用のコードとして、TypeScriptを選択出来ます。TypeScriptを選択した際の利点は、環境構築用のコードにおいても型や文法チェックが働く点にあります。またJSONやYAMLのような設定ファイルと異なり、TypeScriptの文法に従っていれば、変数や関数の記載も可能な点も利点として挙げられます。
注、唐突に型システムやIaCなどの単語が出てきましたが、別エントリーなどで詳細を説明出来ればと思います。
React
Reactは、ざっくりとかいつまんで説明するとJavaScriptのオブジェクトを対応するhtmlのタグに変換するフレームワークです。
例えば
a--b: dataB
|-c
|-d: dataD
|-e: [f,g,h] ([]は配列)
のようなツリー構造のデータを
<tagA>
<tagB>
DATA_B
</tagB>
<tagC>
<tagD>
DATA_D
</tagD>
<tagE>
<tagF/>
<tagG/>
<tagH/>
</tagE>
</tagC>
</tagA>
のようにに変換する事が出来ます。
Reactの便利さは、htmlを変更したいときは対応するオブジェクトを変更すればそのままhtmlに反映する事が出来る点です。
これには以下のメリットがあります。
・データ構造の変更に関する実装とhtmlの描画に関する実装を分離する事が容易になります。その結果テストが非常に楽になります。
・データ構造の変更とhtmlの描画をある程度分離しているため、モジュール化が容易になり、再利用等をし易くなります。
AWS
弊社ではクラウドサービスとしてAWSを使っています。
当初はAWS(特にLambda)とGoogle Cloud Platfrom(GCP)(特にKubernetes)のどちらを選ぶか悩みましたが、後者、特にKubernetesは技術的な習得が少し大変そうなのと、その割には弊社で使う技術は比較的単純なWebサービスが多いので、ミドルウェアのメンテナンスも楽そうなLambdaを中心としたAWSのサービスを選びました。
Lambdaでは現在例えばnode.jsではバージョン12と14をサポートしていますが、カスタムランタイムという仕組みを使えばこれら以外のバージョンも使用できますし、必要であればDockerを使用することも出来ます。
またServerless FrameworkにおいてTypeScriptを用いてIaC(インフラの管理を設定ファイルやプログラムを通して行い、それらをコードで管理する事)も出来るので便利です。
まとめ
上に挙げた3つの技術(TypeScript・React・AWS)によりクライアント・サーバで動作するシステムのかなりの範囲をカバー出来ます。
このような技術の採用により、弊社のようなまだ開発者の人数も少ない組織でも、省力的に様々な案件への対応を可能としています。
以上、弊社で使用する技術についての説明でした。