Linux初学者が最初に学んだCommand 18選

はじめに

今回はLinux Command について学んだ内容を記録しておきたいと思います。

まずは一覧でまとめ、その後にひとつずつ詳細を確認していきます。

Linux Command 18選

こちらが今回学んだコマンドの一覧です。

Ref. Command 内容
1 cd ディレクトリの移動
2 pwd カレントディレクトリの表示
3 ls ディレクトリの中身の表示
4 mkdir ディレクトリの作成
5 rmdir ディレクトリの削除
6 cat ファイルの中身の表示
7 less ファイルの中身のスクロール表示
8 tail ファイルの末尾の表示
9 touch 空のファイルの作成
10 rm 空のファイルの削除
11 mv ファイルの移動/ファイル名の変更
12 cp ファイル、ディレクトリのコピー
13 ln ファイルにリンクをはる
14 find ファイルの検索
15 chmod ファイルやディレクトリの権限の変更
16 chown ファイルやディレクトリのオーナーの変更
17 ps 実行中のプロセスの表示
18 kill 実行中のプロセスの終了

Command の解説

ファイルとディレクト

コマンドの詳細を確認する前に、ファイルとディレクトリの意味について確認しておきます。

ファイルとはデータをコンピュータに保存しておく形式を表しています。文書を保存する場合は、文書ファイルを保存することになり、画像を保存する場合には画像ファイルを保存することになるという意味です。

一方でディレクトリとは、複数のファイルをまとめておくものを表しています。ディレクトリの中にディレクトリを入れておくことも可能です。Pictures というディレクトリに、2024 というディレクトリを入れておいて、2024年に撮影した写真を画像ファイルとして保存すると考えるとイメージがしやすいと思います。

Picturesというディレクトリに入れ子構造になって2024というディレクトリがあり、画像ファイルが保存してあるイメージ

