弊社の新人さんに贈りたい弊社の開発環境セットアップ手順だけ見ていても身につかない知識

[アドベントカレンダーではありますまいかAdvent Calendar 2020](https://qiita.com/advent-calendar/2020/mba) 8日めの記事ですぞ。
弊社にもいわゆるオンボーディング時に見てもらうための「開発環境セットアップ」手順がある。弊社の最重要機密である技術レベルが漏洩してしまうので詳しくは書けない。しかしそこには、それだけ知って何か意味ある？というものも含まれる（何々エラーが出たらリロードせよの類）

いや違う、重要なのはそんな断片的な回避チートではない。「なぜ」それが必要なのか、あるいは「どういう背景があるのか」。知らないと弊社以外で生きられなくなりますよ。私のように。

以上をアンチパターンとしたところを動機に、本稿では知識を一般論化し世界に共有（というかインターネット上に共有）できるレベルに砕いて記しておこうとおもいました。中身はまあまあ真面目。

## まず結論

開発環境セットアップ手順だけ見ていても身につかない知識
＝「これは何故？」を書かれている手順から1歩だけ踏み込もう。と言いたい。

書かれていることをなぞれば開発環境は作れる。が、開発環境を壊して、それを自分で直せるように、あるいは改善できるようになる力を持つことのほうが、弊社以外で通用する知識だと思います。


### Eclipse

冒頭のっけから Download eclipse 書かれているが極論Eclipseでないといけないということはない。
[もちろん、最も普及しているIDEのひとつ](https://qiita.com/disc99/items/727b51dbe737602a5c91#ide) ではある。

`Eclipse.zip を Cドライブ直下 で解凍してください。`

等々指示があるがそれも便宜上ではある。ハマるので一旦私もそうしているが、単に説明する側の都合と言うことを意識しよう。Cが使えないことももちろんあるだろうし、容量の問題もある。何度も書くがEclipseが絶対ということはない。


### EclipseのFormatter

`以下の起動経路より Formatter を開きます`
` Window > Preferences > java > Code Style > Formatter`
ルールだと思ってそのまま入れるべきだが、[Eclipseのフォーマッター設定](https://qiita.com/koma01102003/items/2167ca798f7dc4c4b278) にも書かれているとおりこれで我々のコーディング規約（基本的な）に乗れるよ、ということ。

### Console2

入れなくても問題は無い。
`console2をインストールしていない場合は、ラボの先輩にインストール方法を聞きにいきましょう`
が、これも手段の一つ。[Windowsで使えるターミナルとシェルのまとめ](https://qiita.com/Ted-HM/items/9a60f6fcf74bbd79a904) を読む。


### Installed JREs

[JREとPathが何なのか理解しておく](https://qiita.com/Terry3/items/606c4554eabecf9010f1)。

### Import Project

`Importダイアログを開き、「Existing Maven Projects」を選択してNextボタンをクリックします。`
とか書いてあるがMavenとは何だとなると思う。[【超初心者向け】Maven超入門](https://qiita.com/tarosa0001/items/e5667cfa857529900216) を踏まえる。[ビルドツールはいろいろある](https://qiita.com/MahoTakara/items/ff73338e218b656bedfa) けども我々がここでたまたまMavenだったのです。

### Tomcat

Eclipseで先述の記事の [サーバ](https://qiita.com/disc99/items/727b51dbe737602a5c91#%E3%82%B5%E3%83%BC%E3%83%90%E7%B3%BB) の項に出てくる。


### Setup Server

弊社プロダクトに特有の暗号化ファイル名がいくつか出てくるんだが、そいつらにデータベースや、アプリケーションサーバのURLが書いてあることに気づくだろうか。そう、大事な接続情報は暗号化して保持しているのだ。コンテキストパスと設定テキストなどの関係をつかむ必要がある。上のTomcatと一緒に調べていくがよし。

### JDBC Driver

[JDBCドライバでMySQLに接続](https://qiita.com/norikiyo777/items/0bc3bf28b94ae4922b9a) とか、どんなデータベースだとしてもこういうものが必要で、と言うことを理解したい。

#### 起動時、jdbcからエラーが出る場合
Pathがおかしかったり、環境変数がおかしかったり。

### projectが ! 状態になった場合 

`.classpath` と `.project`あたりがズレているといわれる。が、つまり？
[Eclipseの.classpath / .projectファイルには何が含まれていますか？](https://www.it-swarm-ja.tech/ja/java/eclipse%E3%81%AEclasspath-project%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%81%AF%E4%BD%95%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F/940379256/)

### java.lang.NoClassDefFoundError

出る出る。
[java.lang.NoClassDefFoundError](https://software.fujitsu.com/jp/manual/manualfiles/M050000/B1WN5031/03/msg43/msg09883.htm)
[java.lang.ClassNotFoundException って、どういうことよ？](https://ts0818.hatenablog.com/entry/2019/08/23/165818)

### git pullで最新のソースを取得する
`全プロジェクトを選択→F5キーで外部からのソースの変更を反映する` などとあるが、Eclipseでもなんでも便利なショートカットを覚えておこう。[eclipseでよく使うショートカット](https://qiita.com/ynxx/items/7734dfb755bc83373d7c)

### JavaScriptのファイルを開く

`EclipseでJavaScriptのファイルを開くと、重くて動かせなくなったり、OutOfMemory等のエラーが発生します。EclipseではJavaScriptのページを開かないようにしてください。` などと言う怖い忠告があったりする。

### JavaScript用エディタ
`JavaScriptの編集を行えるソフトは、Sublime Textや、Webstormなどがある。` とはあるが、[AtomユーザもSublimeユーザも、死角が無いエディタ「VS CODE」に乗り換えよう](https://hirata.blog/201807_vs-code-introduction/) など、色々。


## ググり力・質問力
色々書きましたが最も必要なのは結論、これです。

[エラー解決の正攻法と質問力・ググり力](https://qiita.com/yogoken/items/84dc3bbeeaba0c273d2c)
[誰も教えてくれないググり方](https://qiita.com/hcl/items/da9367d76ff103fcb181)
[調べたいことをGoogleで調べる技術3選
](https://zenn.dev/junki555/articles/81abe43eb32e12)

英語なら`foobar not working` だけ覚えておけばよし。
人に聞くときは [良い質問とは何か](https://qiita.com/e99h2121/items/cec6328806863f10b439) を参考にどうぞ！