【完全自分用】ITでよく見る単語を小学生でも分かるように噛み砕く
きっかけ
自分自身Webエンジニアをしていて、
「この単語の意味なんとなくは分かるけど説明しろって言われたらできないなあ」みたいな
ことが多々あるので、あとから見返せる用に。。主に自分用。
パースする
「パースする」とは、大まかに言えば、文字列やデータを分解して必要な情報だけを取り出すことです。
ある形式で記述されたデータや情報を、プログラムが処理しやすい形式に変換することを指します。
たとえば、「123456」という文字列をパースすると、その中から数字の「1」「2」「3」「4」「5」「6」を取り出すことができます。
また、JSONやXMLなどのデータフォーマットをパースすることで、その中に含まれる情報を取り出して、プログラムで利用することができます。
わかりやすく例えると、「お菓子の袋から、中に入っているお菓子だけを取り出すこと」に似ています。お菓子の袋はデータの塊、お菓子は必要な情報、取り出すことはパースすることと考えることができます。
JSON形式のテキストデータをJavaScriptのオブジェクトに変換する場合、JSON.parse()というメソッドを使ってパースします。また、HTMLのテキストをDOM要素に変換する場合、ブラウザが行うパース処理が行われます。パース処理は、プログラムがデータを処理するために必要な前処理の一つで、様々な場面で使用されます。
SSL/TLS(証明書)
SSL/TLSは、ウェブサイトの情報を安全に送受信するための仕組みです。
イメージとしては、手紙を送るときに封筒に入れて、
封をして、宛先の人しか手紙を読めないようにすることと似ています。
具体的には、SSL/TLSは、ウェブサイトとユーザーの間でやりとりされる情報を暗号化して保護します。つまり、第三者が通信内容を盗聴したり改ざんしたりできなくすることができます。
例えば、クレジットカード番号やパスワードを送信するときに、その情報が第三者に盗まれると、
不正利用される可能性があるため、非常に危険です。SSL/TLSを使用することで、
このような情報を安全に送信することができるようになります。
SSL/TLSを導入すると、ウェブサイトのURLが「https」で始まります。
つまり、通信内容が暗号化されていることを示す「s」がついています。
一方、「http」だと暗号化されておらず、第三者に盗聴される可能性があります。
要するに、SSL/TLSは、ウェブサイトとユーザーの間でやりとりされる情報を安全に保護するための技術であり、httpsを使うことでそのウェブサイトが安全であることを示しています。
豆: Let's Encrypt
無料の証明書を取得できる
デプロイ
デプロイとは、作ったウェブアプリケーションをサーバー上にアップロードして、インターネット上で公開することです。
例えば、あなたが絵を描くのが得意で、自分で描いた絵を友達に見せたいと思った場合、絵を描く紙や筆を用意して、絵を描いてから友達に渡すと思います。ウェブアプリケーションをデプロイする場合も同じで、作ったウェブアプリケーションをインターネット上に公開するために、専用のサーバーにアップロードします。
デプロイする方法はいろいろありますが、一般的には、クラウドサービス(AWS、Google Cloud Platform、Microsoft Azureなど)を使うことが多いです。これらのサービスでは、自分でサーバーを用意する手間を省けるだけでなく、安全性やスケーラビリティ(アクセスが急増しても対応できる能力)なども高い水準で保証されています。
デプロイするには、ウェブアプリケーションをビルドし、必要な設定を行った上で、クラウドサービスのコンソールなどからアップロードします。アップロードが完了したら、自分のウェブアプリケーションの URL を使って、誰でもインターネット上からアクセスできるようになります。
デプロイはウェブアプリケーションを完成させる上で非常に重要なステップであり、順調に進まない場合はデバッグなどが必要になります。しかし、クラウドサービスの利用や、ビルド・設定自動化ツールの導入などをすることで、比較的簡単にデプロイを完了することができます。
ライブラリとフレームワーク
ライブラリとフレームワークの違いは、例え話で簡単に説明することができます。
ライブラリは、絵具のセットのようなもので、自分で描く絵に必要な色や道具を揃えるためのものです。あなたは、自分で描く絵を考え、描きたい部分に必要な色や道具を選んで使います。
一方、フレームワークは、絵の具で色を塗るのではなく、番号が割り振られた部分に対応する色の塗り方が書かれたマップに従って、指定された番号の場所に対応する色の部分に色を塗っていく塗り絵のようなものです。すでに描かれた絵の輪郭や色が用意されています。
あなたは、この輪郭にそって色を塗っていくだけで、完成した絵を作成できます。
つまり、ライブラリは自分で考えた機能を実現するための、部品や道具のようなものであり、
自分で制御する必要があります。一方、フレームワークは、機能の大部分がすでに用意されており、
制御する部分は比較的少ないため、作業効率が向上し、コードの再利用性も高くなります。
例えば、ウェブページを作る場合、jQuery はライブラリの一例であり、特定の機能(例えば、HTML要素の追加や削除、アニメーションの実行など)を実現するための部品を提供します。一方、React.js はフレームワークの一例であり、ウェブページ全体を構築するために必要な部分(例えば、ルーティング、データ管理、コンポーネントの作成など)が提供されています。
ただし、ライブラリとフレームワークは明確な境界線がなく、あるライブラリは別のプロジェクトではフレームワークのように使用されることもあります。
クロスサイトスクリプティング(XSS)
XSSは、ウェブサイトに悪意のあるスクリプトを挿入することによって、
他のユーザーのブラウザで実行させる攻撃手法です。
例えば、あるウェブサイトにコメント欄があるとします。攻撃者は、コメント欄に悪意のあるスクリプトを書き込んで、他のユーザーがそのコメントを閲覧した際に、そのスクリプトが実行されるようにします。このスクリプトは、攻撃者が用意した偽のログインフォームにリダイレクトするようになっているかもしれません。ユーザーが偽のログインフォームにログイン情報を入力すると、攻撃者はその情報を盗み出してしまうことができます。
XSS攻撃は、多くの場合、ユーザーが入力したデータがウェブサイト上にそのまま表示される場合に発生します。攻撃者は、入力フォームやコメント欄などを通じて、自分が用意したスクリプトを送り込むことができます。ウェブサイトの管理者は、このような攻撃を防ぐために、入力されたデータを正しく検証し、不正なスクリプトを削除する必要があります。
アーキテクチャ
アーキテクチャは、大きなビルや家を建てるときに必要な設計のことです。
例えば、小学校の建物を考えると、教室や体育館、図書室など、様々な場所があります。
それぞれの場所を考えるときに、広さや形、入り口の場所などを設計して、
全体としてスムーズに機能するようにします。
同じように、ソフトウェア開発においても、大きなシステムを作るときには、
どのような機能が必要で、どのようにそれらの機能を組み合わせるかを設計する必要があります。
この設計をアーキテクチャと呼びます。
ソフトウェアのアーキテクチャでは、各部分がどのように連携して機能するかを考え、
それを実現するために必要な技術やツールを選択します。
そのため、よりよいソフトウェアを作るためには、良いアーキテクチャの設計が必要になります。
SSH
SSHとは、インターネットを介して他のコンピュータに安全にアクセスするための方法の1つです。
例えば、あなたが家にいて、別の場所にある友達のコンピュータにアクセスしたい場合、SSHを使用することができます。あなたは友達のコンピュータにSSH接続することができ、友達のコンピュータをあなたのコンピュータのように操作することができます。
SSHは、通信を暗号化しているため、安全に通信することができます。これにより、第三者が通信内容を盗聴することができなくなります。また、SSHはパスワード認証や鍵認証などの認証方法をサポートしており、より高いセキュリティレベルを提供します。
HTTP通信/HTTPS通信
HTTP通信とHTTPS通信は、コンピューター同士が情報をやり取りする際に使われる方法のことです。
HTTP通信は、普段私たちがインターネットを使っている通信のひとつで、
例えばウェブサイトを見たり、ファイルをダウンロードしたりするときに使われます。
HTTP通信では、情報をやり取りするときに暗号化されないため、
通信の内容が傍受されると情報が盗まれたり、改ざんされたりすることがあります。
HTTPS通信は、HTTP通信と違い、情報を暗号化して通信するため、
より安全に情報をやり取りすることができます。
例えば、クレジットカード情報やパスワードなどの重要な情報を扱うサイトでは、
HTTPS通信を使うことが一般的です。
HTTPS通信は、ウェブサイトのアドレスが「https://」
で始まることでわかります。
HTTPS通信では、情報のやり取りに必要な「鍵」となる情報を提供する「証明書」が必要になります。証明書は、信頼できる機関によって発行されるため、通信内容の安全性が確保されます。
つまり、HTTP通信とHTTPS通信は、情報をやり取りする際に使われる方法で、HTTPS通信のほうがより安全に情報をやり取りすることができます。
POST/GET
GETとPOSTは、インターネットで情報をやり取りするためのやり方です。
例えば、あなたが友達に手紙を送りたいと思った場合、
手紙を送る方法は2つあります。ひとつは手紙の内容を友達に伝えて、
「手紙をくれ」と頼む方法です。これがGETです。
もうひとつは、手紙を書いて友達に送る方法です。これがPOSTです。
GETとPOSTは、インターネットでも同じように使われます。
GETは、ウェブページを見たり、ファイルをダウンロードしたりするときに使われます。
例えば、あなたが「犬の写真」という言葉で検索すると、
ブラウザはサーバーに「犬の写真をください」と頼みます。
すると、サーバーは犬の写真を探して返してくれます。これがGETです。
一方、POSTは、情報を送信するときに使われます。
例えば、あなたがSNSにアカウントを作成するときに、
ユーザー名やパスワードなどの情報を入力します。
この情報を送信するために、ブラウザはサーバーに「私が入力した情報を保存してください」と
頼みます。すると、サーバーはその情報を保存してくれます。これがPOSTです。
GETは情報を取得するために使われ、POSTは情報を送信するために使われます。
GETは情報がURLに含まれるため、誰でも見ることができます。
一方、POSTは情報をURLに含めず、安全に情報を送信することができます。
WebAPI
WebAPIとは、インターネット上で情報をやり取りするためのやり方です。
例えば、あなたが本棚の中から特定の本を探すとき、一冊ずつ棚を見て回るのは大変です。
そこで、本を探すためのカタログを作っておくことで、
効率的に本を探すことができます。このカタログがWebAPIのようなものです。
WebAPIは、あるサーバーから情報を取得したり、情報を送信するために使われます。
例えば、あなたがスマートフォンのアプリを使って、天気予報を調べるとき、
アプリはWebAPIを使って、天気予報サイトのサーバーに「今日の天気を教えてください」と
情報を送信します。すると、天気予報サイトのサーバーは「晴れです」という情報を返してくれます。
WebAPIは、様々な種類があります。例えば、天気予報、ニュース、地図、翻訳などがあります。WebAPIは、開発者がサーバーから必要な情報を取得するために使われることが多いです。
開発者は、WebAPIを使って、自分が作っているアプリに必要な情報を取得したり、送信したりすることができます。
WebAPIは、インターネット上で情報をやり取りするための大切な手段のひとつです。これによって、様々な情報を効率的にやり取りすることができるようになります。
サーバーレスアーキテクチャ
サーバーレスアーキテクチャとは、
インターネット上で動くアプリケーションを作るためのやり方です。
例えば、あなたがインターネット上でお絵かきアプリを使いたいと思ったとき、
一般的なアプリでは、お絵かき用のサーバーが必要になります。
しかし、サーバーレスアーキテクチャでは、サーバーを必要としません。
代わりに、インターネット上の「クラウド」と呼ばれる場所に、アプリケーションを置くことができます。
サーバーレスアーキテクチャでは、アプリケーションを置く場所を「関数」と呼ばれる小さなプログラムに分けます。関数は、必要なときに呼び出され、処理が終わると自動的に削除されます。このように、サーバーレスアーキテクチャでは、無駄なサーバーの管理コストを抑えることができます。
例えば、あなたがインターネット上でお絵かきアプリを使った場合、
お絵かきの処理は関数で行われます。あなたがお絵かきをするたびに、関数が呼び出されて、
処理が行われます。そして、関数が終了すると、その処理結果がクラウドに保存されます。
これによって、必要なときに必要な分だけ処理を行うことができます。
サーバーレスアーキテクチャは、クラウドを使ってアプリケーションを開発することができるため、
スケーラブルで柔軟性があります。
また、開発者がインフラストラクチャ(サーバーなど)を管理する必要がないため、
開発者はアプリケーションの開発に専念することができます。
IaC や CI/CD
IaCとは、Infrastructure as Code(コードによるインフラストラクチャ)の略で、サーバーやネットワークなどのインフラストラクチャをプログラムコードで管理することを指します。
※豆:インフラストラクチャ
例えば、おうちを建てるときには、まず土地を選んで、家の設計図を描いたり、
建設会社に依頼して、基礎や壁、屋根などを作ってもらいますよね。
これらの作業が「インフラストラクチャ」にあたります。
また、おうちを使うにあたっては、水道や電気、ガスなどの設備が必要です。
これらの設備もまた、「インフラストラクチャ」に含まれます。
つまり、「インフラストラクチャ」とは、何かを作ったり、使うために必要な基盤や設備のことです。情報システムの場合は、サーバーやネットワークなどがインフラストラクチャにあたります。
また、おうちを使うにあたっては、水道や電気、ガスなどの設備が必要です。これらの設備もまた、「インフラストラクチャ」に含まれます。
つまり、「インフラストラクチャ」とは、何かを作ったり、使うために必要な基盤や設備のことです。例えば、情報システムの場合は、サーバーやネットワークなどがインフラストラクチャにあたります。
例えば、あなたがレゴブロックでお城を作るとき、お城の設計図を作ってからブロックを組み合わせて建物を作りますよね? IaC も同じようなもので、まずコードでインフラストラクチャの設計図を作成し、それに従ってクラウド上で実際にサーバーやネットワークを構築することができます。
CI/CDとは、Continuous Integration / Continuous Deployment(継続的な統合・継続的なデプロイメント)の略で、アプリケーションの開発やリリースを自動化するための方法です。
例えば、あなたがスポーツの試合に出場するとき、練習を重ねて試合に備えますよね? CI/CD も同じようなもので、アプリケーションの開発者が継続的にコードをチェックし、問題を発見した場合にはすぐに修正することができます。そして、アプリケーションが正しく動作することを確認し、リリースに必要な手順を自動化することによって、アプリケーションの品質を高めることができます。
IaCやCI/CDは、より効率的で迅速なアプリケーション開発を可能にし、品質を高めることができます。しかし、これらの技術はプログラマーやシステムエンジニアによって実施され、小学校低学年の子どもたちが理解するには難しいかもしれません。
クラウド
雲は、私たちが空を見上げると、白いもこもこした形をしていますよね。その雲は、空気中に浮かんでいる水蒸気が集まってできたものです。そして、その雲から雨が降ってくることもあります。
「インターネットのクラウド」も、雲と同じように、たくさんの情報やデータが集まっている場所のことです。クラウドには、たくさんのコンピューターやサーバーがあるので、たくさんの情報やデータをたくさんの人が共有することができます。
例えば、写真や動画をインターネット上にアップロードした場合、自分のコンピューターに保存しておくよりも、インターネット上のクラウドに保存しておいた方が、いつでもどこでもアクセスすることができるし、容量の制限もなく、安全にバックアップすることができます。
つまり、「インターネットのクラウド」というのは、たくさんの情報やデータが集まっている場所のことで、その中にはたくさんのコンピューターやサーバーがあり、みんなが共有できる便利な場所のことです。
テックリード
「テックリード」とは、プログラムやアプリを作るときに、
チームの中でリーダーとして技術的な方向性や進め方を考え、
チームメンバーに指示を出す人のことです。
例えば、サッカーの試合でいうと、チームキャプテンのようなものです。
サッカーのチームキャプテンは、試合中にチームメンバーをまとめ、相手チームとの戦略を考えて、
プレーの指示を出したりします。同じように、テックリードも、チームメンバーをまとめて、
プログラムやアプリを作るための技術的な方向性や進め方を考え、チームメンバーに指示を出します。
テックリードには、技術的な能力だけでなく、リーダーシップやコミュニケーション能力も必要です。また、チームメンバーのスキルアップや業務の効率化なども考えながら、チーム全体の成果を上げることが求められます。
つまり、「テックリード」とは、プログラムやアプリを作るときに、チームのリーダーとして、技術的な方向性や進め方を考え、チームメンバーに指示を出す人のことで、リーダーシップやコミュニケーション能力が求められる大切な役割なのです。
ステークホルダー
「ステークホルダー」とは、あるプロジェクトやイベントに関係する人たちのことを指します。
例えば、学校の運動会を開催する場合、生徒や保護者、教師などがステークホルダーになります。
ステークホルダーには、プロジェクトやイベントの成功に直接的に関わる人たちや、関心がある人たち、関連業界の人たちなどがいます。ステークホルダーは、プロジェクトやイベントの目的や計画、進捗状況などについて、情報を共有したり、アドバイスや意見を出したりすることがあります。
例えば、学校の運動会であれば、生徒たちは競技に参加し、保護者は応援する役割を持ち、教師たちは運動会を企画・運営する役割を持ちます。そして、彼らが全員がステークホルダーとして、運動会が成功するために協力し合うことが大切です。
つまり、「ステークホルダー」とは、あるプロジェクトやイベントに関係する人たちのことであり、目的や計画、進捗状況などについて情報を共有し、協力しながらプロジェクトやイベントの成功に向けて働くことが求められる大切な人たちのことです。
アジャイル開発
アジャイルとは、ソフトウェア開発の方法論の1つです。
アジャイル開発では、開発チームが短い期間で、小さな成果物を繰り返し作り上げていきます。
この方法論では、開発チームがお互いに協力し合いながら、進捗状況を共有し、
改善点を見つけ出すことが重要視されます。
アジャイル開発には、いくつかの方法がありますが、その中でも最も有名なのが「スクラム」です。
スクラムでは、開発チームが1つのプロジェクトに取り組む期間を「スプリント」と呼ばれる短い期間に区切り、1つのスプリントにおいて完了できる範囲のタスクを決定します。
その後、開発チームは、毎日定例会議を開催して、プロジェクトの進捗状況や課題を共有しながら、
タスクの実行に向けて取り組んでいきます。
アジャイル開発においては、顧客が開発チームに必要な機能や要件を伝え、開発チームはそれを実装することになります。顧客と開発チームは、定期的に打ち合わせを行い、プロダクトの改善点や課題を共有し合いながら、プロダクトの完成度を高めていくことが求められます。
サーバーサイドレンダリング(SSR)
通常、Webページを表示するときは、ブラウザがWebサーバーにリクエストを送信し、
サーバーはHTML、CSS、JavaScriptなどのファイルをブラウザに返します。
そして、ブラウザがそれらのファイルを読み込んで、Webページを表示します。
しかし、サーバーサイドレンダリングでは、ブラウザがWebサーバーにリクエストを送信する前に、
WebサーバーがWebページの内容を生成し、それをHTMLとしてブラウザに返します。
つまり、サーバー側でWebページの内容を生成することで、
Webページの読み込みを高速化することができます。
例えば、あるECサイトの商品一覧ページを考えてみましょう。
通常の場合、ブラウザがWebサーバーにリクエストを送信し、
サーバーが商品一覧ページのHTMLを生成するために、
データベースから商品情報を取得してHTMLを生成する必要があります。
しかし、サーバーサイドレンダリングを使用すると、商品一覧ページのHTMLをブラウザに返す前に、Webサーバーが商品情報を取得し、HTMLとしてブラウザに返します。
これにより、ブラウザが商品一覧ページを表示する前に、商品情報がすでに取得されているため、
ページの読み込みが速くなります。
また、サーバーサイドレンダリングは、検索エンジンのクローラーにとっても有用です。
豆:クローラー
クローラーは、インターネット上にある様々なウェブサイトを巡回して情報を収集するプログラムのことです。クローラーは、特定のウェブサイトにアクセスし、そのウェブサイト上にある情報を自動的に収集し、データベースに保存します。このようにして、たとえば、商品情報やニュース記事、ブログの投稿などを自動的に収集し、大量の情報を収集することができます。クローラーは、検索エンジンやニュースサイトなどで広く使われています。
検索エンジンは、Webページのコンテンツを理解するためにHTMLを解析します。
サーバーサイドレンダリングを使用すると、WebページのHTMLが初期表示時にブラウザに返されるため、検索エンジンのクローラーがコンテンツをより効果的に解析できます。
レンダリング
レンダリングとは、コンピューター上での描画のことです。
例えば、Webサイトをブラウザで閲覧する際に、
HTMLやCSS、JavaScriptなどのコードがブラウザによって解釈され、
Webページが描画されます。この描画のことをレンダリングと呼びます。
具体的には、Webサイトの場合、ブラウザがHTMLとCSSを読み込み、それを基にWebページを描画します。JavaScriptを使って動的な要素を追加する場合は、JavaScriptもレンダリングに影響を与えます。レンダリングの速さがWebページの読み込み速度に直結するため、効率的にレンダリングすることがWeb開発において重要になります。
API ルート
APIルートとは、Webアプリケーションやサービスにおいて、外部からアクセス可能な機能や情報のエンドポイント(つなぎ口)のことです。具体的には、Webサービスを提供するサーバー側に設けられた特定のURLのことで、このURLにHTTPリクエストを送信することで、サーバー側が持つ機能や情報にアクセスできるようになります。
例えば、TwitterのAPIルートである「https://api.twitter.com」
にアクセスすることで、Twitterが提供する様々な機能(ツイートの取得、投稿など)にアクセスできるようになります。APIルートは、プログラマーや開発者がWebサービスを利用したり、自分でWebアプリケーションを開発する際に重要な役割を持つ概念です。
Discussion