2019年も折り返し地点を過ぎてしまいましたね。
技術関連の記事を月に1件は書くと言っていましたが、そもそも記事自体を月に1件しか書けていないという体たらくですが、生温かく見守っていただけると嬉しいです。

さて、今回は特定の技術というより、2019年前半(1~6月)に新しく学んだ技術について書いてみようと思います。

Firebase

先日リリースした「Waaru (割り勘した情報を共有するサービス)」で利用しました。

https://twitter.com/kzkamago0721/status/1133973926298525696

ソースコードはこちらにアップしておりますので、興味のある方はご確認ください。

とにかく簡単にリリースでき、基本的には無料というのが魅力的でした。
以下は Firestore にあるデータを JavaScript (ES6) でドキュメントを更新する場合の記述です。

import firebase from "firebase/app";
import "firebase/firestore";

const id = '...' // ドキュメントの ID

firebase
  .firestore()
  .collection("events")
  .doc(id)
  .update({
    name: 'テスト',
    date: '2019-07-01',
  })
  .then(() => alert("更新しました"));

また、CLI ツールがあるので、各種設定や Hosting へのデプロイも手間がかからず行うことができました。
AWS や GCP などのパブリッククラウドもそうですが、本当に簡単にサービスがリリースできるようになったなという印象です。

Vuetify, Angular Material

前者は Vue.js 用の、後者は Angular 用の UI フレームワークです。
前述の Waaru でも Vuetify を利用していますが、その恩恵としてプロジェクト内で CSS をほとんど書いていません。
アイコン風のボタンとか、ヘッダ固定のテーブルのようなよく使うレイアウトが簡単に利用できるようになっています。
以下は所感です。

メリット

  • 一から CSS を作成せずともモダンな UI が用意できる
  • コンポーネントベースで利用できる

デメリット

  • タグや属性が大抵フレームワーク独自のものなので、学習コストがかかる
  • フレームワークに則らないトリッキーな実装やレイアウトをする際に面倒になる

Ansible

あるクライアントとの案件で利用しました。
前述の Firebase 同様、前から気になってはいたので、サーバ構築をする際に思い切って提案しました。
リポジトリに設定ファイルを含めることができるので、ユーザや環境依存にならないというのが大きなメリットですね。
また、他の構成管理ツールと異なり、構築先のサーバにエージェントをインストールする必要がないという点も魅力的でした。
サーバ上で必要なパッケージは大抵 role が提供されているので、それらを組み合わせて宣言的にセットアップできるというのもとても便利だと感じました。

role の例

Azure Storage

とある案件で、ユーザがアップロードしたファイルの配置先として利用しました。
AWS の S3 は使ったことがありましたが、Azure Storage を本格的に使うのは今回が初めてでした。
サーバサイドは Django を使ったのですが、細かい調整は必要なものの、基本的には以下を実施したぐらいで利用できるようになりました。

パッケージをインストール

$ pipenv install django-storages azure

settings.py に設定を追加

# Azure Storage のファイルを扱う際の設定
DEFAULT_FILE_STORAGE = 'storages.backends.azure_storage.AzureStorage'
AZURE_ACCOUNT_NAME = os.environ.get('AZURE_ACCOUNT_NAME')
AZURE_ACCOUNT_KEY = os.environ.get('AZURE_ACCOUNT_KEY')
AZURE_CONTAINER = 'container-name'

Azure Storage Explorer を使っての確認作業もかなりスムーズでした。

他にも ECS や CloudFlare など少し触ってみたものもありました。
独立しても新しい技術に関わる機会は意外と多いので、これからも好奇心を大事に成長していければと思います。