Command

  • cd

    • できること:ディレクトリを移動します
    • コマンドの意味:change directory
    • 使い方
      $ cd [option][directory]
    
  • pwd

    • できること:現在いるディレクトリ(カレントディレクトリ)を表示します
    • コマンドの意味:print working directory
    • 使い方
      $ pwd 
    
  • ls

    • できること:ディレクトリの中身を表示します
    • コマンドの意味:list
    • 使い方
      $ ls 
    
  • mkdir

    • できること:ディレクトリを作成します
    • コマンドの意味:make directory
    • 使い方
      # studyというディレクトリを作成する
      $ mkdir study
    
  • rmdir

    • できること:空のディレクトリを削除します
    • コマンドの意味:remove an empty directory
    • 使い方
      # studyというディレクトリを削除する
      $ rmdir study
    
  • cat

    • できること:(1つまたは複数の)ファイルの中身を確認します
    • コマンドの意味:concatenate(連結するという意味で、複数のファイルの中身を確認する際に、中身が連結されたように確認できるためと考えられます)
    • 使い方
      # test1.txtとtest2.txtというファイルの中身を確認する
      $ cat test1.txt test2.txt
    
  • less

    • できること:ファイルの中身をスクロール表示します
    • コマンドの意味:less is more(少ない方がより豊かという意味。moreに対して遊び心のある反対語が使われている)
    • 使い方
      # test1.txtの中身をスクロール表示する
      $ less test1.txt
    
  • tail

    • できること:ファイルの末尾を表示します
    • コマンドの意味:tail(尻尾)
    • 使い方
      # test1.txtの末尾10行を表示する
      $ tail test1.txt
    
  • touch

    • できること:空のファイルを作成します
      • 本来はすでにあるファイルの日時を更新するためのコマンドですが、更新するファイルがない場合に空のファイルを作成することができるため、空のファイルを作成する際によく利用されます。
    • コマンドの意味:touch
    • 使い方
      # test3.txtという空のファイルを作成する
      $ touch test3.txt
    
  • rm

    • できること:ファイルを削除します
    • コマンドの意味:remove
    • 使い方
      # test3.txtというファイルを削除する
      $ rm test3.txt
    
  • mv

    • できること:ファイルを移動します/ファイル名を変更します
      • ファイルの移動かファイル名の変更かは自動で判定してくれます
    • コマンドの意味:move
    • 使い方
      # test3.txtをtest4.txtに変更する
      $ mv test3.txt test4.txt
    
      # test4.txtをstudyというディレクトリに移動する
      $ mv test4.txt study
    
  • cp

    • できること:ファイルやディレクトリをコピーする
    • コマンドの意味:copy
    • 使い方
      # test.txtをtest5.txtにコピーする
      $ cp test.txt test5.txt
    
  • ln

    • できること:リンクをはります
      • リンクをはるとは?
        • Linuxではファイルに別名をつけることをリンクをはるといいます
      • リンクの種類
        • ハードリンク
          • 1つのファイルに複数の名前をつけること
          • 元のファイルを削除しても消えない
        • シンボリックリンク
          • リンク先のパス名をつけること
          • 元のファイルを移動、削除すると消える
    • コマンドの意味:link
    • 使い方
      # test.txtにassignment.txtのハードリンクをはる
      $ ln test.txt assignment.txt
    
      # test.txtにoutput.txtのシンボリックリンクをはる
      $ ln -s test.txt output.txt
    
  • find

    • できること:(検索条件を指定して)ファイルを検索します
    • コマンドの意味:find
    • 使い方
      # カレントディレクトリ内にあるoutput.mdというファイルのパスを表示する
      $ find . -name output.md -print
    
  • chmod

    • できること:ファイルやディレクトリの権限を設定します
      • 設定は、権限の対象者、アクション(どうするのか)、権限の内容、の3つに分けて設定していきます。
    権限の対象者 記号
    所有者の権限 u
    グループの権限 g
    その他のユーザーの権限 o
    全ユーザーの権限 a
    アクション 記号
    権限の追加 +
    権限の削除 -
    記述した権限 =
    権限の内容 記号(相対指定) 数値(絶対指定)
    読み取り(read) r 4
    書き込み(write) w 2
    実行(execute) x 1

     数値で複数の権限を指定する場合は、数値を足して記載します

    • コマンドの意味:change mode
    • 使い方
      # test.txtの所有者の権限に実行権限を相対指定で追加する
      $ chmod u+x test.txt
    
      # test.txtの所有者とグループに読み取り、書き込み、実行の権限を、その他に読み取りの権限を絶対指定で追加する
      $ chmod 774 test.txt
    
  • chown

    • できること:ファイルやディレクトリのオーナーを変更します
    • コマンドの意味:change ownership
    • 使い方
      # test.txtのオーナーをcodaichiに変更する
      $ sudo chown codaichi test.txt
    
    • 補足
      • sudo(switch user and do)をつけることでスーパーユーザー(root)として実行することができるようになります。
      • システムの根幹に関わる作業を誰でもできるとセキュリティ上の問題があるため、スーパーユーザーのみが行うべき作業に関しては、sudoをつけます。
  • ps

    • できること:実行中のプロセスを表示します
    • コマンドの意味:process status
    • 使い方
      # 現在実行中のプロセスを表示する
      $ ps
    
  • kill

    • できること:ジョブやプロセスを終了します
      • プロセスを終了する場合には、プロセスIDを指定する必要があります。
    • コマンドの意味:kill
    • 使い方
      # プロセスID 1212を終了する
      $ kill 1212
    

終わりに

以上が今回学んだLinux Command です。

Commandにはさらにオプションもたくさんあり、より便利に利用することができます。

もちろん、全てのCommandを完璧に覚えられるわけではありません。

今回学習した中でも、頻度の高低はあると思うので、実際に使いながら覚えていこうと思います。

Vimの基本操作をVimtutorで学びながらVimで記録してみた。

今回はVimというエディタについて学んだことをVimを使って記録してみたいと思います。
Vimはエディタということですが、今回Happiness Chainので学ぶまで私は触ったことがありませんでした。

少し調べてみると、難しいという意見やとても高性能で便利という意見まで様々です。
要するに、入り口のハードルが高く操作に慣れるまでは難しいけれど、慣れてしまったらとても高性能で使いやすいということなのでしょう。
慣れるまでは触り続けるしか方法がないので、少しずつ継続していきたいと思います。

Vimtutorを触ってみる

さて、Vimについて学ぶにはVimtutorで学ぶのが効率がいいようです。 早速Vimtutorを起動させます。

$ vimtutor

これでVimtutorが起動できます。

Vimtutorを起動すると7つのLessonがあります。

今回は1つずつ確認していきたいと思います。

