はじめに
COVID-19の影響でITエンジニアの方もリモートワークをされている方も多いかと思います。日常で利用するツールやデバイス、開発環境やフレームワークについてまとめます。分類の分け方があまり良くないので、わかりにくいかもしれませんが、少しでも参考になればと思います。
また、今回それぞれの内容について詳細な解説をしてませんので、もし興味がある方がいらっしゃいましたら、コメント頂ければできる限り回答させて頂きます。
※原則macOS環境を想定しています。また、macOS Big Sur、M1搭載Macでは検証していませんので、動作保証は出来出来かねますのでご了承ください。
開発環境系
共通
Homebrew
公式リンク:Homebrew
料金:無料
Macで開発する場合、まずHomebrewを入れるべし、というくらい有名。以下で説明するツールのいくつかについてはHomebrew経由で入れるので、必ず入れましょう。
iTerm2
公式リンク:iTerm2
料金:無料
Macデフォルトのターミナルでも基本的なことはできるが、カスタマイズ性が少し弱い。iTerm2の場合は以下のようなメリットがあるので、とりあえずインストールすることをお勧めします。
- ステータスバーをカスタマイズして、CPU使用率などを表示できる
- 背景に画像を設定できる←ココ重要
- 背景透過設定ができる
XCode Command Line Tools
公式リンク:??
料金:無料
コンパイラ等が含まれるため、Pythonのインストール時などに必要になります(恐らくですが)ので、とりあえずインストールしましょう。インストール方法は2種類存在します。
方法1:
下記コマンドを実行する
$ xcode-select --install
方法2:
Apple Developerからダウンロードする。その場合は、Apple Developerアカウント(無料で取得可能)が必要です。
Visual Studio Code(VSCode)
公式リンク:Visual Studio Code
料金:無料
開発用のエディタです。拡張機能が豊富で非常に使いやすいので、とりあえずインストールしましょう。動作も比較的軽いです。
おススメの拡張機能を載せます。
-
Apache Velocity
- .vtlファイル(AppSyncで利用)のシンタックスハイライトを有効にするために利用
-
Apollo GraphQL
- .gqlファイル(GraphQL)のシンタックスハイライトを有効にするために利用
-
Auto Close Tag
- HTMLの閉じタグを自動で挿入
-
Auto Complete Tag
- Auto Close TagとAuto Rename Tagの両方の機能が入る
-
Auto Rename Tag
- HTMLの対応するタグが自動で修正される
-
AWS Toolkit
- AWSと接続することでAWSリソースを操作することができる
- AWS Toolkit for Visual Studio Code
-
Better TOML
- .toml(Poetryの設定ファイル)ファイルのシンタックスハイライトを有効にするために利用
-
Bracket Pair Colorizer
- 中括弧の対応を分かりやすくする(JSなどで利用)
-
C/C++
- VSCodeでC++のコードを書くために利用
-
Code Spell Checker
- コード内のタイポ防止用
-
Debugger for Chrome
- フロントエンド開発時に、コードをbreakpointで止めてデバッグすることができる
-
Docker
- DockerをVSCodeから操作できる
-
Draw.io Integration
- .drawioファイルをVSCodeで編集できる
-
EditorConfig for VS Code
- editorconfigファイルでワークスペースの設定を上書きする
-
Error Lens
- エラー表示を見やすくする
-
ESLint
- VSCodeでESLintを使えるようにする
-
Git History
- Gitのファイル単位の履歴を見やすくする
- 特定のファイルについて、過去のコミットとの差分を確認する
-
GitLens
- 行単位でのgit blameの結果を確認できる
-
Headwind
- Tailwind CSSのタグの順番をソートする
-
indent-rainbow
- インデント表示を見やすくする
-
Jupyter
- VSCodeでJupyter notebookを使うため
- 最新バージョンでは無くてもいいかもしれません
-
Kite AI Code AutoComplete
- kiteをVSCodeで利用するため
-
Live Share
- 多人数でリアルタイムにコードを共有するため
-
Markdown All in One
- VSCodeでMarkdownファイルを編集するため
-
npm
- package.jsonの依存関係チェック
- ホバーしたらモジュールの最新バージョンが分かる(この拡張機能の機能なのか微妙、、、)
-
npm Intellisense
- node_modules内のモジュールを補完してくれる
-
Path Intellisense
- ファイルパスを自動補完してくれる
-
Prettier - Code formatter
- コードのフォーマッター
-
Project Manager
- ワークスペース単位で登録することで、すぐに開くことができる
-
Pylance
- Python用の言語サーバー(コードを静的解析しシンタックスハイライトなどを提供)
-
Python
- VSCodeでPythonを書くために利用
-
Python Docstring Generator
- Pythonのdocstringテンプレートを作成する
- Remote Development
-
Swagger Viewer
- Swaggerファイルのプレビューを表示する
-
Tailwind CSS IntelliSense
- Tailwind CSSのクラスを補完して表示する
-
TODO Highlight
- TODOコメントを強調表示する
-
Todo Tree
- TODOコメントを一覧表示する
-
Vetur
- Vue.js開発用
-
Visual Studio IntelliCode
- コード補完を強化する
-
vscode-icons
- アイコンを分かりやすくする
-
Vue Peek
- Vue.jsのコンポーネントの定義元に飛べるようにする
-
Vue VSCode Snippets
- Vue.jsの開発高速化のため
-
YAML
- VSCodeで.ymlファイルを扱うため
SourceTree
公式リンク:SourceTree
料金:無料(アカウント登録必要)
GitのGUIクライアントです。CLIで利用することもできますが、個人的にはdiffはGUIで見たい派なので、SourceTreeはおススメです。CLIの場合はtigなどが有名ですし、tigは結構使いやすいのでお好みで。
Node.js
公式リンク:Node.js
料金:無料
フロントエンド開発のベースとなる環境(言語?)です。フロントエンド開発をする場合は、とりあえずインストールしましょう。
インストールする場合、直接インストールするのではなく、バージョン管理ツールを経由してインストールすることをお勧めします。
バージョン管理ツールは以下が有名だと思います。
Python
公式リンク:Python
料金:無料
プログラミング言語の中の一つです。AWS Lambdaでの開発や簡単なツール作成、機械学習等で利用します。Pythonについても直接インストールするのではなく、パッケージマネージャ経由でインストールすることをお勧めします。パッケージマネージャは個人的にはpyenvがおすすめす。
Pythonでの開発で利用頻度の高いツールを紹介します(あくまで個人的にですが)。
-
Poetry
- Pythonにおけるパッケージ管理ツール
-
Pylance(Pyright)
- Pythonの言語解析ツール、型チェックツール
-
black
- コードフォーマッタ
-
pytest
- テストツール
-
Boto3
- AWS SDK for Python
-
Requests
- HTTPライブラリ
-
opencv-python
- 画像処理用ライブラリ
- OpenCVをpipでインストールできるようにしたもの
- OpenCV公式がだしているわけではない(たぶん)
-
Pillow
- 画像処理ライブラリ
- opencv-pythonよりもサイズが小さいので、Pillowの方が個人的にはいいと思っている
-
NumPy
- 数値計算用ライブラリ
-
pandas
- データ分析ライブラリ
-
Jupyter
- Jupyter Notebookはコードをインタラクティブに実行することができる
-
Matplotlib
- データ可視化ライブラリ
-
seaborn
- データ可視化ライブラリ
-
TensorFlow
- 機械学習ライブラリ
-
scikit-learn
- 機械学習ライブラリ
Docker Desktop
公式リンク:Install Docker Desktop on Mac
料金:無料
Dockerコンテナを動かすための基盤です。テストをコンテナで動かす、DynamoDB Localを起動するなどで利用することも多いかと思います。
Parallels Desktop
公式リンク:Parallels Desktop
料金:約1万円/年
Dockerはコンテナ型仮想化を実現する技術ですが、Parallels Desktopはハイパーバイザ型仮想化を実現します。簡単に言うと、Macの中でWindowsを立ち上げることができます。MacとWindowsを併用する必要がある人には、値段は高いですがお勧めできるツールです。
個人的に気に入っている機能
- 比較的動作が軽い
- OSのインストールが簡単
- メジャーなOSは仮想マシンの作成がめちゃ簡単
- リソースの再利用ができる
- HDD領域が動的に変更されるようになっているので、必要な領域しか利用しない
- ワンクリックで領域の再利用が可能
- ホストOSとのディレクトリ共有の設定が簡単
- ホストOSとのコピー、ペーストの設定が簡単
- Coherenceモードが便利
- Parallels Toolboxのクリーンドライブが便利
Wireshark
公式リンク:Wireshark
料金:無料
パケットキャプチャツールです。ネットワーク専門ではありませんが、デバイスのデータ通信の様子をpcapファイルとしてダンプして、そのファイルをMacで見るときなどに利用します。
kite
公式リンク:kite
料金:無料
コード補完ツールです。VSCodeと連携して使います。
メリットは下記ページが分かりやすいので参照ください。
Arduino IDE
公式リンク:Arduino IDE
料金:無料
マイコンへのプログラムを流し込むために使います。ビルド、シリアルデバッグ、データ送信までを一貫して行えるのでとても使いやすいです。
フロントエンド
HTML,CSS,JavaScript(JS)
フロントエンド技術の基本の基の部分です。
TypeScript(TS)
公式リンク:TypeScript
いわゆるaltJSのくくりですが、最近はTypeScript一強だと思います。ほとんどのフロントエンドのプロジェクトが生のJSではなくTSでコードを書いているはず。学習難易度は比較的高めですが、個人的にはとてもお勧めできる言語です。
Vue.js
公式リンク:Vue.js
ユーザーインターフェイスを構築するためのプログレッシブフレームワークです。フロントエンドのデータをリアクティブに表示する部分が自動的に反映されるので、以前の様にjQueryを使ってデータの書き換えを明示的に行うことが不要になります。
Nuxt.js
公式リンク:Nuxt.js
Vue.jsのラッパー?としてのフレームワークです(日本語が無茶苦茶、、、)。Vue.js単体で利用するよりも便利な機能がたくさんあります。
個人的に気に入ってる機能を紹介します。
- Create Nuxt Appが便利
- UI Framework(Vuetifyなど)を自動で設定してくれる
- メタタグとSEOの設定が可能
- Prefech機能がある
- 静的サイトジェネレートができる
- full static exportがNuxt 2.13から利用可能、nuxt exportがNuxt 2.14から利用可能
- Jamstack構成がやりやすい
- モジュールの追加が簡単
- PostCSSとか
-
nuxt/contentが便利
- 開発モードでのビックリするほど高速なホットリロード
- Markdownの中でVueコンポーネントを利用できます
- 全文検索
- 静的サイト生成(SSG)のサポート
nuxt generate
- 強力なクエリビルダーAPI (MongoDBライク)
- PrismJSを利用した、Markdown内コードブロックのシンタックスハイライト
- 目次の自動生成
- Markdown, CSV, YAML, JSON(5)、XMLを適切に処理します
- hooksによる拡張
React
公式リンク:React
詳しくは知りません、、、
API呼び出し
- RESTful API
- HTTPメソッド(GETなど)を使ってデータのやり取りを実施
- 現在も主流で利用されている
-
GraphQL
- HTTPメソッドを利用してデータのやりとりを実施するが、必要な情報だけを取得したり、型で取得できるデータを絞ったりできる
- RESTの場合、複数のエンドポイントに対してデータを要求する必要がある場合でも、GraphQLの場合は同じエンドポイントに対して1回の呼び出しで済む場合がある
- BFF(Backends For Frontends)の役割としても利用される
- AWS AppSyncと連携してSubscription処理を実現することが可能
UIフレームワーク
-
Vuetify
- リッチなUIコンポーネントがたくさんある
- Vuetify自体の学習が必要
-
Tailwind CSS
- ユーティティファーストなライブラリ
- 自由度が高く使いやすい
- 原則CSSプロパティと一対一対応しているので、CSSの知識があればそこまで学習コストは高くない
- VueTailwindなどを使えば、コンポーネントを自作しなくてもいい
-
chakra-ui/vue
- Vuetifyよりもコンポーネントを意識した設計になっているライブラリ
- 個人的にはVuetifyは結構ブラックボックス的なイメージがある
リンター、フォーマッター
テストツール
-
Jest
- テストツール
- 正直ほかのツールを使ったことがないけれど、このツールであまり不満を感じたことがない(というよりも使いこなせていない)
ホスティング環境
-
AWS Amplify Console
- AWS内で完結するので、AWS CodeCommitとは相性が良い
- フックの設定や、ビルドスクリプトのカスタマイズなど基本的な機能はある
-
Netlify
- Githubと連携することで自動でデプロイできる
-
Vercel(旧Zeit Now)
- 名前が変わってからそこまでちゃんと使ったことがないけど、nowの時代はゼロコンフィグレーションということで、設定なしでnowコマンドをたたくだけでデプロイできる優れものでした
-
Surge
- surgeコマンドでデプロイして、エンドポイントの払い出しまで可能
- Webのダッシュボードなどはないが、シンプルで個人利用とかであれば十分利用できる
Stoplight
公式リンク:Stoplight
料金:無料
OpenAPI用のエディター。自前でYAMLファイルを書く必要がないので、OpenAPIを書くハードルは比較的下がると思う。UIもきれいなので普通に使えます。
Insomnia Core
公式リンク:Insomnia Core
料金:無料
いわゆるAPIクライアントです。RESTとGraphQLの両方に対応しています。
バックエンド
Amazon Web Services(AWS)
公式リンク:Amazon Web Services
料金:従量課金
便利なサービスがたくさんあります。他のクラウドサービスをしっかり使ったことがないのですが、基本的には不自由しません。
AWS Command Line Interface(AWS CLI)
公式リンク:AWS Command Line Interface
料金:無料
コマンドラインからAWS環境を触ることができるサービス。AWSはWEBマネジメントコンソールから設定が変更できない項目などがあるので、その場合はAWS CLIを使います。
AWS Cloud Development Kit (AWS CDK)
公式リンク:AWS Cloud Development Kit
料金:無料
いわゆるInfrastructure as Codeを実現するためのツール。実際にはAWS CloudFormationのテンプレートを生成するためのツールだが、TypeScriptなどのプログラミング言語を利用してテンプレートの作成が可能。他にはTerraformやserverless frameworkなどがあるが、AWS CDKはAWS公式がだしているツール。
AWS Vault
公式リンク:AWS Vault
料金:無料
AWS CLI等のツールを利用する場合、認証情報をAWSから払い出して利用する必要があります。ただ、その認証情報が漏洩するととんでもないことになるので、IAMの権限にMFAログイン済みでないと操作できない様な権限を付与します。AWS Vaultを使うと、コマンドラインでのMFAログイン操作が簡単に出来ます。
アプリ開発
Android Studio
公式リンク:Android Studio
料金:無料
Androidアプリ開発するのであれば、まずは入れましょう。
XCode
公式リンク:XCode
料金:無料
Apple端末のアプリを開発するのであれば、まずは入れましょう。
Android File Transfer
公式リンク:Android File Transfer
料金:無料
実機アプリでデバッグする際に、画面のスクリーンショットなどをPCと共有する際に、重宝します。簡単にAndroid内のファイルを参照したり、Android側にファイルを送ったりできます。
Apple Configurator 2
公式リンク:Apple Configurator 2
料金:無料
iOSアプリの開発はXcodeでできますが、作成済みのipaファイルのインストールはXCodeではできません。Apple Configurator 2を使うとipaファイルからアプリのインストール、iOSデバイスの画面ミラーリングなどができます。
日常アプリ系
Googleアカウント
公式リンク:Google Account
料金:無料
Google Documentやスプレッドシート、スライドはとても便利です。
Google Chrome
公式リンク:Google Chrome
料金:無料
Webブラウザです。普段利用と開発での利用の両方で使います。
おススメの拡張機能を以下に紹介します。
-
Vue.js devtools
- Vue.jsのデバッグには必須のツールです
-
Raindrop.io
- Raindrop.ioと連携するためのツール
- ブックマークの登録を簡単に出来る
-
Zoom Scheduler
- Googleカレンダーで予定を入れる際に、一緒にZoomミーティングを作成してくれる
Firefox
公式リンク:Firefox
料金:無料
Webブラウザです。フロントエンド開発では複数のブラウザでの動作確認をするために入れてます。Linuxの場合は、普段のブラウザがFirefoxの人も多いかもしれません。
Raindrop.io
公式リンク:Raindrop.io
料金:無料
ブックマーク管理アプリです。
Chromeの拡張機能と連携すると便利で使いやすいです。ブラウザとは独立しているので、複数のブラウザやアカウントを横断してブックマークを管理できるのでおススメです。
Microsoft 365
公式リンク:Microsoft 365
料金:12,984/年
WordやExcelは仕事では必須かもしれません。個人利用ではあまり必要はなくなってきている気もしますが、、、
1Password
公式リンク:1Password
料金:約$3/月
パスワード管理ツール。特に不自由に思ったことはないです。
Slack
公式リンク:Slack
料金:無料
チャットツールです。普通に便利です。
Zoom
公式リンク:Zoom
料金:無料
ビデオ会議ツールです。バーチャル背景機能、ブレークアウトセッション機能など便利な機能がたくさんあるので、便利です。
Discord
公式リンク:Discord
料金:無料
チャットツールです。Steamのゲームなどをしながら、配信やボイスチャットをすることができます。個人的には動作が軽いので、ずっとつなぎっぱなしでもPCの負荷が上がりにくいので、テレワークでもたくさん利用されているようです。
Fantastical
公式リンク:Fantastical
料金:408円/月
Fantastical2の時は買い切りだったのですが、最近サブスクになったようです。カレンダーアプリとしてはUIがきれいでとても使いやすいです。
BetterTouchTool
公式リンク:BetterTouchTool
料金:$8.5/2年ライセンス
キーのカスタマイズ用です。すべてのアプリでemacsキーバインドを使えるように設定していたりなど、細かなカスタマイズができます。
Yoink
公式リンク:Yoink
料金:980円
ドラッグアンドドロップの一時保存ができるアプリです。スクリーンショットなどを貼り付ける際に、一時保存できるので便利です。
Alfred
公式リンク:Alfred
料金:無料(Powerpackは有料)
いわゆるランチャーアプリです。アプリを簡単に起動できる、コピーペーストの履歴などを呼び出したり、ブラウザの検索、ブックマークを開いたりできます。
Snagit
公式リンク:Snagit
料金:5,722円
キャプチャソフトですが動画も撮れますし画像加工もできます。ブラウザのスクロールキャプチャもできます。有料ですが、キャプチャアプリとしては一番使いやすいと思ってます。
日常デバイス系
ディスプレイ
ノートPCの場合は、ディスプレイは2台あると便利です。ディスプレイも好みだと思いますが、参考までに私が所有しているディスプレイを載せます。
キーボード
複数のディスプレイをつなげている場合、PCのキーボードだと姿勢がまっすぐ向かないので、外部キーボードを使う方がいいと思います。
私はAppleのキーボード使ってます。
マウス
個人的にはマウス派なのでマウス使ってます。私が使ってるのは以下のマウスです。
PCスタンド
開発しているとDocker起動時やアプリのビルド時に結構PCのファンが回るので、PCスタンドはあるといいのかなと思います。ちなみに、私が持っているのは下記です。
空気清浄機、加湿器
部屋で仕事することが増えたので、空気清浄機と加湿器はあるといいのかなと。
龍角散のど飴
長時間話すとのどが痛くなるので、定期的に龍角散のど飴を摂取しないと、、、、
ウエットティッシュ
個人的には毎日マウスとキーボードの手入れを実施するのですが、以下の商品はめちゃおススメです。
通話デバイス
長時間の会議などでイヤホンの電源が切れた経験はありませんか?Anker PowerConfをPCと有線でつなげれば、電源が切れる心配もないし、電波を気にする必要もないし、音声つなぎっぱなしでも対応できるのでおススメです。
ウェブカメラ
Webカメラは何でもいい気がするのですが、以下のカメラは画質がいいのでおススメです。
最後に
結構長くなってしまった。他にもデバイスやツールはありますが、今回はこの辺で。リモートワークでもできる限りのパフォーマンスを出していきたい今日この頃です。