「JavaScript Primer」を読みました!

こんにちは!

Udemyのブラックフライデーセールにつられ、ついつい散財してしまったみんみんです。

今回は「JavaScript Primer」について、私なりの感想を書かせていただきます!

JavaScriptの知識がProgateレベルの初心者個人の感想です。

良かったところ

この本はサイト上で読めるのですが、JavaScriptのコードをその場で実行し、結果を確認できるようになっています。

テキストエディタにわざわざコードをコピペする必要がないので、大変ありがたかったです!

学んだこと

JavaScript Primer」では基本文法だけでなく、Ajax通信、TODOアプリの作成方法などの応用知識まで幅広く学べます。

JavaScriptは本当に複雑で難しいですが、この本ではプログラミング未経験者でもわかるよう説明が大変丁寧です(しかも文章が読みやすい)。

これからJavaScriptを学ぶのであれば、一見の価値アリかと思います!

難しかったこと

一度読んでみた限りでは、オブジェクトや非同期処理、JSONあたりの理解がまだ浅いかなと感じます。

それらについては何度かこの本を読んでみて少しずつ理解できるようになれればいいないと思いました!

 

今回は以上です!ありがとうございました!

「スッキリわかるSQL入門」を読みました!

こんにちは!

勉強しなければならないことが多すぎて、何が何だかわからなくなってきたみんみんです。

今回は「スッキリわかるSQL入門」について、私なりの感想を書かせていただきます!

※気づくとプログラミング学習歴半年になっていた初心者個人の感想です。

良かったところ

書籍の中ではとある会社を舞台に、初心者のキャラたちと一緒にSQLを勉強していきます。

初心者のうちに思いがちなSQLって何に使うの?」「どうしてこうなるの?」といった疑問に対して、キャラたちを通して解決しながら学べる内容です。

SQLの勉強を始めたばかりの方であれば、非常におすすめの入門本だと思います!

ただ、練習問題が思った以上に難しいです。

あまりに先に進めない場合は問題を一旦飛ばして読了し、2回目を読む際に解いてみるのも良いかと思います(私はそうしました)。

学んだこと

「スッキリわかるSQL入門」では、主に以下のようなことが学べます。

  • SQLの基本的な操作
  • データベースの基本知識
  • テーブル設計・ER図

ものすごく複雑な操作ではなくても、SQLに関することは一通り学べる本でした。

難しかったこと

この本を読んでみて「難しいな〜」と感じたのは、データベース作成についての流れや正規化についてです。

でも、読む前と比べれば理解度は格段に変わったと感じています。

かつてSQLを学習し始めた当初は「主キー」や「外部キー」、「インデックス」などよくわからない単語のオンパレードで、何が何だかよくわかりませんでした。

基本操作すら学習してしばらくすると忘れてしまうので、根本的な内容は理解できていなかったと思います。

数ヶ月前に取り組んだER図を書く課題では、あまりに難しくて丸1日かかりました。

この本ではそうした身近でない単語や操作方法についても「その単語がどんなことを指しているのか?」「なぜこのような構文で書くのか?」を丁寧に説明されています。

危うくSQLを嫌いになりかけていた私にとっても大変わかりやすかったです。

もう少し早く出会えていれば、あのときもっとスムーズに課題に取り組めたでしょうね…そのくらい良い本だと思いますよ!

 

今回は以上です!ありがとうございました!

「現場で使える Ruby on Rails 5速習実践ガイド」を読みました!

こんにちは!

1つの課題に2週間近くかかって、先の見えないゴールに呆然とするしかないみんみんです!

 

今回は「現場で使える Ruby on Rails 5速習実践ガイド 」を読んだので、チェリー本に引き続き私なりの感想を書かせていただきます!

※くどいようですがプログラミング学習歴5ヶ月半の初心者から見た個人の感想です。

良かったところ

こちらの本は、初心者にもわかりやすい丁寧な説明が良いと思いました!

クラスやメソッド、インスタンス変数など、最初のうちはどうしてもちんぷんかんぷんになりがちな概念について、噛み砕いて解説されています。

猫クラスの説明可愛かったです。

また、チーム開発の主な流れ(環境設定、コードレビューなど)についても説明されていました。

勉強期間だけでなく、将来現場に入っても常に持っておきたい本だと思います!

ただ、こちらRails5なので(現在Rails7)、改訂版が出たら買い直したいですね。

学んだこと

Rubyの基本的な概念、簡単なアプリを作る流れについて学習できました。