Lesson1

  1. カーソルの移動
     1.  (h) 左に移動、(j)下に移動、(k)上に移動、(l)右に移動
    
  2. Vimの起動
    1. Vimを起動するにはターミナルでvim FILENAMEと入力し<enter>を押します。
  3. Vimの終了
    1. Vimを終了する際、全ての変更を破棄する場合は<ESC> :q! <ENTER>を押します。
    2. 変更を保存するには、<ESC> :wq <ENTER>を押します。
  4. 文字の削除
    1. カーソル上の文字を削除するにはxを押します。
  5. テキストの挿入と追加
    1. iでテキストの挿入ができるようになります。終了する際は<ESC>を押します。
    2. Aでテキストを追加することができるようになります。終了する際は同じく<ESC>をクリックします。

note:<ESC>を押すと、ノーマルモードになるか、不要なコマンドがキャンセルされます。

Lesson2

  1. カーソルから次の単語までを削除するには、dwを入力します。
  2. カーソルから語尾までを削除するには、deを入力します。
  3. カーソルから行末までを削除するには、d$を入力します。
  4. 行全体を削除するには、ddを入力します。
  5. 動作を繰り返すには繰り返す回数とwを入力します。
    1. 2回繰り返すには2w
  6. フォーマットを変えるコマンド
    1. operator -> dで削除などの操作をするためのものです。
    2. [number] -> 特定のmotionを繰り返すためのものです。
    3. motion -> テキスト上を移動する動きを指定します。
      1. wで文字の移動
      2. eで文字の最後に移動
      3. $で行の最後に移動
  7. 行の最初に移動するには、0を入力します。
  8. 動作の取り消し
    1. 直前のアクションを取り消すには、uを入力します。
    2. 行で行った全ての変更を取り消すには、Uを入力します。
    3. 実行した取り消しを取り消すには、CTRL-Rを入力します。

Lesson3

  1. 直前に削除したテキストを復元させるには、pを入力します。
  2. カーソルが示している文を置換させるには、rを入力します。
  3. 変更を指示するoperatorはmotionを組み合わせることで移動ができます。
    1. ceと入力すると、カーソルから語尾へ移動できます。
    2. c$と入力すると、行末に移動できます。
  4. フォーマットの変更をするには、c [number] motionと入力します。

Lesson4

  1. CTRL-Gでファイルのステータスとフィイルの中での場所を表示することができます。
    1. Gでファイルの最後に移動します。
    2. number Gでnumberで指定した行に移動します。
    3. ggで最初の行に移動します。
  2. フレーズの検索と移動
    1. フレーズの後に/を入力すると、そのフレーズまでの中でフレーズを検索します。
    2. フレーズの後に?を入力すると、そのフレーズの後で、フレーズを検索します。
    3. 検索後に同じ方向で次に移動する場合はnを入力、逆方向に移動する場合はNを入力します。
    4. CTRL-Oで古い場所に移動、CTRL-Iで新しい場所に移動します。
  3. %と入力すると([{などに一致する),],}の場所にカーソルが移動します。
  4. 様々な置換方法
    1. :s/old/newで、直近のoldからnewに置換します。
    2. :s/old/new/gで、全てのoldをnewに置換します。
    3. #,#s/old/new/gで、#行から#行目までを指定して、oldをnewに置換します。
    4. :%s/old/new/gで、ファイル内のoldをnewに置換します。
    5. :%s/old/new/gcで、置換する際に確認をします。

Lesson5

  1. :!コマンドの使い方
    1. :!ls(Windows:!dir)で現在のディレクトリを表示します。
    2. :!rm FILENAME(Windows:!del FILENAME)でファイル名を削除します。
  2. :w FILENAMEで利用中のVimファイルをFILENAMEとしてディスクに書き込みます。
  3. 選択した範囲のみを保存するには、vでスタート位置を選択し:で終了位置を選択します。そのまま:w FILENAMEでFILENAMEとして選択した範囲を保存します。
  4. :r FILENAMEと入力すると、入力した際のカーソルの位置から下にFILENAMEで検索したファイルの内容を貼り付けます。
  5. :r !lsとすると入力したカーソルの位置から下にlsコマンドの結果を挿入します。

