rocky-engineer7の技術日記

webエンジニアを目指して奮闘中!!

【初学者向け】vimの基本操作をまとめてみた

はじめに

本記事では、vim初心者である筆者が自身のアウトプットのため、これからvimを学習される方向けに作成したものです。 vimの名前は聞いたことあるけど、vimを使うメリットって何?vimってどう扱うの?
などの疑問を解消できるように書いていきます。

vimとは?

vimとはキーボードオンリーで操作可能なエディタのことです。 キーボード入力で以下のことが出来ます。 - テキスト間の移動 - テキストの選択 - テキストの挿入、削除、コピペ - ページ内検索

またLinux(サーバ用のOS)では、vimのみで環境構築することもあるため慣れておくといざという時便利です。

vimのメリット

メリットとしては、キーボード入力だけで完結出来るため、高速で編集可能なところ。 キーボードを入力して、右手でマウスを持って対象をクリックして...とやるより遥かに効率が良いですよね。

モードの種類

vimはキーボードのみで操作編集などをするので、今入力しているのがただの文字なのかそれともコマンドとして入力しているのかを区別するためにモードがあります。

 モード名      主な動作            
NORMAL カーソル移動、テキストコピペ、テキスト削除、入れ替え 、、etc                 
INSERT テキストの入力                                 
VISUAL テキストの選択                           

vimを起動したらノーマルモードからスタートします。 そこで適宜コマンドを入力してモードを切り替えて、文章を入力したりします。 例えばですが、ノーマルモードからインサートモードへ切り替えの場合は、ノーマルモードの状態で「i」ボタンを入力することでインサートモードへ切り替えが出来ます。 ノーマルモードへ戻りたい時はキーボード左上の「ESC」ボタンで戻ります。

モードは下部に表示されているので、今何モードなのかを確認しながら進めていくようにしましょう。

スクリーンショット 2023-08-05 20.34.10.png

コマンド紹介

ここからはよく使うコマンドを紹介します。 vimのコマンドはめちゃくちゃあるので、一気に覚えようとはせずに
最低限のコマンドを覚えてそこから必要に応じてググって新たに知識を追加していくのがベストだと思います。

実際に動かしながら覚えてみたいよという方は、ターミナルからvimtutorと入力するとvimチュートリアルが動かしながら出来るのでおすすめです。所要時間は35分ほどらしいですが、自分は操作してメモしてとやっていたら1時間ぐらい使ってました。

(*)上記はMacでの方法なので、windowsを使用されてる方はvim windows やり方などでググってみてください。

それではコマンド紹介へいきたいと思います!

カーソル移動

カーソルの操作は以下のように行います。 位置キーでも動きますが、キーボードによっては位置キーがない場合もあるので コマンド入力で慣らしていきましょう。

コマンド 効果
h カーソルを左にずらす
j カーソルを下に下げる
k カーソルを上に上げる
l カーソルを右にずらす

1行あたりの文字が多かったり、何百行の移動するのに上下左右にボタンポチポチするの面倒!!と思われた方もいると思います。 僕も同じこと思いました..笑 下記のコマンドで、さらにカーソル移動が楽になります。

コマンド 効果
0 行頭へ移動
$ 行末へ移動
w 単語の末尾へ移動
gg ファイルの先頭へ移動
nG , :n ファイルのn行目へ移動
G ファイルの末尾へ移動
H 画面の最上行へ移動
L 画面の最下行へ移動
ctrl + b 前の画面へ移動
ctrl + f 次の画面へ移動

操作系

エディタ本来の役割は編集なので、入力と保存について表で見ていきましょう。 モードでもインサートについて触れましたが、表で見ると分かりやすいのでこちらにまとめます。 |コマンド|効果| |:--|:--| |a|カーソルの場所から1文字進めてInsertModeに入る| |i|カーソルの場所からINSERTモードに入る| |:w|ファイルの保存(Control-s)| |:q|実行中のタブを閉じる| |:wq|上を組み合わせて保存して閉じることもできる| |:w!|のように最後に[!]をつけると強制的に処理します|

簡単なコピペや削除コマンドなどは以下の通りです。

コマンド 効果
x カーソル直下の文字を消します
dd カーソルがある1列削除
yy 1列コピー
p ペースト
u 操作を1つ戻す(Control+z)

応用になりますが、部分選択をしてコピペ,カーソルの位置からのアクション,削除後にINSERTモードで変更などもあります。

コマンド 効果
v + 移動コマンド + y 範囲してしてコピー
yw カーソルの位置から次の単語までをコピー
P コピーした内容をカーソル位置の上行に貼り付け
dw カーソルの位置から空白含む単語範囲で削除
de カーソルの位置から空白含まない単語範囲で削除
D/d$ カーソル位置から行の末尾までを削除
ce カーソルの位置から空白含まない単語範囲で削除した後にINSERTモードに変更
cc 行全体を削除した後に変更INSERTモードへ変更
C カーソル位置から行の末尾までを削除した後にINSERT

検索操作

ファイル内検索はこのコマンドで出来ます。

コマンド名 動作
/ カーソル位置から下方向にキーワードを検索
? カーソル位置から上方向にキーワードを検索

例えば/apple ボタン押下することでappleを検索します

おわりに

vim初学者の私が実際にvimtutorや他の教材を学習したものを解説してみました。 vimtutor学習と今回のブログ記事を通じて少し動かせるようになったので、ブラインドタッチなどと同様にコツコツ練習して出来るようにしていきたいです! 今後、vimを学び始める方の学習の参考になれば幸いです。 お読みいただきありがとうございました。

【入門編】Web技術の用語についてまとめてみた

はじめに

本記事は、エンジニア初学者の方やこれからwebのお仕事に携わる方や
ITパスポートや基本情報技術者の勉強をされている方向けに作成いたしました。

なんとなく目にしたことはあるけどどういう意味なんだろう?とか
これ勉強で出てきたけどなんだっけな?など拝見された方の学習や再復習の手助けになれば幸いです。

初学者向けの学習本はたくさんありますが
今回は「プロになるためのWeb技術入門」から重要な用語をピックアップして解説していきます。

たくさんのエンジニアの方が初学者向けにオススメしている本で
文章だけではなく図も記載されているので読みやすい良本です。

それでは、用語の解説をしていきます。

リクエスト・レスポンス・HTTPプロトコル

簡易的に表すとこうなります。

クライアント(自分のPCやスマホなど)←HTTP通信→Webサーバ

クライアント側(自分のパソコンやスマホ)からサーバ側へ「〇〇の画面表示したい!」とリクエスを送ります。 サーバ側は、リクエストに応じて「はい!これ依頼されてた〇〇の画面の表示のやつね!」とレスポンスを返します。

