2020年もあと数日で終わりということで, この機会に2020年学んだこと・使った技術をまとめておきたいと思います.
2020年は研究室では自然言語処理の勉強・研究をしました. 仕事ではFlutter, Firebase, AWSを使用しました. また11, 12月には個人的にDDD(ドメイン駆動設計)の本を何冊か読みました.
大学4年になり自然言語処理系の研究室に配属されたので, 自然言語処理を学ぶ事になりました.
2020年の前半は具体的には研究室の勉強会で自然言語処理100本ノックと, 「自然言語処理のための機械学習入門」という本の勉強をしました. 100本ノックは正規表現によるテキストの抽出, 形態素解析, 機械学習によるテキスト分類などを実装するという内容で勉強になったという感想でした. 本の方は機械学習の理論中心の内容でした. 詳しい内容はあまり覚えてません...
2020年の後半はAttention, Transfomerといった自然言語処理の深層学習でよく使われるネットワーク構造について理解したり, 深層学習のためのフレームワークPytorchを使ってニューラルネットワークを作成して研究を行いました.
せっかく自然言語処理の技術を身に着けたので, 2021年は機会があれば仕事で利用したいと思っています.
FlutterはAndroidとiOSのアプリを単一のコードで作成する事ができるフレームワークです. Reactのような宣言型UIを採用していて, UI中で使用されている変数が変更されると自動でUIが更新されます.
使用してみた感じ, プラットフォーム依存の機能を使用しない単純なアプリではうまく機能するなという印象でした.
どこまで複雑なUIを作れるか, カメラなどのプラットフォーム依存の機能に対して対応できるかなど調査できていない部分もありますが, ユースケースによっては十分Flutterはアプリ開発の選択肢になると思います. 2021年もFlutterに注目していきます.
Flutterアプリのバックエンドとして, Firestore, Cloud Function, Cloud Messagingを使いました. FlutterにはFirebaseSDKがしっかり用意されていたので, 簡単に使うことができました.
Firestoreの読み取り回数を節約するためのデータの持ち方を工夫したのですが, 10万回あたり0.038ドル(約4円)と安いので, コードを複雑にしてまで節約する必要もないかなという気もしています. この辺は値段とコードの複雑さのトレードオフになると思うので, よく検討する必要があるかと思います.
Cloud Functionは類似サービスのAWS Lambdaと比べて簡単に外部ライブラリが導入できたりして, 簡単だと感じました.
全体的にFirebaseは簡単に使えるところがいいです.
WebサービスのバックエンドをAWSを使用して作りました. インフラを構築するためにVPC, Lambda, API Gateway, S3などの使い方を一通り勉強しました. はじめはこれらの設定をコンソールでポチポチ作っていたのですが, めんどくさくなってCDKを利用してコマンド1つで一連の環境を構築&削除できるようにしました.
Firebase以外のクラウドの利用が初めてだったので, リソースが抽象化されて自由に組み合わせられることが面白いしすごいと思いました.
今年は自然言語処理, Flutter, Cloud Function, AWS Lambdaなどで様々な環境でコードを書く機会があったのですが, いまいち設計がうまくないという自覚がありました.
そこで設計について勉強しようと思い, ドメイン駆動設計の本を買ったり, ブログを読んだりしました. 本に関しては「ドメイン駆動設計入門」と「実践ドメイン駆動設計」を読みました.
DDDを学んでみて, 「DBのテーブル中心の設計」, 「必要とする機能に対して手続きなコーディング」, 「全然振る舞いを持ってないオブジェクト」のようにドメイン駆動設計の考え方と異なるコードを書いていた事に気が付きました.
まだDDDへの理解は浅いと思うので, プログラムを書きつつ, DDDを実践しつつという感じで理解を深めていきたいです.
2020年はいろんな技術に触れて結構成長できたんじゃないかなと思います. 様々なプログラムを書くことで「単純にプログラムを書いて作れる」というレベルから, 「設計を考えて作る」というレベルにレベルアップした気がします.
ソフトウェアの設計に興味が出てきたので, 来年はそのへんのことを学んでいこうかななんて考えてます. 来年もがんばるぞ!!
ソフトウェアエンジニア。趣味は競馬、写真、ゲーム。
お問い合わせはTwitterのDMでお願いします。