【初心者向け】GitHub Pagesをわかりやすく解説してみた

GitHub Pagesとは

Webページを公開する方法の1つです。 GitHubというバージョン管理サービスを使って、無料でネット上に自身が作成したページを公開することができます。 ※バージョン管理は、サービスがいつどんな風に変更を加えられたのかを管理しておくことです。

必要なもの
  • GitHubアカウント
  • 公開したいWebページ

GitHub Pagesのメリット/デメリット

メリット
  • 無料
  • GitHubアカウントさえあれば誰でも利用できる
  • 容量無制限
デメリット
  • 動的な実装ができない

正直、デメリットはこれくらいしか思いつきません笑

GitHub Pagesの使い方

  1. GitHubに公開したいWebページが用意
  2. 公開したいリポジトリのSettingsをクリック
  3. Pagesをクリック
  4. branchを公開したいブランチに設定し、作成したページが格納されているディレクトリを指定、saveをクリック
  5. 表示されたリンクをクリック

おわりに

いかがでしたでしょうか。
GitHubPagesは手軽にWebサイトを公開できるので、興味があったら是非使ってみてください!

【超初心者向け】Linuxの基礎的な仕組みと基礎コマンド

はじめに

今回はLinuxを初めて触るという方に向けて、私が勉強した内容を簡単にまとめてみました!
Linuxはややとっつきにくい印象がありますが、実務を行う上では必須の知識になります。
多くのコマンドの中からまずはこの記事で紹介しているコマンドを覚えて是非使ってみてください。

Linux 

Linuxは、WindowsMac OSなどと同じOSの一つです。 OSは、ソフトウェアとハードウェアを繋ぐ役割を担っており、人の操作をコンピューターに伝える上で必須の機能です。 無料でオープンソースとして提供されていることで、多くの現場で使用されています。

CLIGUI

Linuxは、CLIで操作されます。 CLI(Command Line Interface)は、すべての操作をキーボードで行うことです。 現在のコンピューターは、マウスでクリックするなどのGUI(Graphical Urer Interface )が主流ですが、昔のコンピューターは、CLIで操作されていました。

CLIのメリット

コンピューターをCLIで操作する最も大きいメリットは、効率アップです。 一見とっつきづらいCLIですが、操作に慣れればGUIよりも素早く操作するできます。 また、何度も行う操作をスクリプトとして自動化することでより効率を上げることができます。

cdコマンド

change directoryの略称です。

ディレクトリを移動することができます。

cd ディレクトリ名

cdコマンドにはショートカットが存在します。

ショートカット 効果
/ ルートディレクトリを表す
. カレントディレクトリを表す
.. ディレクトリを表す
~/ ホームディレクトリを表す
何も指定しない ユーザーのホームディレクトリへ移動
オプション 意味
-L シンボリックリンクディレクトリへ移動
-P シンボリックリンクのターゲットへ移動

pwdコマンド

print working directoryの略称です。
カレントディレクトリの位置を確認することができます。

lsコマンド

listの略称です。
ディレクトリの中身を確認できます。

オプション 意味
-l 詳細情報を確認
-F ファイル種別を分けて確認
-a 隠しファイルも含めて確認

mkdirコマンド

make directoryの略称です。
ディレクトリを作成できます。

オプション 意味
-p 階層付きのディレクトリを作成

rmdirコマンド

remove directoryの略称です。
空のディレクトリを削除できます。

オプション 意味
-p 階層付きのディレクトリを削除

catコマンド

concatenateの略称です。
ファイルの中身を確認することができます。

オプション 意味
-n 行番号をつける

lessコマンド

テキストファイルの中身を閲覧することができます。

tailコマンド

ファイルの末尾を確認することができます。
tail -数字の形で、ファイルの最後から指定した数字の行だけ指定できます。

touchコマンド

ファイルのタイムスタンプを変更するコマンドです。
存在しないファイル名を指定すると新しいファイルを作成することができます。

rmコマンド

removeの略称です。
指定したファイルを削除することができます。

オプション 意味
-r ディレクトリを削除

mvコマンド