クライアントとWebサーバの間にある、HTTP通信は通信プロトコルのことを指します。
正式名称はHyperText Transfer Protocol(ハイパーテキストトランスファープロトコル

通信をする時には、足並みを揃えてからお互いにやりとりしましょうねと約束事を決めています。 現実世界で例えるならば、片方は日本語、もう片方は英語を喋ってやりとりしてしまうとコミュニケーションが成立しませんよね?通信の世界でも同じです。

なので「○○通信をするときは××なお約束事に従ってやり取りしようね」と事前に決まっています。

クッキー(Cookie)

ネットを閲覧したときに一度は見たことがあるであろう、Cookieを有効化しますか?と出てくるあのCookieです。あのCookieとても大事な役割を果たしています。

Cookieとは、WebサーバからWebブラウザへHTTPレスポンスのヘッダを利用して送る小さなデータのことです。

WebサーバからCookieを受け取ったWebブラウザは、次回と同じWebサーバにアクセスするときに、リクエストと共にCookieを一緒に送信します。

Webアプリケーション側は、リクエストと共に送られてきたCookieを調べることでアクセスしてきた相手が誰なのかが分かるようになっています。

また、意図しない情報が他のWebサーバに送られない仕組みとして、Cookieを受け取ったサーバとは異なるWebサーバに対してはCookieは送りません。

IPアドレスとポート番号

IPアドレスとは、コンピュータに割り当てられる住所のことです。 ポート番号とは、ネットワークとパソコンの間にあるポート(データの通り道)に割り振られている識別用の番号です。

インターネットで情報をやりとりする場合は
現実世界の手紙と同様に送信先(宛先)を指定しなければ正しく届きません。

IPアドレスを指定して送信先を特定することは出来るのですが
どのプロトコルを使うかまでは特定できません。
そこで、ポート番号で指定することで、どのプロトコルを指定するのかを特定しています。

例を挙げるなら、80番ポートはHTTP(Webブラウジング)ですよといった具合です。

代表的なプロトコルにはあらかじめポート番号が振られています。 これをウェルノウンポート(well-known ports)といいます。

代表的なウェルノウンポート

ポート番号 プロトコル
20, 21 FTP(ファイル転送)
22 SSH(暗号化されたリモートコンピュータとの汎用通信)
23 Telnet(リモートコンピュータとの汎用通信)
25 SMTP(メール送信)
53 DNS(ホスト名解決)
80 HTTP(Webブラウジング)
110 POP3(メール受信)
443 HTTPS(暗号化されたHTTP)

ステートフル(Stateful Protocol)とステートレス(Stateless Protocol)

あんまり馴染みのない言葉ではありますが説明を見たら「あ〜そんなことなのね〜」ぐらいの感覚で見てもらえると思います。

ステートフルとは、状態を持つプロトコルのことです。

例を挙げると、ネットショッピングでお買い物をする時に必ず欲しい商品をカートに入れてから購入すると思います。 このカートに入れて購入リストに保存している状態こそステートフル(状態を持つ)というわけです。

意外と身近なところで、お世話になっているプロトコルです。

反対に、ステートレスとは、状態を持たないプロトコルのことです。

どちらかというと、インターネットではステートレスの方が一般的です。 序盤で紹介したHTTP通信がまさにステートレス(状態を持たない)なのです。

Googleで「りんご」と検索したときに、「りんご」の検索結果が表示されるわけですが、それ以前や以後に検索していた内容が反映されることはないですよね?
つまり、1回のリクエストに対してレスポンスを返しているのがステートレスなのです。

おわりに

意外と身近な部分で触れているWebの仕組みや用語を出来るだけ簡潔に解説してみました。 学び始めてみると、筆者自身も「そういう仕組みなんだ!」とか「この用語そういう意味だったのか〜」など今後のタメになることばかりでした。 記事を拝見された方の学習や再復習の手助けになれば幸いです。

【初学者向け】Linuxを学んでみた

本記事について

タイトル通りではありますが、「Linuxというワードは聞いたことある程度や、そもそも名前すら聞いたことないよ!(TT)」という方に向けて作成しました。 入門書の入門のような感覚で見ていただけると幸いです。

Linuxとは?

LinuxはOSの一種でコンピュータを動かす基本ソフトウェアのことです。

Linuxの特徴

  • オープンソースであるため、誰でも自由かつ実質無償で利用することができる
  • 質の高い多くのソフトウェアがLinux上で利用できる
  • 世界中でサーバ用途として広く利用されているため、信頼性が高く、また汎用性もバッチリ
  • 操作を自動化するための仕組みが用意されており、サーバの運用が行いやすい
Linuxの技術は長い時をかけて検証されているため大幅な変更をする必要がない

つまり!!一度習得すれば何年も使えるという代物なのです!

Linuxカーネルディストリビューション

カーネル

カーネルアプリケーションソフトウェアとハードウェアの架け橋のような役割
OS(OperatingSystem)の中核となるソフトウェア

種類は一つ

ディストリビューション

Linuxを使ううえで必要ないくつものソフトウェアなど
諸々をまとめてパッケージ化しユーザが使いやすくしたもの

様々な種類があるが今の主流は、Red Hat系・Debian

シェル

シェルは、LinuxCLIを提供するソフトウェア

ユーザとLinuxカーネルの仲介役

CLI:キーボードからコマンド入力し、文字列として結果を出力するインターフェースのこと

ユーザ→シェル→Linuxカーネル

ユーザ←シェル←Linuxカーネル

ユーザがコマンド入力し、シェルが解釈して、Linuxカーネルに伝える
コマンド実行して、シェルを介して、ユーザにコマンド結果を表示する

[Rocky(ユーザー名)@localhost~]$

localhostはホスト名

「$」マークはプロンプト

プロンプトとは、コマンド入力を待っているから入力してねという意味

シェルの仕組み

  1. ユーザがプロンプトにコマンドを打つ
  2. シェルが入力された名前のコマンドを探す
  3. Linuxカーネルが見つかったコマンドを実行
  4. シェルが実行結果を画面に表示する

シェルの種類

sh

  • 最も古いシェル
  • ほぼ全てのUnixで利用できる標準的なシェル
  • 機能は少ない

bash

  • shを基本として機能拡張したシェル
  • Linux環境でデフォルトのログインシェル
  • 学習ならbashがおすすめ

zsh

  • bashの機能を取り込み独自の拡張も追加
  • 機能の豊富なシェル

設計思想として

Linux一つのプログラムには一つのことをうまくやらせる
色々な機能をできるだけ細かく切り分けて作る

ディレクトリとファイルについて

WindowsmacOSでは、アプリや文書、音楽、動画、画像などのデータ(情報)はファイルとして保存されます。そしてこうしたデータを格納したいくつかのファイルをフォルダという入れ物にまとめることで、管理をしやすくしています。

このデータの取り扱い方法はLinuxでも同様です。

WindowsmacOSでフォルダと呼ばれるものを、Linuxではディレクトと呼びます。

Linuxではシステム全体も1つ1つのファイルとして構成されています。
Linuxではあらゆるものがファイルとして管理されているため、Linuxを使いこなすにはファイルの取り扱いについてもしっかりとした知識を持っている必要があります。

Linuxは一つのディレクトリから、入れ子構造が始まります。
イメージとしては、大きな箱に小さな箱を入れていく感じです。

特別なディレクト

ディレクトリを操作するために覚えてほしい特別なディレクトリが4つあります。 ルートディレクトリ・ホームディレクトリ・カレントディレクトリ・親ディレクトリです。 これらはディレクトリの居場所を把握するために必要なディレクトリです。

ルートディレクト

ディレクトリ階層の最上階層のことです。 ファイルやディレクトリ操作では「 /(スラッシュ、ルート)」を使って表します。 ファイルシステムの始まりの場所で、全てのファイルやディレクトリはここから始まります。 「ルート」とも呼ばれ、ルート(root)は「起源、根っこ」を意味します。

ホームディレクト

ユーザーの作業開始位置となるディレクトリです。 Linuxにログイン直後のユーザーは必ずホームディレクトリにいます。 ユーザー毎に異なるホームディレクトリを使うので、ユーザーによってホームディレクトリの場所は異なります。 ファイルやディレクトリ操作では「 ~チルダ)」を使って表します。

