早めに学ぶほど爆速成長しそうなツール


# あらすじ

ある程度知見がたまってきたのでアウトプットします。

７年前の自分が見たら「お目目がキラキラする」ツールをまとめました。

# AWS,GCP,Azure

クラウドコンピューティングの３強です。
現代のエンジニアはこれが使えて当たり前といっても過言ではありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/694e1572-76f9-99f2-e41b-d323a95c854b.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/1061482a-b295-8edf-fea8-0b128df9f7d7.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/b2ff5ef0-ff10-cdeb-e6f7-7d887ff63859.png)

現実世界でリアルの機材を購入するのと比べてたくさんサボれます。
現在人がクラウドコンピューティングでサクッと用意するものを、
お家や企業内のオンプレミスで用意しようとしたら、お金も時間も場所も必要です。
サボリーマンにはなくてはならないツールですね。

クラウドコンピューティングの登場により、お金がない学生たちや、
駆け出しフリーランスなどにも優しい世の中になりました。
このハードル低下により、門戸が広がったのではないでしょうか。

# モジュールバンドラー

## Webpack

https://webpack.js.org/
名前の通りWeb系のツールです。
プロジェクトが必要とするすべての静的モジュールをバンドルします。
C系の言語でいうコンパイラに近いものです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/e607847a-1c92-5aa7-c1fd-121932e16a41.png)


jsモジュールをはじめ、Sassや、jpegなどでさえバンドルできてしまいます。
そのために、webpackでは、

- angular, react, vue
- sass, less
- pug
- gulp
- browsify
- typescript, babel, coffeescript
- eslint