掲示板アプリについては別スクールですでに作成しているので(とはいえ今思えばそこまで理解できてませんでした)、良い復習になったなと感じています。

Railsアプリ内で使うJavaScriptについての説明があったのも大変ありがたかったです!

難しかったこと

AjaxやActiveStrageによる画像追加など、追加機能分については一度読んだだけでは理解できませんでした。

実際に作りながら流れを掴まないとすぐに忘れてしまうので、何度も見て慣れていかないと難しい分野だと思います。

 

今回は以上です!ありがとうございました!

「プロを目指す人のためのRuby入門<改訂2版>」を読みました!

こんにちは!

課題で一生懸命考えて書いたコードを修正したら、半分以上が無駄な処理だったことに気づいて驚きを隠せないみんみんです!

今回は「プロを目指す人のためのRuby入門<改訂2版> 」(通称:チェリー本)を読んだので、私なりの感想を書かせていただきます!

※プログラミング学習歴5ヶ月の初心者から見た個人の感想です。

良かったところ

すべての説明がわかりやすい日本語で書かれていたことです。

「当たり前だろ」と突っ込まれるでしょうが、これには理由がありまして。

この本を読む前は、Rubyでわからないことがあると公式リファレンスで解決しなければならなかったのですが…

公式リファレンス『〇〇のメソッド部分をラップして…〜でオブジェクトを生成します。モジュールの継承は…』

私「…」

英文を無理やり和訳したような意味不明なカタカナ語だらけであっという間に挫折し、結局Qiitaや個人の方のブログに逃げてしまう始末。

本来であれば公式リファレンスで理解しなければならないとはいえ、英語嫌いの初心者にとってはなかなかの苦行です。

その点この本では、日本人の方向けにわかりやすい文章で説明されています。

以前の私がやっていた、

公式リファレンスを見る

結局わからないのでGoogleの検索結果からわかりやすい記事を探す

 

という謎の二度手間が解消され、スムーズに疑問点を解決できるようになりました。

読者に話しかけるような言葉も優しく、モチベーションアップにも繋がるので大変重宝させていただいています!

学んだこと

この本で解説しているのは最初の基礎である「Hello world」の出力から、初心者にとって理解しにくい以下のようなことが学べます。

言葉の意味だけでなく、ソースコードも添えて解説してくれています。

Rubyやり始めたけど全然わからない」という方にもわかりやすく、かつ体系的に解説してくださっているので初心者の方から読み始められる本だと思います。

難しかったこと

あくまで私の場合は、オブジェクト指向やシンボル、モジュールなどは理解が難しいと感じました。

今回この本を読んだことでより奥の深い分野だなと感じたので、今後も勉強を続けていきたいと思います。

 

今回は以上です!ありがとうございました!

よく使うLinuxコマンドまとめ

こんにちは!

夜型生活をやめて朝型生活に切り替えたら、夜の勉強会や交流イベントに参加できなくなって詰んでるみんみんです!

今回は、以下18個のLinuxコマンドをまとめていきます!

  • cd
  • pwd
  • ls
  • mkdir
  • rmdir
  • cat
  • less
  • tail
  • touch
  • rm
  • mv
  • cp
  • ln
  • find
  • chmod
  • chown
  • ps
  • kill

cd

「change directory」の略です。

ディレクトリ(ファイルが入っているフォルダのような場所)を移動します。

$ cd ディレクトリ名

pwd

「print name of working directory」の略です(「password」ではありません)。

今いるディレクトリ(カレントディレクトリ)がわからなくなった場合に使うと、ディレクトリ名を表示してくれます。

$ pwd

ls

「list」の略です。

ディレクトリやファイルの一覧を表示します。

$ ls

※自分のいる場所で一覧を表示したい場合は「ls」のみでOKです。もちろんディレクトリ名やファイル名を指定して表示することもできます。

mkdir

「make directory」の略です。

新しいディレクトリを作成します。

$ mkdir ディレクトリ名

rmdir

「remove directory」の略です。

中身が空っぽのディレクトリを削除します。

$ rmdir ディレクトリ名

※中身があるディレクトリを削除しようとするとエラーになるので、「ファイルが入ってたのに間違って削除しちゃった」といったミスを防げる有能コマンドです!

cat

「concatenate(連結する)」の略です。猫ではありませんが、私は猫で覚えています。

ファイルの名前を指定して、その中身を表示します。

$ cat ファイル名