カレントディレクト

現在居るディレクトリのことをカレントディレクトリと言います。 ファイルやディレクトリ操作では「 .(ドット)」を使って表します。

ディレクト

カレントディレクトリの直上にあるディレクトリを親ディレクトリと言います。 親ディレクトリは通常、カレントディレクトリを含む階層の一つ上に位置しています。 ファイルやディレクトリ操作では「 ..(ドット2つ)」を使って表します。

パス(Path)

ファイルやディレクトリが、どの位置にあるかを教えてくれる文字列のこと。
ファイルやディレクトリへの道筋を示しています。

そして、ファイルの位置を表した道筋をファイルパス、ディレクトリの位置を表した道筋をディレクトリパスと呼びます。先程紹介したルートディレクトリ、ホームディレクトリ、カレントディレクトリ、親ディレクトリの4つにはそれぞれ「ディレクトリパス」が設定されています。

特別なディレクト ディレクトリパス
ルートディレクト / 」 (スラッシュ)
ホームディレクト ~ 」 (チルダ)
カレントディレクト . 」 (ドット)
ディレクトリ(カレントディレクトリの一つ上にある階層) .. 」 (ドット2つ)

絶対パス相対パス

パスはルートディレクトリ( / )を起点とした絶対パスとカレントディレクトリ( . )を起点とした相対パスの2つの方法で指定することができます。

相対パスでは、1つ上の階層のディレクトリ(親ディレクトリ)は「..」(ドット2つ)というパスを使って指定します。

以下のディレクトリ構造を例に、「Rocky」というディレクトリを
カレントディレクトリとした時の絶対パス相対パスの書き方は下の表のようになります。

/
└── abc
     ├── Users
     │      └── Rocky(ユーザー名)
     │              └── study
     │                     └──linux
     └── Work Documents

Linuxディレクトリ構造

Linuxディレクトリ構造はディレクトリの種類がとても多く、一度に覚えるとパンクしてしまいます。
「ここのディレクトリはこういう役割か〜」ぐらいの認識で大丈夫なので、知らないディレクトリが出てきた時にググってインプットしていくのが一番ベストかなと思います。

ディレクト 役割
/(ルートディレクトリ) ディレクトリの最上位に位置し、すべてのファイルとディレクトリの起点となっています。
/bin(ビン) 基本的なコマンドが含まれるディレクトリです。例えばlsコマンドやcpコマンドなどのコマンドがここにあります。binはbinaryの略です。
/boot(ブート) システムの起動に関する重要なファイルがここにあります。ユーザーはこのディレクトリを操作するようなことは殆どありません。
/dev(デヴ) バイスファイルが格納されているディレクトリです。デバイスファイルとはマウスやモニターといったハードウェア機器をファイル化した表したものです。devはdeviceの略です。
/etc(エトセ) OSなどのシステム全体の設定ファイルが格納されているディレクトリです。設定ファイルがあるのでとても重要なディレクトリです。etcはetceteraの略です。
/home ユーザーのホームディレクトリが格納されているディレクトリです。ホームディレクトリはLinuxにログインした時の最初の場所となるディレクトリのことです。
/lib(リブ、ライブラリ) OSに必要なライブラリファイルが格納されているディレクトリです。ライブラリファイルとはたくさんのプログラムで共有されて使われている特別なファイルで、プログラムが動くために必要な機能やコードが詰まっています。libはlibraryの略です。
/root(ルート) システムの管理者であるrootユーザーのホームディレクトリです。ルートディレクトリ「/」とは別物です。
/sbin(エスビン) システムの管理者であるrootユーザーのみが実行できるコマンドが含まれているディレクトリです。システムの管理や設定に必要なコマンドがここにあります。sbinはsystem binaryの略です。
/usr(ユーザー) 全ユーザーが共通して利用するプログラムやライブラリのデータが格納されているディレクトリです。
/var(バー) ログファイルが格納されているディレクトリです。ログファイルは、コンピューターの動作やアプリケーションの動きを記録するためのファイルです。varはvariableの略です。

Linuxのコマンドとオプション

Linuxディレクトリ構造やパス表記などについて理解したところで、ここからは実際にディレクトリを操作していく方法を学んでいきましょう!

おさらいですが、下の図の[Rocky@localhost~]$の部分はコマンドプロンプトのこと。
つまり、コマンドの入力を待ち受けていることを示す文字列です。
[Rocky@localhost~]$ 以降に打ち込む部分を「コマンド」といいます。下記の図の場合だと「ls」がコマンドにあたります。
コマンド入力後にエンターキーを押下すると結果が出力されます。

#コマンド入力
[Rocky@localhost~]$ ls

#出力結果
ダウンロード デスクトップ
ドキュメント 音楽 画像

ここからは、初歩的かつよく使うコマンドを紹介します!
コマンドプロンプトのユーザ情報は省略して、$の部分だけを残しています。

cd(change directory)

ディレクトリを移動するコマンド
※cdコマンドではオプションを使うことは滅多にありません。

# 書式
cd オプション ディレクトリ

# 例
$ cd /Users/Rocky

cdコマンドを用いた特別なディレクトリへの移動方法

