まちん

主にAndroidアプリを作ってます。

ネクストスキル週次ゼミ(7月のゼミまとめ)

7 月のネクストスキルの週次ゼミのまとめです。

7 月に学んだこと

第 1 週

Linux サーバにおける環境構築ついて学びました。

  • Linux とは?サーバに何かをインストールするとは?
    • Linux やその他の OS の特徴
    • AWS でサーバを立ててデモ(ssh で入って Nginx を用意)
    • systemctl コマンド
    • nginx のファイル情報確認(file コマンド、ELF)
  • Linux の起動の流れと init プロセス
    • BIOS
    • ブートローダー
    • カーネル
    • init プロセス
    • ps コマンド、pstree コマンド、kill コマンド
    • シグナル
  • Nginx + Puma(Sinatra)の環境構築
    • 1 つのサーバに、Web サーバ、App サーバを起動してデモ
    • systemd でのサービス起動
  • コマンド
    • 組み込みコマンド
    • 外部コマンド

Linux やサーバ構築に関する知識を一通り学びました。

AWS などのマネジメントサービスのおかげで、 OS を直接触る機会も少なくなってはいそうですが、何か問題があったときなど調査するためにも OS の知識があったほうが良さそうだと思いました。

ちょうど LinuC レベル 1 の期限が切れそうで、LinuC レベル 2 の学習を始めたので、Linux の起動周りの話は役に立ちそうです。

第 2 週

TCP/IP ついて学びました。

  • Web の仕組みの復習
    • NIC、ソケットライブラリ、プロトコルスタック
  • クライアントとサーバは、通信時に何をしているのか
    • Echo クライアント、Echo サーバを作ってデモ
    • TCP/IP モデル
  • どうやってインターネットの先まで通信するのか
    • イーサネット
    • ハブ
    • ルータ
      • ルーティングテーブル
      • デフォルトゲートウェイ
    • サブネット化
    • インターネット
      • ISP
      • モデム
      • ゲートウェイ
      • パブリック IP、プライベート IP
      • NAT
    • mac アドレス
    • ARP

ネットワーク周りやプロトコルの話は最初は難しいが、実際手を動かして通信をしてみると、理解が進むんだなと思いました。

AWS のマネジメントコンソールでぽちぽちでもいいので、実際に VPC でネットワークを構成してみると、かなり理解が進むと思いました。

第 3 週

ネットワークの周辺知識について学びました。

  • DNS の仕組み
    • ドメイン名、サブドメイン
    • 名前解決の流れ
    • ネームサーバの設定
    • DNS レコード
    • A レコード、CNAME, NS, etc
  • 暗号の基本と SSL/TLS
    • 暗号とは
    • 情報セキュリティの 3 大要素
      • 機密性、完全性、可用性
    • アルゴリズムと鍵
      • シーザー暗号、共通鍵暗号、公開鍵暗号
      • DH 法
    • 署名
    • SSL/TLS
      • 暗号化、相手の確認、データの改竄チェック
  • 知っておきたいその他の通信プロトコル
    • メール
      • SMTP, IMAP, POP3
    • ファイル転送
      • FTP, FTPS, SFTP, rsync

DNS の仕組みなど、こちらも実際に自分で DNS を設定してみると理解が進みそうでした。

第 4 週

受講生のアンケートへの回答の講義でした。

  • HTTP/2 と HTTP/3 の概要
    • バージョン 1.1 は何が遅かったのか
    • HTTP2
      • 1 コネクションで、複数データ取得
      • サーバサイドプッシュ
    • HTTP3
      • TCP ではなく UDP(QUIC)
  • REST vs GraphQL vs gRPC
    • WebAPI の設計スタイル
    • REST の特徴
      • OpenAPI 3.0
    • GraphQL の特徴
      • graphqls
    • gRPC の特徴
      • RPC
      • Protocol Buffers
      • .proto ファイル
        • クライアントサイド、サーバサイドのライブラリ生成
    • 使い分けは?
      • フロントとの通信(オープンな API か、クローズドな API か)
      • マイクロサービス間通信
  • DNS の暗号化
    • DNS over TLS(DoT)
    • DNS over HTTPS(DoH)
    • 暗号化しないと危険なのか?そこまで危険じゃないのか?
  • リファクタリングの概要とポイント
    • リファクタリングの定義
    • 自動テスト
  • 手続き的なプログラムをオブジェクト指向的にするには
    • トランザクションスクリプト、ドメインモデル

この回は知らないことが多く、概要を知ることができて満足度は高かったです。というのも、アンケートで事前にリクエストしたのでだいぶ自分に合わせてもらった感じがします。

最終的には自分でしっかり学習するべきですが、概要やポイントを教えてもらってから学習すると、理解がしやすくなるので、おすすめです。

また、いつものことですが、新しい概念や技術などは、既存の問題点などを解決する形で出てくることが多いので、積み上げていくことでより理解が深まるなと思いました。

まとめ

7 月はサーバや、ネットワークの基礎的な部分を復習できました。「基礎だから簡単」ではないはずなので、何度も復習し少しずつ深掘りしながら定着させたいなと思いました。

← ホームへ