見出し画像

エンジニアの道具箱

このノートでは、IT業界で働く人(WEBエンジニア、SE、ITコンサルたんとなどを想定)に向けて、現場で困らないための役立つ知識やツール、リンクをまとめていきます。
重要な場面で自分の馴染みのないテーマ(用語)が登場した場合に、まずは本ノートを参照して、そこから最短でそのテーマ(用語)について必要十分な基礎知識を得られることを目標としています。なので、内容をすべて頭に入れる必要はなく、あくまでお守りとしていつでも参照できる状態にしておいてもらえると嬉しいです。
各用語の内容は、「とは?」「具体例(実装例)」「比較される類似のもの」を中心とします。
なお、歴史的な背景など知識を深めるための情報は省き、実用的であることを重視しています。現場の会話で出現するようなテーマ(用語)に重きを置いています。
世界標準の知識をキャッチアップできたほうがいいと思いますので、情報ソースの多くは英語のサイトとしています。
参考:https://www.businessinsider.com/skills-for-google-engineering-jobs-2014-10

クライアントサーバーモデル

client-server model, クライアントサーバーシステム

Client–server model

クライアントサーバーモデルは、サーバーが1つ以上のクライアントにリソースとサービスを提供する仕組みです。
サーバーの例としては、ウェブサーバー、メールサーバー、ファイルサーバーなどがあります。
これらのサーバーはそれぞれ、デスクトップコンピューター、ラップトップ、タブレット、スマートフォンなどのクライアントデバイスにリソースを提供します。
ほとんどのサーバーは、クライアントと1対多の関係にあり、1台のサーバーが一度に複数のクライアントにリソースを提供できることを意味する。


OS


Shell

便利なツール





ネットワークプロトコル


データのフォーマット

ネットワークにおけるプロトコルはデータのフォーマットと処理のための一連のルールです。ネットワークプロトコルは、コンピュータの共通言語のようなものです。ネットワーク内のコンピューターは、全く異なるソフトウェアやハードウェアを使用している場合がありますが、プロトコルを使用することにより、それらに関係なく相互に通信することができます。
例えば、HTTP, SMTP, TCP, UDP, IP, ARP, ICMPなどがあります。

https://www.cloudflare.com/learning/network-layer/what-is-a-protocol/

FTP

File Transfer Protocol

FTP

FTPは、クライアントからサーバーへ、またはサーバーからクライアントへファイルを転送することができます。

HTTP

ロードバランサー

REST API

API設計



キャッシュ

プーリング


リーダーエレクション


Peer to Peer


可用性


プロキシ

フォワードプロキシサーバー例:squid

構築:jlesage/nginx-proxy-manager

https://hub.docker.com/r/jlesage/nginx-proxy-manager



Nginx


MapReduce

ハッシュ化


CPU

CPU とは

Central Processing Unit、プロセッサーとも呼ぶ。
データを読み書きしたり、計算をしたり各部署へ指示を出すパソコンの脳みそのような役割のパーツ。
高性能なCPUを使えば、アプリケーションの実行速度を高めることができます。頭の回転が速くなるイメージです。

CPUに関する問題集
https://note.com/techstar/n/nf911ea04358e

OS


Shell

便利なツール




データベース

レプリケーション

SQL

データ基盤

統合サービス

SaaS

種類


SaaS構築

設計




Docker


Docker用語(レジストリ、イメージ、コンテナ)の関係性
Docker用語(レジストリ、イメージ、コンテナ)の関係性

RegistryからDocker imageを取得するのではなく、Dockerfileをbuildして、Docker imageを作成する場合もあります。

無料のコース



Kubernates


無料のトレーニング



データの表現フォーマット

JSON

JavaScript Object Notation

{"employees":[
    {"firstName":"John""lastName":"Doe"},
    {"firstName":"Anna""lastName":"Smith"},
    {"firstName":"Peter""lastName":"Jones"}
]}

便利なサイト

JSON 整形
JSONをparseできるサイト
JSON パース
JSONをきれいに整形するサイト
JSON 可視化
JSONを可視化できるサイト


その他参考

https://www.oracle.com/jp/database/what-is-json/


バージョン管理システム

GitHub

公式ドキュメント

無料トレーニング


CI/CD

ビルド(プログラムのバイナリ化)-> テスト -> デプロイ
の自動化。Infrastructure as Code(IaC)も登場する。

GitHub Actions

GitHub Actionsのコンポーネント

GitHub Actions ワークフロー ファイルの基本的なコンポーネント


公式ドキュメント

無料のトレーニング

無料のハンズオントレーニング

Azure×GitHub Actions


クラウドサービスプラットフォーム

各社サービス比較

From GCP

From Azure

From OCI

https://www.oracle.com/cloud/service-comparison/

Azure

無料のトレーニング


学習系

個人的には、Googleが直接提供しているサービスが一番信頼できます。

初学者向け


中級者向け

https://algo.monster/

コーディング面接(競技プログラミング)

Dynamic Programming (動的計画法)

中級者への登竜門である動的計画法


偉人


用語集


情報収集

英語で検索

個人的には英語の記事のほうが日本語の記事より量も質も充実していることが多い印象です。
しかし、英語での検索では、キーワード選定にすこしコツがいる(直訳したキーワードでなヒットしないなど)ので、役に立ちそうな例を記載していきます。
例えば、『xx やってみた』で入門手順を動かしてみた系の記事を見つけたい場合、I did xxでは全く求めた結果がヒットしません。英語圏の人はそんな言い方をしないからです。また、すこし意訳して、Ii tried xxだとネガティブなニュアンス(I tried xx, but it failed…) が含まれるのでこれも求めるものとは違った検索結果になるでしょう。
『やってみた』に近いニュアンスでは、以下のような言い回しがよく使われますので、効率よく英語の記事を見つけるためにはこれらをあらかじめ知っている必要があるのです。

xx やってみた => xx tutorial, xx quick start, xx get started, xxx getting started

日本語記事が混ざらないのと、キーワードのレコメンドが正確になるため、英語版の Google を使ったほうがいいです。

  • 道具箱 => toolbox

  • xx とは => define: xx / what is xx

  • xx 種類 => types of xxx / xxx category

  • xx 一覧 => list of xx

  • xx まとめ => best xxx(s:複数形)

  • xx 使い方 => how to use xxx

  • xx 学習方法 => how to master xx

  • xx やってみた => xx tutorial / xx quick start / xx get started

  • xx 入門 ⇒ xx 101 / xx crash course / xx for beginners / xx introduction / xx beginner’s guide

  • xx コツ(スキル、術) => the art of xx / xx tips

    • art には「芸術」以外にも「技術、わざ、要領、コツ」などの意味があります。知識としてではなく、経験を通して習得するものをいいます。

  • xxとyyの違い => xx vs yy

  • xx 0から構築 => xx from scratch

  • xx 初級/中級/上級 => xx beginner/intermediate/advanced

  • xx 例 => xx example

  • xx 原因 => why xx…

  • ハッシュタグ xx => #xx

参考

開発のための便利なツール探し



この記事が気に入ったらサポートをしてみませんか?