コマンド(+ 特別なディレクトリを指定) 説明
cd ディレクトリを移動するコマンドです。
cd .. 1つ上の階層のディレクトリに移動します。
cd ~ ホームディレクトリ(Linuxにログインした時の最初に位置するディレクトリ)に移動します。
cd / ルートディレクトリに移動します。

pwd(print working directory)

自分が現在いるディレクトリ(カレントディレクトリ)を表示するコマンドです。
シェルでファイルなどを操作する際には、カレントディレクトリが起点となります。
そのため、なにか作業をする前にはまずpwdコマンドを実行して、カレントディレクトリを確認する癖をつけておくとケアレスミスが格段に減るのでオススメです。
※cdコマンド同様、オプションを使うことは滅多にありません。

# 書式
pwd オプション

# 例
pwd
/Users/Rocky
コマンド 説明
pwd 自分が現在いるディレクトリ(カレントディレクトリ)を表示するコマンドです。

ls(list)

ファイルやディレクトリの一覧を表示するコマンドです。

# 書式
ls オプション ファイル

# lsだけの場合はカレントディレクトリのファイルとディレクトリを表示
$ ls   
Desktop Library Pictures

# 複数のディレクトリを指定することもできる
$ ls / /Rocky_Stuby
/:
Desktop Library Pictures
/Rocky_Stuby:
Ruby  JavaScript   React

パス名展開

ファイル名の一部をパターンで指定することで、複数のファイルを一度に指定することができます。
これをパス名展開といいます。

パス名展開で使用するのは2つの記号です。

記号 意味
* 任意の文字列
? 任意の1文字

「 * 」や「 ? 」のような特殊な文字のことを「ワイルドカード」といいます。
ワイルドカードはファイル名やディレクトリ名を検索する時によく利用されますので覚えておいてください。

* (アスタリスク)」は、「任意の文字列を指定する」と言う意味です。

* (アスタリスク)を用いた検索の一例

# 拡張子がtxtのファイルの一覧を表示
$ ls *.txt
test.txt    Ruby_stuby.txt    Vim_practice.txt

? (クエスチョンマーク)で、「任意の1文字を指定する」、と言う意味です。
ファイル名の文字数がわかっている場合は「 ? 」を使って絞り込むことができます。「 ? 」は一個につき一文字を表します。

? (クエスチョンマーク)を用いた検索の一例

#zから始まり、4文字で終わるファイルを表示
$ ls /bin/z???
/bin/zcal   /bin/zamp

オプションとは?

コマンドの動きに追加の機能を指定したり、本来のコマンドの動きとは違った動きを指定するものです。
オプションは、「-」ハイフンの後に文字や記号を付けて記述します。

オプションのいろいろな書き方

# 書き方①コマンドの後ろに半角スペースで区切って指定する
ls -a

# 書き方②オプションは2つ以上指定することができる
ls -a -l

# 書き方③オプションは2つ以上指定する場合、一つにまとめることができる
ls -al

# 書き方④オプションとコマンドの引数を同時に指定できる
ls -al /

# 書き方⑤「--」で始まるロングオプションがある
ls --version
コマンド (+ オプション) 説明
ls -l ファイルの詳細情報(ファイルタイプ・ファイルモード・リンク数・所有者・所有グループ・サイズ・タイムスタンプ・ファイル名ディレクトリ名)を表示します。
ls -a 「.」ドットで始まる隠しファイルも含めた全て(all)のファイルを表示します。
※ 隠しファイルとはファイル名が「.」ドットから始まるファイル。通常lsコマンドだけでは表示されません。
ls -t ファイルやディレクトリの最終更新時間順(time)に表示します。
ls -r 逆の順序(reverse)でファイルやディレクトリを表示します。

mkdir(make directory)

ディレクトリを作成するコマンドです。
ディレクトリ名は日本語だと文字化けしたりする恐れがあるので、英語でファイル名を作成しましょう。

# 書式
mkdir オプション 作成するディレクトリ名

# 例) testディレクトリを作成する
$ mkdir test

必要なディレクトリ階層を一度に作成する

mkdirコマンドに-pオプションを付けると、親ディレクトリも含めて、必要なディレクトリ階層を一度に作成することができます。
例えばtestディレクトリの中にpracticeというディレクトリを作りたい時はこのように書きます。

# photosディレクトリの中にsummerディレクトリを作成
$ mkdir -p test/practice
コマンド (+ オプション) 説明
mkdir ディレクトリを作成するコマンドです。
mkdir -p ディレクトリも含めて、必要なディレクトリ階層を一度に作成します。

rmdir(remove directory)

空のディレクトリを削除するコマンドです。

空のディレクトリとは、中にファイルやディレクトリが含まれていないディレクトリのことを指します。
空ではないディレクトリを削除しようとするとエラーになります。それは中にファイルが残っていることを気付かずにディレクトリを削除してしまうのを防ぐためです。

# 書式
rmdir ディレクトリ名

# 例
$ rmdir test
コマンド 説明
rmdir 空のディレクトリを削除するコマンドです。

cat(concatenate)

ファイルの内容を表示するコマンドです。

# 書式
cat オプション ファイル名

# 例
$ cat /etc/hosts
127.0.0.1 localhost
::1       localhost

catコマンドでは主に以下のオプションが用いられます

-n:行番号を付加して表示します。

# 例
$ cat /etc/hosts
1 127.0.0.1  localhost
2 ::1       localhost
コマンド (+ オプション) 説明
cat ファイルの内容を表示するコマンドです。
cat -n ファイルの内容に行番号を付加して表示します。

less(less - opposite of more)

ファイルの中身をスクロール表示するコマンドです。 たくさんのコードが書かれたファイルの中身を開く時に便利なコマンドです。

例えば上記のコードを実行すると以下のように長いファイルの中身がスクロール画面で表示されます。

# 書式
less オプション ファイル名

# 例
$ less /etc/zshrc


# System-wide profile for interactive zsh(1) shells.

# Setup user specific overrides for this in ~/.zshrc. See zshbuiltins(1)
# and zshoptions(1) for more details.

# Correctly display UTF-8 with combining characters.
if [[ "$(locale LC_CTYPE)" == "UTF-8" ]]; then
    setopt COMBINING_CHARS
fi

# Disable the log builtin, so we don't conflict with /usr/bin/log
disable log

# Save command history
HISTFILE=${ZDOTDIR:-$HOME}/.zsh_history
HISTSIZE=2000
SAVEHIST=1000

# Beep on error
setopt BEEP

# Use keycodes (generated via zkbd) if present, otherwise fallback on
# values from terminfo
.
.
.

lessコマンド時のスクロール画面の操作は以下の通りです

操作方法 内容
スペースキー または F 画面下にスクロール移動します。
b 画面上にスクロール移動します。
j 1行下にスクロール移動します。
k 1行上にスクロール移動します。
q lessコマンド(スクロール画面)を終了します。