less

「less - opposite of more」の略です。

ファイルの中身をスクロール形式で表示します。スクロールしないと読めないレベルの長いファイルを確認したいとき便利です。

$ less ファイル名

tail

ファイルデータの末尾から数行を表示します。末尾なのでしっぽですね。

たとえば稼働しているシステムのログを監視するときなどに使います。

$ tail ファイル名

touch

「touch」そのままです。

空のファイルを新規作成します。

$ touch 新規作成したいファイル名

rm

「remove」の略です。

ファイルやディレクトリを削除します。

$ rm ファイル名(ディレクトリ名)

※なお、rmコマンドを実行すると完全に削除されてしまうので、後から復元できないことに注意しましょう!

mv

「move」の略です。

ファイルを移動したり、ファイルの名前を変更したいときに使います。

$ mv 移動したいファイル名 移動先

$ mv 名前を変更したいファイル名 変更後のファイル名

cp

「copy」の略です。

ファイルやディレクトリをコピーして作成します。

$ cp コピー元のファイル名(ディレクトリ名) コピー先

※コピー先を指定する際は、同じファイル名(ディレクトリ名)がないか確認しておきましょう。コマンド実行後に上書きされてしまいます。

ln

「link」の略です。

こちらは、ファイルに別の名前をつける(「リンクを張る」と呼びます)際に使用します。

イメージしにくいですが、ショートカットに似たものと考えれば良いそうです。

$ ln 別の名前をつけたい(リンクを張りたい))ファイル名 つけたい名前(リンク名)

find

ファイルを検索するためのコマンドです。以下のように使います。

$ find . -name ファイル名

「.」の後ろは半角を開けましょう。

chmod

「change mode」の略です。

ファイルやディレクトリのアクセス権限(パーミッション)を設定します。

大人数で管理する場合、勝手に削除されたり書き換えされたりしないようにするためです。

$ chmod 権限をどうするか(「u」や「+」などあります) ファイル名(ディレクトリ名)

chown

「change owner」の略です。

ファイルの所有者を変更します。

$ chown ユーザー名 ファイル名

ps

「process status」の略です。

現在実行中のプロセスを表示します。

$ ps

kill

ジョブやプロセスを終了させます。

実行中(フォアグラウンド)のものは「Ctrl+c」で終了できますが、現在停止中やバックグラウンドで実行しているものは「kill」コマンドを使います。

$ kill 終了したいプロセスのID

$ kill %ジョブのID

今回は以上です!ありがとうございました!

vimの基本操作まとめ(vimtutorやってみました)

こんにちは!

ついにエディタの宗教戦争に足を踏み入れてしまったみんみんです。

今回は、Vimチュートリアル「vimtutor」で学んだVimコマンドについてまとめていきます。

(※ちなみにこちらの記事もマウスを封印し、Vimで書いています。)

Vimについて思うこと

そもそもですが、私はプログラミングを始めた当初からVScodeを使用しています。

Vimについては「難しい」「初心者向けではない」と聞いていたため触ることもなかったのですが…

プログラミングの学習が進むにつれ、以下のような状況に見舞われるようになります。

  • ターミナルで突然Vimが立ち上がる
  • ノーマルモードと編集モードの切り替えができない
  • というか、そもそもVimから出られない

最初に覚えたコマンドは「:q」でしたね…。

まだまだ初心者の私にとっては無縁だと思っていたのですが、Vimから逃げられない状況になったためとうとう手を出してしまったのです。

今回学んだ「vimtutor」とは?

「vimtutor」とは、Vimの操作コマンドを一通り学べるチュートリアルです。

まずPCにVimをインストールしておきます。

ターミナルで以下のように入力しましょう。

$ vimtutor

以下のようなコマンドが出れば起動OKです。

所要時間は30分ほどと書かれていますが、私は40分くらいかかりました。

今回学んだVimコマンド

今回「vimtutor」で学んだコマンドは以下のとおりです。

移動キー

コマンドキー 用途
h 左へ移動
l 右へ移動
j 下へ移動
k 上へ移動
$ 行の末尾へ移動
0 行の頭へ移動
2w 単語の2つ先へ移動
3e 3つ目の単語の終わりへ移動

切り替え

コマンドキー 用途
escキー ノーマルモードVimコマンドが効く状態)へ切り替え

編集・削除