moveの略称です。
ファイルやディレクトリを移動することができます。

mv 移動元 移動先

の形で、利用することができます。
移動元、移動先がファイルかディレクトリかによって結果が変わります。

移動元 移動先 結果
ファイル ファイル ファイルをリネーム
ファイル ディレクト ファイルをディレクトリ内に移動
ディレクトリA ディレクトリB ディレクトリをディレクトリに移動

cpコマンド

copyの略称です。
指定したファイルをコピーすることができます。
ディレクトリをコピーする際は-rオプションをつけます。
ディレクトリに中身がある場合は、中身のファイルもコピーすることができます。

オプション 意味
-r ディレクトリをコピー

lnコマンド

リンクをつけることができます。
リンクにはハードリンクシンボリックリンクがあります。
ハードリンクは、ファイルにあだ名をつけることでそれ以降あだ名でそのファイルを呼ぶことができます。 シンボリックリンクは、ファイルにショートカットをつけることができます。

ハードリンクでは、元のファイルを消してもあだ名の方のファイルが残っていればファイルを保持することができます。 一方、シンボリックリンクでは、ファイルに対してショートカットを作っているので、ファイルを削除してしまうと、シンボリックリンクも機能しなくなります。

オプション 意味
-s シンボリックリンクを作成する

findコマンド

ファイルやディレクトリを検索することができます。

find 検索する場所 検索するファイルorディレクトリ名

chmodコマンド

change modeの略称です。
パーミッション(ファイルやディレクトリの権限)を変更することができます。
ls -lコマンドでファイルやディレクトリのユーザーごとのパーミッションを確認することができます。
パーミッションは数値かアルファベットで変更することができます。

パーミッションを数値で指定する方法

種類 意味 8進数
r ファイルの読み込み 4
w ファイルの編集 2
x ファイルの実行 1

chmod 755 test.txt

パーミッションをアルファベットで指定する方法。

コマンド 対象
u ユーザー
g グループ
o その他
a すべて
変更方法 意味
= 指定した権限にする
+ 指定した権限を追加する
- 指定した権限を削除する

chmod [ugoa][rwx][ファイル名]

chownコマンド

ファイルやディレクトリのユーザーやグループの所有権を変更するコマンドです。 Linuxは複数のユーザーがリモートでログインして使用する機会が多いため、複数のユーザーをグループでひとまとめにして管理します。

chown ユーザーID:グループ名 ファイルまたはディレクトリ名
chown :グループ名 ファイルまたはディレクトリ名

psコマンド

process statusの略称です。
OSの内部で実行されているプロセス一覧を表示するコマンドです。
プロセスのIDや、ユーザー名、CPU使用率などを確認できます。

オプション 意味
a 自分以外のユーザーについても表示
u ユーザー名を表示
x 現在実行しているプロセスを表示

killコマンド

プロセスを終了させるコマンドです。

kill プロセスID

の形で入力します。

オプション 意味
-SIGKILL プロセスを強制終了する
-9 プロセスを強制終了する

おわりに

いかがでしたでしょうか。
紹介した内容でLinuxの基礎的なコマンドは網羅できているかと思います。
実際に手を動かすことで定着していきますので、皆さんもぜひ試してみてください!

【入門者向け】Webって何?に対して簡単に説明してみた。

はじめに

こんにちは、現在プログラミング勉強中のrsm02です!

 

皆さん、突然ですが「Web」って何かわかりますか?

・「ネット」と何が違うの?

・Webって何かの略称

…人に説明するのはちょっと難しそうですよね。

 

私もプログラミングを学んでいく中で、「Web」という言葉を何度も耳にしたのですが、実際「Web」がどういうもので、どういう仕組みで成り立っているのかいまいち理解できていませんでした。

 

そこで、この記事では「プロになるためのWeb技術入門」という本を参考に

・Webって何ぞや

・ついでにどういう仕組みかサクッと教えてよ

という「Web」の仕組みについて超初心者向けに解説していきたいと思います。

 

これから「Webサイト、Webアプリケーション」を作ってみたいという方にぜひ読んでいただけたら嬉しいです。

 