lessコマンドでファイルの中身を表示した際に、特定の文字列を検索して確認することもできます

操作方法 内容
/検索したい文字列 下方向に向かって文字列を検索します。
?検索したい文字列 上方向に向かって文字列を検索します。
文字列を検索後にn 検索した文字列の次の検索結果に移動します。
文字列を検索後にN 検索した文字列の前の検索結果に移動します。

headとtail

ファイルの中身の先頭から10行を確認したい場合は head コマンド

ファイルの中身の末尾から末尾から10行を確認したい時は tail コマンド

headコマンド、tailコマンド共に書式やよく用いられるオプションは同じです。

# 書式
head オプション ファイル名
tail オプション ファイル名

# 例:headコマンドでFILEファイルの先頭10行を表示する
head FILE

# 例:tailコマンドでFILEファイルの末尾10行を表示する
tail FILE

headコマンドでは主に以下のオプションが用いられます

オプション 説明
-n 行数:ファイルの先頭から指定した行数を表示します。
-c バイト数:ファイルの先頭から指定したバイト数を表示します。

tailコマンドでは主に以下のオプションが用いられます

オプション 説明
-n 行数:ファイルの末尾から指定した行数を表示します。
-c バイト数:ファイルの末尾から指定したバイト数を表示します。
-f ファイル名:ファイルに新しい内容が追加されるたびに自動的に表示を更新します。

まとめるとこのような表になります。

コマンド (+ オプション) 説明
head ファイルの中身の先頭から10行を表示します。
head -n 行数 ファイルの先頭から指定した行数を表示します。
head -c バイト数 ファイルの先頭から指定したバイト数を表示します。
tail ファイルの中身の末尾から10行を表示します。
tails -n 行数 ファイルの末尾から指定した行数を表示します。
tail -c バイト数 ファイルの末尾から指定したバイト数を表示します。
tail -f ファイルに新しい内容が追加されるたびに自動的に表示を更新します。

touch

空の新しいファイルを作成したり、既存のファイルの更新日時を変更するコマンドです。

# 書式:空の新しいファイルを作成する場合
$ touch 新しいファイル名

# 書式:既存のファイルの更新日時を現在の日時に変更する場合
$ touch 既存のファイル名
コマンド 説明
touch 新しいファイル名 空の新しいファイルを作成します。
touch 既存のファイル名 既存のファイルの更新日時を現在の日時に変更します。

rm(remove)

作成したファイルを削除するコマンドです。
rmコマンドを実行すると、対象のファイルはゴミ箱には行かず、完全に削除されるので注意してください。

# 書式
rm オプション 削除するファイル名

# 例
$ rm test.txt

rmコマンドでは主に以下のオプションが用いられます

オプション 説明
-i 削除の確認を行う。対象のファイルを本当に削除しますか?という形で確認する。これは誤って削除することを防ぐために利用されます。
-f 強制的に削除を実行します。ファイルによっては削除に確認を求められる場合がありますが、このオプションはその確認を無視して強制的に削除を行います。
-r ディレクトリを対象に削除を行います。※ディレクトリの中のファイルやディレクトリも削除されます。
コマンド (+ オプション) 説明
rm 作成したファイルを削除するコマンドです。
rm -i 削除を行う時の確認をします。
rm -f 確認を無視して強制的に削除を実行します。
rm -r ディレクトリを対象に削除を行います。

mv(move)

ファイルの移動、ファイル名の変更を行うコマンドです。

移動元と移動先が「ファイルと存在しないファイル」「ファイルとディレクトリ」「ディレクトリとディレクトリ」
それぞれの組み合わせ次第でmvコマンドの内容が意味合いが変わります。
ディレクトリなのかファイルなのかはシステムが自動的に判断します。

# 書式:ファイルの移動
mv 移動元のファイル 移動先のファイル

# 例
$ mv file1 file2
コマンド 移動元 移動先 rmコマンドの内容
mv ファイル 存在しないファイル 移動元のファイル名が、移動先のファイル名に変更します。
mv ファイル ディレクト 移動元のファイルは、移動先のディレクトリに移動します。
mv ディレクト ディレクト 移動元のディレクトリは、移動先のディレクトリに移動します。
コマンド (+ オプション) 説明
mv ファイルの移動、ファイル名の変更を行うコマンドです。
mv -i 移動や名前の変更を行う時の確認をします。
mv -f 確認を無視して強制的に移動や名前の変更を実行します。

cp(copy)

ファイルをコピーするコマンドです。

先程のmvコマンドと同じようにコピー元とコピー先が「ファイルと存在しないファイル」「ファイルと既存ファイル」「ファイルとディレクトリ」それぞれの組み合わせ次第でcpコマンドの意味合いが変わります。
こちらも、ディレクトリなのかファイルなのかはシステムが自動的に判断します。

# 書式
cp オプション コピー元 コピー先

# 例
$ cp file1 file2
コマンド コピー元 コピー先 cpコマンドの内容
cp ファイル 存在しないファイル コピー元の中身をコピーして、コピー先のファイル名でファイルが作成されます。
cp ファイル 既存ファイル コピー元の中身を、コピー先に上書きします。
cp ファイル ディレクト ディレクトリの下にコピー元のファイルが作成されます。

cpコマンドでは主に以下のオプションが用いられます

オプション 説明
-i ファイルを上書きコピーしてよいのかを確認するために使います。これは誤って上書きコピーすることを防ぐために利用されます。
-r ディレクトリをコピーします。cpコマンドは基本的にファイルをコピーする機能なのでコピー元がディレクトリだとエラーが発生してしまいます。-rオプションを付けると、ディレクトリをコピーすることができるようになります。
コマンド (+ オプション) 説明
cp ファイルをコピーするコマンドです。
cp -i コピーを行う時の確認をします。
cp -r ディレクトリをコピーします。

リンクを張るコマンドです。

「リンクを張る」とは?

Linuxではファイルに別名を付けることができ、別名を付けることを「リンクを張る」と言います。

そして、このリンクには2種類のリンクが存在しています。 それが「ハードリンク」と「シンボリックリンク」です。

ハードリンクとは?

  • 1つのファイルの実体に複数の名前をつける機能です
  • 元のファイルを削除しても消えない
  • 削除が必要な場合は全てのファイル(ハードリンク)を消す必要がある

シンボリックリンクとは?

  • リンク先のパス名が書かれた特殊ファイル
  • リンク先がファイルの実体
  • シンボリックリンクを消しても何も影響はない
    シンボリックリンクはリンク先のパス(道筋)名を記載しただけだから
  • シンボリックリンクを残したままファイルの実体を削除したり、ファイル自体を別の場所に移動させてしまうとファイルの参照はできない
    →ファイルの実体(目的地)が無ければ行くことはできない
    →ファイル自体が別の場所に移動すればパス(道筋)も変わってしまうから