コマンドキー 用途
i カーソルの位置から編集
a カーソル下の次の位置から編集
A 行の末から編集
x カーソル下の文字を削除
dd カーソルのある行ごと削除(※「2dd」なら2行削除できちゃいます)
dw カーソル位置から単語の終わりまで削除(※つまり、w(単語)をd(削除)するということです)
d2w カーソルのある位置から単語2つを削除(※つまり、w(単語)を2(2つ)d(削除)するということです)
d$ カーソルのある行の終わりまで削除
de カーソルのある単語の終わりまで削除(空白を含まない)

エディタを閉じる

コマンドキー 用途
:wp 変更をファイルに保存してエディタを閉じる
:q! 編集内容を保存せずにエディタを閉じる

選択・コピー・貼り付け

コマンドキー 用途
v 文字の選択開始(※l(右へ移動)で選択したい箇所を増やしていきます)
y 選択した部分をコピー
p コピーした箇所を貼り付け

置き換え

コマンドキー 用途
r 置き換える箇所を選択(※rを押してから正しい文字を入力すれば置き換わります。削除と入力を同時に行うイメージです)
ce カーソルのある単語の末尾を削除・編集(※rとの違いはrが文字の置き換えをする一方で、ceは単語の終わりまで一気に削除・置き換えができるイメージです)
c$ カーソルのある位置から下の行を削除・編集

取り消し

コマンドキー 用途
u 最後のコマンド取り消し(※覚えておくとすごく助かります!)
U 行全体を取り消し

再実行・ファイル内の移動

コマンドキー 用途
CTRL-R コマンドを再実行
CTRL+g カーソルのある部分について、ファイル名と行番号を表示
g ファイルの一番下の行へ移動
gg ファイルの先頭へ移動
% 対応するカッコに移動

検索コマンド

コマンドキー 用途
/ 検索
n 同じ語句をもう一度検索
N 逆方向で検索
CTRL-O 検索した語句について前へ移動
CTRL-I 検索した語句について次へ移動

語句を指定して置き換え

コマンドキー 用途
:s/xx/◯◯ 現在行の最初のxxを◯◯に置換
:s/xx/◯◯/g 現在行のすべてのxxを◯◯に置換
:#,#s/old/new/g 2つの # 行の間で語句を置換
:%s/old/new/g ファイルの中の全ての検索語句を置換
:%s/old/new/gc 置換の度に確認を求める

外部コマンドを実行

コマンドキー 用途
:! 「ls」や「dir」を続けて入力すれば外部コマンドが使える

ファイルの作成・保存・削除

コマンドキー 用途
:w xx 「xx」という名前のファイルを作成
:!del xx 「xx」というファイルを削除
v+:w xx 「v」コマンドで選択した部分を「xx」ファイルに保存
:r xx 「xx」というファイルがディスクより取り込まれ、カーソル位置の下に挿入される

挿入・置換

コマンドキー 用途
o カーソルの下の行を開けて、そこで挿入モードになる
O カーソルの上の行で挿入モードになる
e 単語の終端にカーソルを移動
R 置換モードに入る(※「escキー」を押せば抜けます)
:set ic 検索時に大文字・小文字を区別しない
:set is 検索フレーズの部分検索
:set hls マッチするすべての検索結果を強調表示

オンラインヘルプ

コマンドキー 用途
:help xx 「xx」のコマンドについてオンラインヘルプを表示
CTRL-W 別のウインドウへジャンプ
:q ヘルプウインドウを閉じる

だいぶ多かったですね…もちろんvimtutorを一度通しただけでは全然覚えられないです。

ひとまずノーマルモードに切り替える「escキー」、Vimを閉じる「:q」を覚えておけば、急にターミナルでVimの画面に切り替わってもひとまずは安心でしょう。

Vimでブログを書いてみたらいつもの3倍くらい時間がかかって、正直もう二度とやりたくないみんみんでした!

Web技術に関する基本用語7選

こんにちは!

プログラミング学習を始めてからずっと封印していた趣味のアニメ鑑賞をしたら、

懐かしすぎてオタク時代に戻ってしまったみんみんです!

今回は、Web技術に関する以下7つの基本用語についてまとめていきます。

  • ステートフル
  • ステートレス
  • リクエス
  • レスポンス
  • クッキー
  • プロトコル
  • ポート番号

ステートフル(stateful)

ステートフルとは、「サーバーが現在のセッション(関連する処理を行う一連の流れ)状況を保ったままで次の処理を行う状態」です。

