---
# System prepended metadata

title: 研修用資料

---

# 研修用資料


## Javaをやる前に

### 概念図（担当領域）

```mermaid
%%{init:{'theme':'base','themeVariables':{'primaryColor':'#6A7FAB','primaryTextColor':'#FAFBF9','primaryBorderColor':'#6A7FAB','lineColor':'#6A7FABCC','textColor':'#6A7FABCC','fontSize':'20px'}}}%%

graph LR

A("システム") --- B("サーバーサイド・インフラ")
A --- C("アプリ開発")

B---B1("ネットワーク")
B---B2("サーバー")

C---C5("組み込み")

C---C1("ネイティブアプリ(モバイルアプリ)")
C1---C3("Android")---C6("Kotlin/Dart")
C1---C4("iOS")---C7("flutter/Swift/Dart")
C---C2("Webアプリ")


C2---D1("フロントエンド")---E1("HTML")
D1---E2("CSS")
D1---E3("JavaScript")
C2---D2("バックエンド")

D2---F1("Java") --> F11("今回やる");
D2---F2("PHP")
D2---F3("Ruby")
D2---F4("etc...")

style F1 fill:#ffaaaa
style F11 fill:#000000

```

※分け方は一例です。\
分類自体が山ほどあるので、切り取り方によって変わります。
あくまで初心者がわかりやすく把握するための図だと思ってください。


## なぜ最初にJavaを学ぶのか
- Javaのシェアが多い
    - https://www.knowledgewing.com/kw/coursemap/ca071101.htm
    - 社内のシステムでも体感8割はJavaで開発しています
    - 一部Ruby・Pythonはありますが主流派とは言えないです
- 型の知識が身につく
    - 型があることでプログラムの予期しない動作を未然に防ぎやすくなります
    - [静的型付けと動的型付けについて](https://qiita.com/toryuneko/items/c023031b61886cae2a99)
    - [Pythonで型検査しようぜ](https://kk-river108.hatenablog.com/entry/2019/03/10/163457)

- 型とは何か（上記URLから引用）
```
そもそもプログラムが扱う値というものは
コンピュータから見ればただのメモリやハード上のバイト値です.

型はそのメモリ上に連続するバイトの塊の解釈の仕方を
変えることで人間に扱いやすくするものという認識です.

0x01 => int: 1, char: 'a'
```
- 0x01は16進数表記で、10進数に直すと「1」
    - `int`型として解釈するなら、数字の1番目
    - `char`型として解釈するなら文字（アルファベット）の1番目


#### 参考：Javascriptの動的型付けの挙動の例

```
// ElsaとAnnaの年齢を1つずつ加算する

class User {
    constructor(name, age) {
        this.name = name
        this.age = age
    }
}
user = new User("Elsa", 21)
user.age + 1
// 22


user = new User("Anna", "18")// 間違えて文字列を指定してしまった
user.age + 1

// '181'
```



### 1章 Javaの概要

### 1.Javaとは

キーワード：C++

C++とは
https://products.sint.co.jp/topsic/blog/c-plus

LinuxはC++で作られている
WindowsもC++で作られていると予想されている



### 2.Java言語の特徴

1. プラットフォームに非依存

- 主要OS一覧(オレンジがJavaの使えるOS)

```mermaid
graph LR
A("OS")---B("UNIX")
B---C("BSD")
C---D("macOS")
B---E
C---I("FreeBSD")
B---H("Solaris")
H---H1("OpenSolaris")
E("GNU")---F("Linux")
A---K(" ")---L(" ")---G("Windows")

style L display:none
style K display:none
style D fill:#ffaa66
style I fill:#ffaa66
style H1 fill:#ffaa66
style G fill:#ffaa66
style F fill:#ffaa66
```
- 下記URLから作成
    - https://penpen-dev.com/blog/linux-unix-bsd-mac-gnu/


- JVMについて
    - https://www.sejuku.net/blog/19871

2. オブジェクト指向
    - 後半で説明します。
3. クラスライブラリ
    - よく使う機能は最初からクラスとして登録されているので、すぐ呼び出せる
4. シンプルなコード
5. 安定かつ厳密
    - コンパイルエラーと実行時エラー
    - https://saktt-sw.com/java-execute-error
6. 安全なメモリモデル
    - GarbageCollection(GC)という仕組みでメモリを管理
    - https://qiita.com/e_tyubo/items/48398391a8ef0f24c1be
7. マルチスレッド
    - 並行処理が可能
8. セキュリティ
9. インターネットとの親和性




## その他の読み物（プログラミング全般）

- 暇でやることがないときにでも読んでおくと、色々なことへの理解が深まるかもしれません。



### linuxコマンドについて
https://qiita.com/ine1127/items/64b5b6cf52471c3fe59c

https://qiita.com/hattys2/items/56d973ad4f197b751501

https://qiita.com/hirokishirai/items/5a529c8395c4b336bf31




### HTTPについて
https://qiita.com/kanataxa/items/522efb74421255f0e0a1
https://qiita.com/TakahiRoyte/items/949f4e88caecb02119aa

[HTTP の進化
](https://developer.mozilla.org/ja/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP)


### インフラについて

https://qiita.com/ya-man/items/59597b7a4f936513ed96


### 仮想環境について
https://qiita.com/9en/items/f4eab2f61485a9f3885a

https://www.kagoya.jp/howto/it-glossary/develop/wsl2_linux/