Lesson6

  1. 行の追加とインサートモードへの変更
    1. oで現在のカーソルの位置から下に行を追加してインサートモードになります。
    2. Oで現在のカーソルの位置から上に行を追加してインサートモードになります。
  2. テキストの挿入
    1. aでカーソルの後にテキストを挿入します。
    2. Aで行の最後にテキストを挿入します。
  3. eコマンドで言葉の最後に移動します。
  4. yでコピー、pでペーストします。
  5. Rでリプレイスモードになります。リプレイスモードを終了するには<ESC>を押します。
  6. ':set'オプション
    1. :set icで大文字小文字を区別せずに検索します。
    2. :set isで検索中に検索したフレーズを強調します。
    3. :set hlsで検索で一致したフレーズを全てハイライトします。
  7. オプションをオフにするにはnoをつけます。

Lesson7

  1. helpを表示するには、:helpを入力します。
  2. コマンドのhelpを表示するには、:help cmdを入力します。
  3. CTRL-Wを入力すると別のWindowに移動します。
  4. :qでhelpを閉じます。
  5. コマンドを入力する際、CTRL Dを入力すると利用可能な補完機能が表示されます。
    1. <TAB>を押すと、1つの補完機能が候補として表示されます。

終わりに

以上が、Vimtutorで学べる内容です。

実際に動かしならがでないとイメージしずらいことも多いかと思います。

またVimtutorで紹介されている内容が多岐にわたるので一度で覚えることは難しいでしょう。

機能によって実際に利用する頻度も異なると思いますので、必要なコマンドから覚えていけばいいように思います。

また今回はVimtutorで学んだことをVimmarkdownで記録してみました。 作業した内容としては下記の流れです。

  1. Vimtutorを読んで内容を理解する
  2. Vimでファイルを起動し、動作を確認する
  3. markdownで記録する

正直とても時間がかかりましたが、勉強にはなりました。

vimで記録したVimtutorの内容

Webの技術を理解する際の基本用語

はじめに

こんにちは、codaichiです。 プログラミングスクールのHappiness Chainに入会して約1ヶ月半ほど経ちました。

まだまだ覚えることが多いのですが、今日はそのなかでも入会してから学んだWebの技術を理解する際におさえておきたい用語を7つ説明したいと思います。

Webの技術を理解する際におさえておきたい7つの用語

1. ステートフル : Stateful

意味

ある状態を持っていること

使われる場面

ログイン状態を持っているかどう保持するかという場面でよく使われます。

ここでは例として、FTP(File Transfer Protocol)とHTTP(Hyper Text Transfer Protocol)の通信方法を比較してみます。

FTPはステートフルなプロトコルということが言えます。理由は、FTPの通信ではアクセス先のサーバーとの通信では、まずログイン情報を通知して、サーバーが許可した場合に必要な手続きができるようになるからです。

このサーバーが前回のリクエストを覚えていて、それを元に次のリクエストを実行していくというのが、「ある状態を持っていること」=ステートフルということです。

2. ステートレス : Stateless

意味

ある状態を持っていないこと

使われる場面

先ほどはステートフルの説明をしましたが、今回はステートレスなので、先ほどとは逆で、ある状態を持っていないこととなります。

例として、Webアプリケーションを構成する複数台のサーバーについて考えてみます。

Webアプリケーションの場合、ユーザーがログインしているかどうかの状態はセッションとして管理されます。サーバーが複数台ある場合は、どのサーバーでもユーザーのログイン状態がわかるようにしなければいけません。そのため外部のストレージやキャッシュ装置を用いてセッションを共有します。

このような場合、ログインの状態はサーバーでは持っていないので、サーバーはステートレスな構成ということができます。

もちろんサーバーを1台にして、メモリ上にセッションを保存することで、ステートフルな構成にすることも可能です。この場合はWebアプリケーションはサーバー1台の性能に依存してしまうことになります。

3,4. リクエストとレスポンス : Request/Response

意味

リクエストとはクライアントからサーバーに対する要求のこと

レスポンスとはサーバーからクライアントへの応答のこと

使われる場面

Webクライアントとは、Webブラウザのことを指しています。

ですので、Webブラウザから要求のことをリクエストといい、サーバーからの応答をレスポンスと表現します。

意味

HTTPサーバーとクライアントとの通信で特定の情報をブラウザに保持させる仕組みや保持したファイルのこと。

クッキーがあることで、IDとPasswordで1度ログインしたサイトでページを遷移してもログインし続けることができています。

歴史や背景