つまり、以下のような場面が可能な状態を指します。

  • ログインした状態で買い物カゴに欲しい商品を入れる
  • 買い物カゴに入れた商品を購入、決済する

ユーザーからすれば、他の作業をしている間にログインした情報を忘れられてしまっては大変ですよね。

ユーザー「買い物するものが決まったので決済してください」

サーバー「誰ですか?」

だからこそショッピングサイトなどでは、ログイン状態を保ったままで他のセッションが行えるステートフルな状態が保たれています。

ステートレス(stateless)

一方でステートレスとは、ステートフルの逆で「サーバーが以前のセッション状況を保たずに次の処理を行う状態」です。

別のページに遷移するなど他の作業をすると、サーバーは以前の情報を忘れてしまいます。

「じゃあ全部ステートフルでいいんじゃないの?」と思うかもしれませんが、実はステートフルには大きな弱点があります。

ステートフルな状態を保つために、サーバーは以前の情報を持ったまま何人もの情報を一度に処理する必要があります。

そのサイトを利用するユーザー数千人、数万人を一度に処理するには、サーバーにかかる負担が大きすぎるのです。

そこで、ステートフルである必要のない以下のような場面では、ステートレスな状態になるようプログラムされています。

  • 音声通話
  • 動画のストリーミング再生

リクエスト(要求)

リクエストとは、「ユーザーが見たいページを表示するようサーバーにお願いすること」です。

もちろん、サーバーへ実際に「ページください」とお願いするわけではありません。

細かい点は割愛しますが、簡単に言えば以下のような流れでサーバーにリクエストをお願いします。

  1. ユーザーがWebブラウザGoogle ChromeSafariなど)で見たいページをクリック、もしくはURLを直接打ち込む
  2. Webブラウザからサーバーへ「ページください」のお願いが行く

1秒もかからない間ですが、見たいページをクリックすれば上記のような処理が高速で行われます。

レスポンス(応答)

リクエスト(要求)をすれば、以下のような流れでレスポンス(応答)が返ってきます。

  1. Webサーバーがリクエスト内容を解析する
  2. WebサーバーからWebブラウザへ「こちらです」とページのHTMLが返される
  3. WebブラウザがHTMLを解析する
  4. Webブラウザ上にページが表示される

リクエストに対する答えとして返ってくるもの、それが「レスポンス」です。

クッキー(Cookie

クッキーとは、簡単に言えば「WebサーバーとWebブラウザの間にやり取りされた情報を保存しているデータ」です。

ちょっと意味がわからないと思うので、以下でもう少し説明します。

そもそもHTTP(HyperText Transfer Protocol:世界共通のハイパーテキストやり取り手順)はステートレスです。

「ユーザーがいつ、どのサイトを見ていたか」「どのサイトで何を買っていたか」などの情報が保存される仕組みではありません。

そこで情報を保存するデータとして使われるのがクッキーです。

あなたもWebサイトを見ていて「昨日Amazonで買った商品の値段比較広告」や「たまたま興味があって検索した新作ゲームの広告」が出ていたこと、ありませんか?

「何で検索履歴がバレてるの?」と思ったなら、犯人はこいつです。

しかし、サイバー攻撃の危険性やプライバシー保護の観点などから問題になり、Googleなどの大手企業ではCookieの完全廃止に向けた動きが進められています。

プロトコル(Protocol)

プロトコルとは手順、つまり「ネットワークで繋がる機器同士のやり取り手順のルール」です。

手順を指す言葉なので、主に以下のような用途ごとのプロトコルがあります。

  • HTTP(HyperText Transfer Protocol)
  • TCP/IP(Transmission Control Protocol / Internet Protocol)
  • FTP(File Transfer Protocol)
  • SMTP(Simple Mail Transfer Protocol)
  • POP(Post Office Protocol)

プロトコルについて、よくたとえられるのが「狼煙」です。

狼煙が上がっているのを見れば、誰もが合図の内容を理解できます。

つまり、世界共通で「これは◯◯の合図だ!」とわかる手順(ルール)を表す言葉が「プロトコル」です。

ポート番号

ポート番号とは、「コンピューター同士が通信するために使う通信用のドア番号」のようなものです。

ドア番号は目的ごとに数字が決まっており、 0番~65535番まであります。

たとえばユーザーがインターネットでサイトを見たり買い物したりすると、80番のポート番号(ドア番号)から入ってWebサーバーとやり取りします。

他にもさまざまなやり取りごとにポート番号があり、目的ごとに通信が行われているのです。