インターネットとは

「コンピューターをお互いに接続して通信できるようにしたネットワークの網」です。

「インター(Inter) = ~の間に」+「ネット(net) = ネット」=インターネットです。

Webとは

Webは、インターネット上の様々な情報を閲覧可能にするシステムのことです。

Hyper Link(ハイパーリンク、一般的に言うリンク)で様々な情報をつなぎ、

HTMLの形式で情報を表現したものです。

情報が網のようにつながりあうことからWorld Wide Web(世界に広がる蜘蛛の巣)と名付けられ、略してWWWやWebと呼ばれます。

 

Webの仕組み

Webでの情報のやり取りは、「Webサーバ」「Webクライアント」というソフトウェアによって成り立ちます。

Webクライアントがリクエスト(要求)を送ることで、Webサーバーがそれに対応するレスポンス(返事)を返して情報をやりとりします。

クライアントとサーバーに分ける理由は役割ごとにコンピューターを分けた方が管理しやすいからです。

HTTP

Webで情報をやり取りする際の情報をやり取りする上でのルールのことを通信プロトコルといいます。

そして、HTMLを転送するのに適したプロトコルHTTP(Hyper Text Transfer Protocol)です。

 

CGI

Webでは、多くのユーザーにサイトを訪れてもらうためにコンテンツを常に更新し続け、目新しい情報を供給する必要がありました。

しかし、すべてのコンテンツを人間の手で作成していたのでは、手が足りません。

そこで、「コンテンツをコンピューターに創ってもらう」という発想で生まれたのが、CGI(Common Gateway Interface)という技術です。

CGIでは、アクセスした時刻に合わせて「こんにちは」「こんばんは」などの挨拶が変化したり、ブログの記事ごとにアクセス数を表示するなどコンピューターでWebページに変化をつけることができます。

CGIは、Webサーバー上でプログラムを動作させ、HTMLを生成することで成立しています。

また、プログラムによって生成されたHTMLをはじめとするコンテンツを動的コンテンツ、あらかじめ用意されたコンテンツを静的コンテンツといいます。

 

コンテンツ

Webサーバーを通じて公開される情報を一般的にコンテンツと呼びます

このブログもコンテンツです。

URL

ネット上のコンテンツを一意に特定するための仕組みをURL(Uniform Resource Locator)と呼びます。

 

IPアドレス

HTTPで情報をコンピューターから取得する際には、URLで特定されたコンテンツを表示します。ですが、実際にはURLは人間にわかりやすいように表現されたもので、コンピューターにはIPアドレスという数値によって識別されています。

IPアドレスは「192.168.0.1」のように表現されます。

 

TCP/IP

HTTPリクエストをサーバーに送付するためのプロトコルです。

URLには、どのサーバーにアクセスするのかというのを識別するためにホスト名という部分が存在します。

そして、IPアドレス(人間にとってのURL)がわかると、

このTCP/IPというプロトコルに乗っ取った形でリクエスト内容を送信してくれます。

そして、このプロトコルでは、HTTPリクエストなどの情報をパケットと呼ばれる小さなに単位に分割して送信します。

その後、インターネットによってパケットを受け取り、届いたパケットを再構築したうえで、Webサーバに渡されます。

パケットのように小さく情報を小分けにして送る理由は、送信を失敗した際に被害を最小に抑えるためです。

 

ポート番号

TCP/IPによって情報の送受信が可能になりましたが、TCP/IPはあくまで、情報を送受信するためのプロトコルであり、実際にその情報がどんな情報かを識別はしてくれません。

そこで、TCP/IPによって送られ、パケットを再構築した情報をどのアプリケーションで

処理すればいいのかわかりません。

そこで、届いた情報にはポート番号と呼ばれる番号をつけることで、情報ごとに処理を行うアプリケーションを変更することが可能になります。

ポートは、港という意味で、情報を受け取る港のイメージで覚えるとわかりやすいと思います。

 

ログインについて

最後にWebを使用するうえで当たり前のように使用されるログイン機能について解説していきます。