リンクを使用するタイミング

長いパス名を省略したい時に使うことが多いです。

例えば、/home/user/documents/practice/study_1/......のようにディレクトリやファイルが深い層にあると、指定するたびにパス名を入力しなければなりません。たくさんの手間と時間が掛かってしまいます。 そこで、リンクを使用すると設定したディレクトリ名やファイル名だけで簡単にアクセスできます。

※ ハードリンクとシンボリックリンクでは、シンボリックリンクのほうが使用することが多いです。

  • ハードリンクには制限があります。
    • 異なるディスクを跨いで作成できない
    • ディレクトリに対して使えない

その点シンボリックリンクは制限なしのため、非常に使い勝手が良いです。

書式、ハードリンク、シンボリックリンクの詳細は以下のとおりです。

# 書式
ln オプション リンク元ファイル名 リンク名

# 例:ハードリンクを作成
$ ln file1 file2

# 例:シンボリックリンクを作成
$ ln -s file1 file2
コマンド (+ オプション) 説明
ln リンクを張る(ハードリンクを作成する)コマンドです。
ln -i シンボリックリンクを作成します。

find

ファイルがどこにあるのか検索するコマンドです。

# 書式
find 検索開始ディレクトリ 検索条件 アクション

# 例
$ find.- name README.md -print
./wordpress/ /README.md

$ find.- name README.md -print の解説

. :検索開始ディレクトリ(例では、「 . 」カレントディレクトリを指定)
- name README.md :検索条件
-print :検索アクション

フローで表すと
1. カレントディレクトリを起点にして
2. file.txtに該当するファイルを検索し、該当ファイルを見つけたら
3. -print(パスを表示すること)を実行

「 -print 」はfindコマンドで頻出の検索アクションでパス名を表示します。
検索アクションを指定しない場合は「 -print 」が指定された時と同じ動作を行うので省略可能です。

よく使われる検索条件

-name
  • ファイル名を指定してファイルを検索します。
  • ファイル名の大文字,小文字は区別します。
  • ワイルドカード(「 * 」や「 ? 」)を組み合わせて使えます。
  • 「 * 」を使って指定する際は、検索条件を「 ' ' 」(シングルクォーテーション)または「 " " 」(ダブルクォーテーション)で囲います。
記号 意味
* 任意の文字列
? 任意の1文字
# 拡張子が「.html」であるファイルを検索する
$ find . -name "*.html" -print 

#「.html」が含まれる検索結果を出力
./Desktop/stuby.html
./Desktop/Ruby.html
-iname
  • ファイル名を指定してファイルを検索します。
  • ファイル名の大文字小文字は区別しません。
# 例
$find . -iname file.txt

./Desktop/documents/FILE.txt
./Desktop/pictures/File.txt
./Desktop/sample_git/file.txt
-type
# -type f は 通常のファイルを検索
$ find . -type f -print

# -type l は シンボリックリンクを検索
$ find . -type l -print

# -type d は ディレクトリを検索
$ find . -type d -print
-a
  • 複数の検索条件を指定します。
  • 「-a」は省略可能。
# 例
$ find . -type d -a -name images -print

「ファイルの種類がディレクトリ」と「TESTという名前」の両方の条件を満たすディレクトリの検索を意味します。

コマンド 検索条件 説明
find -name 大文字小文字を区別して指定した名前を検索します。
find -iname 大文字小文字を区別せずに指定した名前を検索します。
find -type f 通常のファイルを検索します。
find -type l シンボリックリンクを検索します。
find -type d ディレクトリを検索します。
find 検索条件1 -a 検索条件2 検索条件1 且つ 検索条件2 を満たしたものを検索します。

chmod(change mode)

chmodコマンドはファイルやディレクトリのパーミッションを設定するコマンドです。
と言われても、なんのことやらさっぱりだと思うので大事な説明を先にします。

chmod開設の前に知っておきたいこと

chmodコマンドを理解するために知っておきたい概念が大きく2つあります。

1. ファイルのオーナーとグループ
2. パーミッション

この二つについて説明します。

1. ファイルのオーナーとグループ

ファイルには全てオーナー(所有者)とグループ(所有グループ)が設定されていて権限管理されています。

オーナーとはファイルやディレクトリの所有者を指します。
オーナーはファイルやディレクトリを作成したユーザーであり、そのファイルやディレクトリに対して特定の権限を持ちます。

グループとは複数のユーザーをまとめて管理するための仕組みです。
複数のユーザーが同じグループに所属することで、同じ権限を共有したり、ファイルやディレクトリの共有を行うことができます。

確認方法

ls -l コマンド でファイルのオーナーとグループを確認することができます。 

# ls -lコマンドで表示された「Rocky」はオーナー、「practice」はグループの項目です
$ ls -l ~/Study2023
-rwxr-xr-x  1 Rocky  practice  59  7 19 18:50 /Users/Rocky/Study2023

2. パーミッション

パーミッションとはファイルやディレクト「誰がどのように操作できるか」を定めたものです。
ファイルやディレクトリにはオーナー、グループ、その他のユーザーの3つのユーザーが存在し
それぞれに対して①read(読み取り)、②write(書き込み)、③execute(実行)の3つの権限が設定されています。

具体的には、以下のような形でパーミッションが表現されます。

記号 権限
r 読み取り read
w 書き込み write
x 実行 execute

これらの権限は、オーナー、グループ、その他のユーザーごとに個別に設定されます。
例えば、所有者が r (読み取り)と w (書き込み)の権限を持ち、グループとその他のユーザーは r (読み取り)のみ許可されるといった設定ができます。
また、ディレクトリに対しても同様にパーミッションを設定することができます。

パーミッションの確認方法と読み方

ファイルのオーナーとグループの時と同じように ls -l コマンド でファイルやディレクトリのパーミッションを確認することができます。

#例
$ ls -l ~/Study2023

#出力結果
-rwxr-xr-x  1 Rocky  practice  59  7 19 18:50 /Users/Rocky/Study2023

ls -l コマンド で出力された -rwxr-xr-x に注目してください。
1文字目の「 - (ハイフン)」がある場所はファイルタイプ(ファイルの種類)の項目です。

今回の場合は1文字目が「-」のため、通常のファイルです。

1文字目の「-」の後ろの9文字 rwxr-xr-xパーミッションです。
パーミッションrwx , r-x , r-x と3文字1セットが3つ連なっていて、

を意味しています。

ファイル(ディレクトリ)への権限とその種類

パーミッションに表示された r w x の記号は、先ほど紹介したファイル(ディレクトリ)への権限を意味します。 - は権限がないことを意味します。