1994年にLou Montulli がオンラインショッピングサイトの過負荷だったサーバーの修正を手伝っている際に、マジッククッキー1から着想を得て作成しました。

6. プロトコル : Protocols

意味

サーバーとクライアントとの間で情報の送受信や交換を行う際の約束のこと。プロトコルが通信に必要な機能ごとに決まっていることでデータのやり取りができるようになっています。

歴史や背景

もともとは企業ごとに異なる通信方法が用意されていましたが、それだと同じ企業のデバイス間でしか通信ができません。それでは不便なので、統一したプロトコルが用意されるようになりました。

プロトコルの通信機能は処理に応じて階層構造になっています。

この階層構造で有名なものは2つあります。

1つは1970年代にアメリカ国防総省の国防高等研究計画局が開発したTCP/IPモデルです。

もう1つは1984年に国際標準化機構が用意したOSI参照モデルです。

それぞれのモデルの説明は省きますが、各モデルとそれに対応しているプロトコルを図解します。

レイヤ OSI参照モデル レイヤ TCP/IPモデル 主なプロトコル
7 アプリケーション層 4 アプリケーション層 HTTP, DNS,SMTP,FTP
6 プレゼンテーション層 4 アプリケーション層 HTTP, DNS,SMTP,FTP
5 セッション層 4 アプリケーション層 HTTP, DNS,SMTP,FTP
4 トランスポート層 3 トランスポート層 TCP, UDP
3 ネットワーク層 2 インターネット層 IPv4, IPv6
2 データリンク層 1 ネットワークインターフェース層 イーサネット、PPP
1 物理層 1 ネットワークインターフェース層 イーサネット、PPP

7. ポート番号 : Port

意味

データの送受信の際に、どのアプリケーションにデータを受け渡すのかを識別しているのがポート番号。ポート番号はアプリケーションと一意に紐づいているので、ポート番号が分かれば、データをどのアプリケーションで処理すればいいのかがわかるようになっています。

説明

ポート番号はよくIPアドレスと一緒に、住所を例として説明されることがあります。

つまり、データを送受信する際、IPアドレスが市町村までの住所を表し、ポート番号が部屋番号の役割を果たしているわけです。

ポート番号は先述のプロトコルでは、トランスポート層に位置し、IPアドレスを頼りに送受信されたデータを適切な部屋番号のアプリケーションに受け渡す役割をになっています。

なかでもポート番号0〜1023番は一般的にWell-Known Portsとして知られています。

終わりに

今回はHappiness Chainに入会してから学んだWebの技術を理解する際の基本用語を7つ説明しました。 なんとなく知っていた用語を学び直す機会を持てたことで、自分自身の理解が深まったと感じています。


  1. マジッククッキーとはデータに変更を加えることなく送受信される情報のパケットのこと

30代の社会人がプログラミングスクールに入会しました

はじめに

はじめまして、codaichiです。 普段は都内のスタートアップでCorporate ITとして働いています。 年齢は30代中盤です。 これまでは人事や総務、情シスなど、主にスタートアップのバックオフィスとして働いてきました。

このブログでは30代でプログラミングスクールに入会した社会人のリアルを記録していきたいと思います。

なぜ今さらプログラミングスクールに入会したのか

ひと言でまとめると、コンプレックスです。

情シスやCorporate ITと名乗っているけれど、プログラミングができない、プログラミングスキルがないからやりたいことができない、という状態を抜け出したいという思いだけです。

もちろんこれまで、ネットで検索したGASを切り貼りしてなんとなく動くものを作ったことはありました。 また、ChatGPTを使うことでGASでできることも増えました。

ただ、動かなくなった時の解決方法がわからなかったり、セキュリティ的に問題がないのか半信半疑の状態で使っていたりすることがありました。

結局、自分で判断できないと困るのは自分自身です。

また、本当にSaaSを使いこなせているのか?と自問した時にYesと胸を張って回答できないことも気になっていました。 情シスやCorporate ITは多くのSaaSのアカウントやコストの管理をし、さらに業務の効率化や自動化をします。

その中で、低くないコストをかけて導入したSaaSの基本機能だけを利用しているのではもったいないと感じていました。

多くのSaaSにはAPIが用意されています。 APIを使うことができれば、もっといろいろな機能を使えたり、別のSaaSとの連携ができたりと、活用度を高められることはわかっています。 なのに自分自身にプログラミングスキルないことが理由で、使いこなせていない状態にもやもやしていました。