普段Webを使用する際、ログインすることで自分のアカウントだけのコンテンツを確認できると思います。

しかし、前提としてHTTPでは本来ログイン機能は実装できません。

では、なぜログイン機能を当たり前に使用できるのでしょうか。

それは、ログイン機能にCookie(クッキー)が使用されているからです。

クッキーを理解するために、まずはHTTPがステートレスであることを理解しなければなりません。

 

ステートフル、ステートレス

プロトコルは種類によって前回までの情報を保持してくれているものと、保持してくれていないものがあります。前者をステートレスプロトコル、後者をステートフルプロトコル呼びます。

例として、ステートフルなプロトコルでは、現在のディレクトリは?という質問を受け取ると最新のディレクトリの位置を教えてくれますが、ステートレスなプロトコルだと状態を保持していないため、回答が得られません。

そして、HTTPはステートレスなプロトコルです。

つまり、HTTPは状態を保持できないプロトコルなので、ログイン機能は実装できません。

そこで登場するのがCookie(クッキー)です。

 

Cookieは、Webブラウザに情報を持たせる技術です。

ログイン処理を実行後にWebサーバからWebブラウザCookieを送ることで、次回以降そのサーバーにリクエストを送る際は、クッキーもリクエストと一緒に送信されます。

そして、Webサーバでは、そのCookieをもとにユーザーレスポンスを返します。

この仕組みによってステートレスなプロトコルであるHTTPを使用したWebブラウザでの通信もログインし続けながら操作することが可能になります。

 

おわりに

いかがでしたでしょうか?

こちらの記事で最低限のWebについての仕組みが用語とともに学べたかと思います。

 

これからエンジニアを目指す方、Webについて知りたい方にこの記事が少しでもお役に立てば幸いです。

 

 

【プログラミングスクール】HappinessChainに入って1週間が経ちました。

はじめに

2023年7月9日(日)にプログラミングスクール「HappinessChain」に入会しました。

元々独学で2か月ほど勉強していましたが、Railsチュートリアルで挫折してしまったため、スクールに通うことにしました。

happiness-chain.com

この記事では入会から1週間が経過しての状況や入ってみての感想を書いていきたいと思います。

エンジニアを目指している方や、独学で困っている方に参考にしてもらえたらうれしいです。

結論

エンジニアとしてスキルを身に着けて就職したい方にはおススメです!

逆に「ちょっとプログラミング触ってみようかな」、「とりあえずエンジニアとして入れるならどこの会社でもいいや」という人にはあまりお勧めできません。

ここからはその理由を書いていきたいと思います。

理由1 質問対応が早い

質問への対応が早いです!

大体の質問に1時間~数時間で回答いただけています。

また、回答の仕方も「ロードマップにある〇〇の教材の××部分を見直してください」など、答えを教えるのではなくヒントを出してくれるので、とりあえず課題はできたけど、いまいちよくわかなかったなという状況に陥りにくいです!

 

理由2 質の高いロードマップ

独学でプログラミングを勉強していくうえで、最も難しいのが"不安"との戦いです。

独学で勉強していると、この教材で勉強していいのかな?これができるようになったら本当に転職できるのかな?など毎日不安の中で勉強を進めなければなりません。

私自身、これに本当に苦しめられました。

しかし、HappinessChain入会後は、ロードマップがあるおかげで不安が払拭され、

勉強に集中することができるようになりました。

 

理由3 価格の安さ

HappinessChainは、サブスク型のプログラミングスクールです。

そのため、自分のペースで勉強を進めることができます。

時間に余裕がある方でも早くて半年程度は必要かと思いますが、

それでも18万円+5万円程度(インプットの教材費)の費用と考えると、他のスクールの相場(50万円程度)と比べて半額以下の出費に抑えることができます。

 

まとめ

他のプログラミングスクールも検討しましたが、webエンジニアになる上で課題の難易度、質の高いロードマップ、質問対応の速さ、金額などかなりコスパのいいスクールかなと思います!

他のスクールを卒業後に入会される方もいるので、「お金を払うんだからしっかりスキルを身に着けたい!」という方にはおススメです!