など様々なものを[ローダー](https://webpack.js.org/loaders/)モジュールとして扱うことができます。
もはや何でもありです。
そういう意味で、他の様々なツールの頂点に君臨します。

1ファイルにバンドルできるので、
ユーザーがページを読み込むときのファイルごとのオーバヘッドを減らせます。
Webの高速化には必須です。

このwebpackにより、いろんなツールを統合的に操ることができます。
いろんなツールあって管理をサボりたい人には特におすすめです。

※[webpack入門 | さくらのナレッジ](https://knowledge.sakura.ad.jp/21623/)
※[webpack入門 | ICS MEDIA](https://ics.media/entry/12140/)

::: note info
※2023年7月現在では筆者は[vite](https://vitejs.dev/)・[vitest](https://vitest.dev/)・[volta](https://volta.sh/)の環境を推します。
webpackで出来てviteに出来ないことは無さそうなので、速度の速いviteを使っています。
:::

# Linter,Formater,Refactorer

C# Linter,Formater,Refactorer

Web系では「Prettier」がおすすめです。

| lang | Formater | Linter | Refactorer |
|:-:|:-:|:-:|:-:|
| C# | Resharper | StyleCop | Resharper
| js | Prettier | eslint | Prettier
| python | black | pylint | rope
| python | black | pylint | rope

「インテリセンス→フォーマッター→リンター→テスト→ランタイムデバッグ→ビルド」って順番かなと思ってます。

# ペアプログラミング用ツール

## LiveShare

https://visualstudio.microsoft.com/ja/services/live-share/
OSを問わず、vscodeでもvsでも、インターネット越しに複数人で一つのデバッグ画面を眺めることが出来ます。もちろん編集もできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/0ee39bf6-e00e-ae04-e692-f91c0ac75ce7.png)

ペアプログラミングを行って、自分より上級なエンジニアの手ほどきを受けたり、眺めたりすると素早く上達できそうです。また、自分なりに教えてみるのも勉強になります。

# バージョン管理ツール

## GitHub

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/d7dcfee1-4c41-b647-2d3c-3f379892ba4c.png)

Gitというソフトを使ってバージョンを管理することができるサービスです。
ここではコミットという単語が非常に多く使われます。
他にもGitBucketやGitLabなどがあります。
他の人と共同で作業するときに真価が発揮されます。もちろん一人でも使うと便利です。

Githubでは単なるバージョン管理ツールという枠を超えて、Issue Drivenなプロジェクト管理を行ったりすることもできたりします。
WikiやReadmeページ、GithubPagesなどを使って、アプリケーションのホームページとしてリポジトリページを公開したりすることもできます。

計画管理的な思考が身についたり、公に公開するという気概も生まれるので使ったほうがいいと思います。

また、Gitではない管理方法として、mercurial や subversion があります。Gitがすべてではない、ということを知るのは非常に重要です。gitとmercurial、subversion が選択できる、githubみたいなウェブサービスはないのでしょうか？

# アプリケーション管理ツール

## Chocolatey, Homebrew, Snapcraft

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/ddd3188e-8e1b-0d26-1c49-35efac49223e.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/07f15115-a8d3-efdd-f552-8191cc13cb27.png)


### 世界シェアが分かる

(https://chocolatey.org/packages)で検索すると、
世界中でいろんな人がどのくらいそのアプリを使っているのかが分かります。
例えば、「JRE」で検索すると、「OpenJDKは1500回くらいダウンロードされているけど、AdoptOpenJDKは540回くらいか」という数字が見えてきます。ほかにも[Trends](https://trends.google.co.jp/trends/explore)などで見る方法がありますが、これは実際の利用数にとても近いと言えます。（もちろん企業ユーザーは社内HUBサーバーがあるので実際の値よりも少なめかと思います。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/5e9a7256-6b1c-f02b-775d-0dcba4e704c7.png)

### インストールが爆速

アプリケーションインストールを行う時のブラウザ操作をかなりサボれます。
パッケージ名を覚えていると
「思い立ったら秒でアプリをインストール」できます。

例えば、windowsでvscodeをインストールしたい場合。

#### 通常のインストール手順

1. 「Windows」キー
1. `chrome`と入力して「Enter」キー
2. 「Ctrl」+「e」してアドレスバーにカーソル移動
1. `vscode`と入力して「Enter」キー
1. ウェブページタイトルをクリック
1. ダウンロードボタンをクリック
1. ダウンロードしたインストーラーをダブルクリック
1. UAC画面で管理者権限に昇格
1. 次へボタンを押す
1. 利用許諾を承認
1. インストールを開始ボタンをクリック

#### Chocolateyを利用したインストール手順

1. 「Windows」キーでスタートメニュー
1. `powershell`と検索して「Ctrl」+「Enter」キー
1. `choco install vscode -y`と入力して「Enter」キー
1. `refreshenv`と入力して「enter」キーです。

次にMacでvscodeをインストールしたい場合。

#### Homebrewを利用したインストール手順

1. 「command」+「space」キーでスポットライト検索を起動
2. `term`と検索して「Enter」キー
1. `brew cask install visual-studio-code`と入力して「Enter」キー

とても短い手順になりますね。

# DB管理ツール

## DBeaver

https://dbeaver.io/

- DBに関しての万能ツールです。ほぼ何でもできます。最強。
- クロスプラットフォーム対応でどこでも使える
    - Windows
    - Mac
    - Linux
- 思いつくデータベースはたいてい使える
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/2f9afe27-b620-a6c5-51bf-3ea8e08e4456.png)


これを眺めているだけでいろんなデータベースが使える気になってきます。
「このデータベースなんだろ？」って気になるのもいいところですね。

# 仮想化

## QEMU

かなり低レイヤーのハードウェアから仮想化してくれるっぽいです。
ゲームキューブとか携帯ゲーム機でLinux走らせたり、ラズピコでゲームソフト走らせたりしてる人や、OS自作してる人が好んで使っている印象です。

## k8s

Kubernates。[Wiki](https://www.wikiwand.com/en/Kubernetes#History)にもある通り、サイバネティクス(Cybernetics)の語源であるギリシャ語の操舵手(κυβερνήτης)を英語表記にしたものです。
Systemctlで管理するようなサービスを、DockerであればON・OFFするだけのところ、Kubernetesであればタイミングや個数管理やサイズ管理など様々できます。

## HashiCorpのツール群

https://www.creationline.com/hashicorp
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/7a2f23d1-762f-5bf5-f677-90bb144f6880.png)
上記のクラウドコンピューティング３強を全部混ぜて使うときや、AWSで構築するけど後で簡単にGCPに移行できるようにしておきたいときなどに効果を真価を発揮します。

興味、まずはvagrantでvirtualboxを動かしてみるのがいいかもしれませんね。

## OpenStack

http://openstack.org/
HashiCorpと何が違うのか分かりにくいですが、
こちらもクラウドコンピューティングのためのフリーソフト群です。
AWSを使うのではなく、AWSを作りたいときに使ったりします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/8aeec7cf-2bfc-8e58-b2c9-393925cfc0f0.png)

# 情報収集発信ツール

人に聞いたり、教えたりすると、情報が集まってきやすいです。
むしろそうしないと独善的になりがちです。
積極的にコミュニケーションをとって、
自分の思考をアップデートしていきたいです。

また、自分で考えると時間が足りないことを、
他の人に考えてもらって自分はサボります。

具体的には、

- 日本のブログ制作サイト→はてなブログ
    - エンジニアに特化→Qiita
- 日本のQ&Aサイト→Yahoo!知恵袋
    - エンジニアに特化→Teratail
- 日本の動画発信者のためのサイト→ニコニコ動画
    - エンジニアに特化→まだない

みたいな感じですね。

## Qiita

[ここ](https://qiita.com)です。
日本のエンジニアが集うブログ系SNSとして最大級のサービスです。

## Teratail

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/5cb260b9-6a38-2755-499c-ef375da09ab2.png)

[Teratail](https://teratail.com/)は日本のエンジニアが集うQ&A系のサービスです。
強みは回答率が高いことです。しかし回答率を求めすぎたためか、回答の質が微妙な気がします。
(2020/11/03現在の回答率 88%)

## Stackoverflow

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/5efc3ca9-abe3-9572-e972-1ecca4070cca.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/56f62a3d-ffde-1b55-fde2-ab1ade8faa27.png)


超大規模なQ&Aサイト「[StackExchange](https://stackexchange.com/sites)」の子供です。子供たちの中でも、ひときわ大きいのが、プログラマー向けの「Stackoverflow」です。

- 全世界版
    - https://stackoverflow.com/
    - 質問数	200万件
    - 回答数	300万件
    - 回答率	70%
    - ユーザー数	130万人
- 日本版
    - https://ja.stackoverflow.com/
    - 質問数	2万4000件
    - 回答数	2万8000件
    - 回答率	77%
    - ユーザー数	2万8000人

ユーザー数の多さから見て、英語で質問したほうがいいです。

::: note info
英語慣れするために、SNSはRedditを使うのもありだと思います。
:::

# エディター

## VSCode

[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/74459f72-24b6-7bb8-00d2-8a599c17060f.png)](https://code.visualstudio.com/)
homepage : https://code.visualstudio.com/
repository : https://github.com/Microsoft/vscode/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/0ee690d1-1629-53a8-4857-5b93863814c9.png)

近年、vscodeに勝るエディターはないと言って差し支えないでしょう。
その軽量さゆえに、早く案件を片付けてサボりたい私にはピッタリです。
愛用しております。

文句なしに最強のエディターです。特にスクリプト系のエディターとして優れています。
C#やJAVAのようなコンパイルが必要な言語では、専用のIDEを用いたほうが賢明な場合があります。

というのも、リソースの使用率など高度なデバッグをVScodeで行うには、設定が難解なためです。

拡張機能が豊富というのも売りですが、その多くは有志によるものです。
出来る限り公式がサポートしている拡張機能だけを利用したほうがバグに悩まなくて済みます。

競合は[eclipse](https://www.eclipse.org/)・[sublime](https://www.sublimetext.com/)・[xcode](https://developer.apple.com/jp/xcode/)・[atom](https://atom.io/)など。

VisualStudioとVisualStudioCodeの使い分けは難しいです。
初心者にはどちらでも大差ありませんので、モチベーションが落ちないためにも軽量なVSCodeをオススメします。
VisualStudioは多すぎる機能に混乱し、VisualStudioCodeは多すぎる拡張機能に混乱することでしょう。
ただし、GUIアプリケーションを制作する場合に限りIDEがおすすめです。

GUIでもUnityでスマホ向けの開発をするときなどはVisualStudioCodeです。
なぜなら、この場合にはUnityでコンパイルするので、エディターには高度なデバッグ機能が求められないからです。

## Neovim(Vim)

※2023年7月追記

VSCodeがコードエディターのシェアをほぼ独占してから普及し始めたCUIエディターです。

「GUIのVSCodeが市場で一人勝ちしている中で、どうして今更CUIのエディターなのか？」という問いに全てが詰まっている気がします。

VSCodeにある程度慣れてくると、ショートカットキーを多用することになると思います。
そうなってくる頃には、キーボード・マウス間の持ち替えの発生が煩わしくなってくるでしょう。
その究極系がVim系エディターであり、ブラインドタッチのホームポジションから手を動かす必要が無くなります。

Vimに慣れても、3DCG・CAD・2DCGを扱う場合はマウスが引き続き必要ですが、それ以外では必要なくなります。TUIやCLIツールと呼ばれるものを欲するような思考に切り替わっていくと思います。

VSCodeのキーバインドをNeovimにすることもできます。

::: note info
この追記もNeovimを使って書きました。
:::

## JetBrainsによるツール群

Android OS 用 の公式言語「[kotlin](https://kotlinlang.org/)」を開発していることでも有名な企業「JetBrains」が提供するツール群です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134703/549eb686-9f6c-929d-7fd9-b2e7be28b3dc.png)


包括しているツールは、Rider・PhpStorm・PyCharm・WebStorm・CLion・RubyMine・GoLand・IntelliJ など。
ツール群の名前がかっこよすぎです。それだけでも使いたくなります。

ただし、有料です。オープンソースプロジェクトに対しては無償提供されたりもするそうです。
また、多くのブログで、有料の価値があるとの紹介が行われているのも特徴的です。
「レベルが高い人はこういうツールを使うんだな」と知ることに価値があります。


# まとめ

がんばれ過去の自分！
そして今の自分！