権限を許可する対象 read (読み取り) write (書き込み) execute (実行)
オーナー rwx ○ 許可 ○ 許可 ○ 許可
グループに属するユーザー r-x ○ 許可 × 権限なし ○ 許可
その他のユーザー r-x ○ 許可 × 権限なし ○ 許可

オーナーとグループ、そしてパーミッションへの理解が深まったと思うのでchmodコマンドの書き方について見ていきましょう。

chmodの書き方

おさらいですがchmodコマンドはファイルやディレクトリのパーミッションを設定するコマンドと説明しました。ここからは書式を見ていきましょう。

# 書式
chmod [u、g、o、a] [+、-、=] [r、w、x] ファイル名

# 例
$ chmod u+x test.txt
  • 設定対象ユーザー

ugoa」はそれぞれパーミッションを設定する対象を示す記号です。

記号 意味 英語名 説明
u ユーザー User 所有者に対するパーミッションを設定する。
g グループ Group グループに対するパーミッションを設定する。
o その他のユーザー Others その他のユーザーに対するパーミッションを設定する。
a すべてのユーザー All u、g、oすべてのユーザーに対するパーミッションを設定する。
  • 権限の追加・削除・設定

+-=」は権限の追加・削除・設定を示します

記号 意味 説明
+ 権限を追加する 指定したパーミッションを追加する。
- 権限を削除する 指定したパーミッションを削除する。
= 権限を設定する 指定したパーミッションを設定する。
記号 権限
r read(読み取り)
w write(書き込み)
x execute(実行)
  • ugoa は 「誰に対して」
  • +-= は 「どうするのか」
  • rwx は 「何を」

を表します。

  • 誰に対して : u ユーザー
  • どうするのか : + 権限(パーミッション)を追加する
  • 何を : x 実行(を)

以上から「test.txtファイルにおいて、ユーザー(u)に / 実行(e)する権限(パーミッション)を / 追加する(+)」という意味になります。

「 誰に対して / どうするのか / 何の権限を 」を記号で組み合わせて記述します。

chmodコマンドを数字で指定する

8進数は0から7までの数字を使って表現される数の表記方法です。 パーミッションに割り振られた8進数を3桁で記述することで権限の指定を行うことができます。 意味がわかると簡潔に記述することができてとても便利です。

記号 権限 割り振られている数字
r read(読み取り) 4
w write(書き込み) 2
x execute(実行) 1

(読み込み)には「4」、w(書き込み)には「2」、x(実行)には「1」が割り振られています。 上記の合計値を「オーナー」「グループ」「その他のユーザー」の順で入力するとパーミッションを変更することができます。

# 書式
chmod 8進数3桁の表記 ファイル名

# 例
chmod 755 test.txt

例の chmod 755 test.txt では

1.オーナーに read(4),write(2),execute(1) の権限が追加されて、 4 + 2 + 1 = 7
2.グループに read(4),execute(1) の権限が追加されて、 4 + (0) + 1 = 5
3.その他のユーザーに read(4),execute(1)の権限が追加されて、 4 + (0) + 1 = 5

となり、この数字を記号に直すと 

  • オーナーは read と write と execute が付与されて rwx
  • グループは read と execute が付与されて r-x
  • その他のユーザーは read が付与されて r-x

以上から 755 は rwx / r-x / r-x を意味します。

早見表

記号 権限 数字の割り振り 8進数
rwx 読み取り,書き込み,実行 4 + 2 + 1 7
rw- 読み取り,書き込み 4 + 2 6
r-x 読み取り,実行 4 + 1 5
r-- 読み取り 4 4
-wx 書き込み,実行 2 + 1 3
-w- 書き込み 2 2
--x 実行 1 1

chown(chamge owner)

ファイルの所有者や所有グループを変更するコマンドです。

# 書式:ファイルの所有者を変更する
chown オプション ユーザー ファイル

# 例:test.txtファイルの所有者をuserに変更する
chown user test.txt

# 書式:ファイルの所有グループを変更する
chown オプション :グループ ファイル

# 例:practice.txtファイルの所有グループをStudy(グループ)に変更する
chown :Study practice.txt

chownコマンドでは主に以下のオプションが用いられます。 ※小文字rではなく大文字のRです。

-R:指定したディレクトリとそのディレクトリ以下のファイルやディレクトリの所有権も変更します。
コマンド (+ オプション) 説明
chown ファイルの所有者や所有グループを変更するコマンドです。
chown -R 指定したディレクトリとそのディレクトリ以下のファイルやディレクトリの所有権も変更します。

ps(process status)

実行中のプロセスを表示するコマンドです。

プロセスとは

コンピューター上で実行されるプログラムのことです。ここでいうプログラムとは、Webブラウジングスプレッドシートを立ち上げて入力をするなどを指します。

# 書式
ps オプション

# 例
$ ps

#出力結果
  PID TTY           TIME CMD
24545 ttys000    0:00.23 -zsh
25211 ttys002    0:00.05 /usr/local/bin/zsh -il

psコマンドを実行すると、PIDTTYTIMECMDが表示されます。
図で解説するとこのようになります。

項目 内容
PID プロセスID
TTY ターミナル名
TIME プロセスがCPUを使用した時間
CMD 実行したコマンドやプログラム名

psコマンドのauxオプションとは?

  • a はすべてのユーザーのプロセスを表示
  • u は詳細情報を表示
  • x はユーザーのすべてのプロセスを表示

という意味です。

# auxはオプションですが、「-」を付けなくていいです
aux:すべてのユーザーのプロセスを、詳細情報に合わせて表示します。

# 例
ps aux
USER               PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
_windowserver      145   4.3  0.8 410229936  63184   ??  Ss    1 170  574:25.76 /System/Library/
Rocky             24539   2.5  0.3 35518656  27064   ??  S    日11AM   0:20.34 /System/Applicat
  • auxオプションで表示される各項目について
項目 内容
USER プロセスを実行しているユーザー名
PID プロセスID
%CPU プロセスのCPU使用率
%MEN プロセスのメモリ使用率
VSZ プロセスが使用している仮想メモリのサイズ
RSS プロセスが使用している物理的なメモリのサイズ
TT ターミナル名
STAT プロセスの状態
STARTED プロセスを開始した時刻
TIME CPUの使用時間
COMMAND 実行中のコマンド
コマンド (+ オプション) 説明
ps 実行中のプロセスを表示するコマンドです。
ps aux すべてのユーザーのプロセスを、詳細情報に合わせて表示します。

kill

プロセスに対してシグナルを送るためのコマンドです。 シグナルを送られたプロセスは終了します。

例えば、突然プロセスが動かなくなってしまった場合、そのプロセスに対してシグナルを送ると、強制的にプロセスを終了させることができます。

シグナルとは

実行中のプロセスを制御する信号のこと。シグナルには、シグナル番号とシグナル名が割り振られています。
kill -l コマンドでシグナルの種類を確認することができます。