以上が、プログラミングを改めて勉強しようと思ったきっかけです。

なぜHappiness Chainに入会したのか

一般的にプログラミングの勉強方法として、独学、通学するタイプのスクール、オンラインスクールの3つがあると思います。 今回私はオンラインスクールを選択しました。

理由は大きく分けて2つで、しっかり力つけたいということと、効率よく勉強を進めたいと考えたためです。

通学するタイプのスクールは時間が限定されるので働きながら勉強するには相性が悪いと考え、最初に除外しました。

しっかり力をつけるというのは抽象的な表現ですが、独学では自分に力がついているのか判断するのは難しいでしょう。 そこで、すでにエンジニアとして働いていて、私と同じようにプログラミングを勉強している人との比較で、私の力を評価してくれる方に見てもらえること前提だと考えました。

また、数多あるプログラミングスクールの中でも、少人数でアフィリエイトでの集客などをしていないところを探していました。 これは仮説ですが、少人数のスクールが事業拡大を目指す場合、集客と同時に実績が必要になるはずです。

世の中にはオンラインのプログラミングスクールはたくさんあります。 すでにアフィリエイトなどで集客しているスクールは、それなりに実績があったりして、広告費をかけることができているんだと思います。

ただ、少人数のスクールがいきなりアフィリエイトの広告費を出すとは思えません。 いくら広告を出しても、卒業後の実績がなければスクールとしての魅力を訴えることができないからです。

そう考えると、少人数のスクールは充実したカリキュラムを用意し、生徒1人1人が転職に成功するなどの実績を出す必要があります。 逆に考えると、実績を出す必要があるスクールに入れば、生徒としてはそれだけ手厚いサポートを受けられるとも言えます。

そこで、アフィリエイトの集客をしていないスクールを3つほど調べました。 1つは募集を停止していたので詳細はわかりませんでしたが、カリキュラムが充実していそうでした。

2つに絞ってからはどちらも無料の面談や説明会に参加しました。 どちらも力をつけるという意味ではとても魅力的でした。

最終的な決め手になったのはスクールの期間です。 1つのスクールは推奨されるコースが2年で、年齢を考えると今から2年は長い。 そこで、効率よく勉強したいという希望を叶えられそうなHappiness Chainに2期生として入会しました。

社会人がプログラミングスクールに1ヶ月通ってみた感想

実際に3月にスクールに入会して1ヶ月。 率直な感想として、ここまでは楽しく勉強できています。

この1ヶ月間、カリキュラムをひたすら進めているわけですが、正直に言えば1ヶ月カリキュラムに取り組んだところでできることは大して増えていません。 これはもう仕方がないというか、もし1ヶ月でできるようになるのであればそもそもプログラミングスクールは不要です。

そこで、最初の1ヶ月は勉強時間の確保と習慣化に注力してきました。 結果的には3月の勉強時間は110時間ほど。 習慣の変化としては、起床時間を早くしました。

勉強時間は平日は朝2時間、夜1時間ほどです。 土日も朝は平日と同じように起きて午前中はひたすらプログラミングの勉強を続けています。

まだ1ヶ月ですが、朝の勉強が習慣化できてきているように感じます。

プログラミングスクールでの目標

プログラミングスクールでの目標はもちろん、「プログラミングができる」ようになることです。 「プログラミングができる」という定義が曖昧ですが、ここではプログラミングスキルで自分自身のやりたいことが実現できる状態とします。

一般的にプログラミングができるようになるまでの時間は1000時間と言われることが多いようです。 現在入会しているHappiness Chainのホームページでも900時間〜1200時間と書いてあります。

そこで、時間としては1,200時間を年内に取り組む予定です。もちろん、HCのカリキュラムを完走したいとも考えています。 また、裏目標としてはSlackアプリを自作したいと考えています。

Happiness Chainに入会する人の大半はプログラミングスキルを身につけて転職を目指すようですが、私の場合はどうしても転職したいと考えているわけではありません。

Happiness Chainとしては転職の実績などがあった方がいいと思うので、私のような目的での入会を許可してくださったHappiness Chainには感謝しています。 しっかり勉強し、本業で結果を出すことで何かしらの実績を出せるように頑張りたいと思います。