代表的なシグナル
シグナル 番号 意味
SIGHUP 1 端末エミュレーターなどの終了
SIGNIT 2 Ctrl+cキーを押したときの強制終了
SIGKILL 9 強制終了
SIGALRM 14 設定した時刻に送られるタイマーシグナル
SIGTERM 15 終了(killコマンドのデフォルト)
SIGCONT 18 実行再開
SIGTSTP 20 Ctrl+Zキーを押したときの一時停止
# 書式
kill PID   または   kill -シグナル番号 PID   または   kill -シグナル名 PID
# この2つのコマンドは同じ
$ kill 8795
$ kill -TERM 8795

このように kill PID の入力でプロセスを終了させることができます。

コマンド 説明
kill プロセスに対してシグナルを送り、プロセスを終了させるコマンドです。
kill PID 指定したプロセスIDにシグナルを送り、プロセスを終了させます。
kill -シグナル番号 PID 指定したプロセスIDにをシグナル番号に該当するシグナルを送り、プロセスを終了させます。
kill -シグナル名 PID 指定したプロセスIDにをシグナル名に該当するシグナルを送り、プロセスを終了させます。

おわりに

Linuxの入門の入門ということで、実際に学んで見たことを記事にしてみました。 コマンドだけでもなかなかボリューミーなので、焦らずターミナルを使って一つ一つコマンドを打って実行結果を確かめてみるのが一番おすすめです! YoutubeやUdemyなどの動画教材を見ながら手を動かしていくとなお知識として定着しやすいと思うで、ぜひやってみてください! 大変長くなりましたが、お読みいただきありがとうございました。

【自己紹介】〜IT業界に未経験から転職するためにプログラミングスクールに入会したお話〜

はじめに

本記事はプログラミングスクールに通うのを検討されている方や

ITエンジニアを目指して独学で勉強に励まれている方向けに作成いたしました。

見づらい部分もあるかもしれませんが上記の方の参考になれば幸いです。

プロフィール

名前:ロッキー

年齢:20代後半

在住:東海地方

未経験からwebエンジニアになるために

HappinessChainというプログラミングスクールで日々勉強しています。

happiness-chain.com

私がエンジニアを目指した理由

エンジニアを目指した理由は大きく分けて2つです。

  1. 手に職をつけて働きたい
  2. 時間と場所にとらわれることなく就業できる

1については、専門的な職種であるため継続して勉強に励めば生活に困ることはないと思ったからです。

2については、リモートワークも可能な会社もあるため、通勤時間を減らして自分の自由時間(勉強や家事など)が増えてQOLが向上すると感じたからです。

プログラミングスクールに通うと決めたきっかけ

エンジニアになるためにまずは勉強して国家資格を取ってそれをアピール材料にエージェントを利用して未経験から転職しよう!

そう思い立って、昨年の終わりに無事にITパスポートを取得して

今年に入ってからは基本情報技術者の資格勉強を進めつつ転職活動に向けたリサーチを行っていました。

リサーチ活動時に以前通っていたフリーランススクールの特典で、IT系の人事のAさんに無料相談出来るということで

IT系に未経験で転職したいという内容で相談に乗っていただきました。

私:「昨年ITパスポートを取得して、現在基本情報技術者の勉強をしています!資格をアピールして転職活動を進めていきたいのですがどうでしょうか?」

Aさん:「勉強する姿勢は評価されるかもしれませんが、実務経験に相当する成果物を作成できる能力がないと基本的に採用は難しいと思います。」「あとね、iパスと基本情報はおしんこレベルの「あったらいいな〜」ぐらいの感覚です(笑)」

私:「そうなんですね...!(泣)ご回答ありがとうございます!(泣)」

現実は..甘くなかった..fin

これを機に、転職の方針を変更しプログラミングスクールに通って成果物を制作して、転職活動をしようと決意しました。

HappinessChainに入会を決めた理由

色々プログラミングスクールを見ていて吟味しているときに、偶然TwitterでHappinessChainの存在を知りました。

HPを見て入会の決め手になったポイントを5つ紹介します。

1. 現役エンジニアのメンターさんがいること

2. 独自のロードマップによって学習が体系化されている

3. 月額29800円から学ぶことが出来て他スクールより安価でコスパが良い

4. 卒業生が未経験からモダンな開発環境の会社に転職できた実績がある

5. 志が高いメンターさん・メンバーさんがいる環境で勉強が出来る

上記の5つのポイントに沿って私の入会前の感じたこと、実際に入会してからの感想を交えながらお話していきます。

1.現役エンジニアの方にコードレビューやフィードバックをいただける環境はとても良いと感じました。

また、経営者兼現役エンジニアのゆうだいさんがとても教育熱心な方だと、Twitterの発信を見て思ったのも決め手です。

2.しっかり整備されたロードマップのおかげで進むべき道が分かるのでとても安心。

また、制作課題の難易度は高めに設定されていますが、その制作課題が転職活動時のポートフォリオになるのもメリットだと感じました。

3.サブスク制で良心的な価格設定かつ学習環境もバッチリでめちゃくちゃコスパ良いです◎

現在HappinessChainでは3コースから選択する形式です。

Railsコース Goコース NextJSコース
29,800円 34,800円 35,800円

※入会金は0円です。3コースとも月額での金額です。

4.学習環境と料金体系はバッチリだけど果たして未経験から転職できるの??

ここが初学者かつ転職希望の方の一番気になるところだと思います。

現在(2023年7月)のHappinessChain卒業生は転職成功率は驚異の100%です。

卒業までの道のりは険しいですが、着実にロードマップをクリアしていけば企業側から求められる人材になれると私は確信しています。

HP下記に未経験から転職が叶った卒業生の方の記事もありますので気になる方はチェックしてみてください。

5.プログラミング学習は挫折率がとても高いという話をよく聞きます。かくいう私も一度挫折した経験があるので、一人での学習は本当にメンタル的にしんどいことも経験しています。

ですが、メンターさんをはじめ在籍されているメンバーさんも志が高く、一緒に頑張れる仲間がいるという存在はとても大きなものですし、学習への姿勢も自然と良い状態で取り組めます。

おわりに

入会から1ヶ月半ほど経ちましたが、HappinessChainに入会して本当に良かったです。

これからも未経験からエンジニアへ転職するという目標のために日々研鑽していきます!

本記事が現在プログラミングスクールに通うのを検討されている方や、独学で勉強に励まれている方の参考になれば幸いです。

もし、HappinessChainが気になる方がいらっしゃったらHPを閲覧してみて下さい。

不安な点や疑問点があれば、直接お問い合わせしてみるのがオススメです。

happiness-chain.com

最後までご覧くださりありがとうございました。