プログラミング奮闘記

難しいと評判!初心者がN予備校でプログラミングを学んだ感想と備忘録!
No.13:GitHub

N予備校 プログラミングコース 第13回

あなたは2019年の目標って立てましたか?
どんな目標を立てたか覚えていますか?

私は2018年末に2019年の目標を立てました。
その一つにプログラミングを学び仕事として使えるようにすることをあげました。
そして、思い立ったが吉日と「N予備校のプログラミングコース」を申し込みました。

そして受講と同時に自身の振替と、これから始めようと考えている人の参考になればとブログを書き始めました。
今回ブログの移設にともない、再度そのブログを読み返しながら、今思うことを加えて記載していきたいと思います。

また私が受講したのは【2018年度】で、現在公開されている【2019年度】との違いについても書いていきたいと思います。

このブログは、初心者が学びながら書いているため、間違っている場合があります。
分かり次第修正していくつもりです。

そのあたりも含め楽しんでいただければと思います。 

最後に進めていてわからなかったところや気になったところをまとめています。

プログラミング入門 webアプリコース 第13回

前回は、通信ネットワークの仕組みを知り、HTTPに関するサーバーとクライアントを作ることが出来るようになりました。

今回はその知識を活かして、自動的に情報を集めるプログラムを作ります。

また、自分が作成したプログラムを公開するためのサービスであるGitHubについて学びます。

  • 今回の内容まとめ(第2章 10~13)
    ・ボットについて
    ・GitHubについて
    ・Gitについて

  • 今回の目標
    itunesのトップソングのデータを1時間ごとに保存するボットを作成
    GitHubについて学び作ったプログラムを公開
    自分のパソコンとGitHubを連携させる

  • 今回新しく扱っているコマンド等
    ・crontab
    ・ssh-keygen

ボットについて

ボット(bot)とは、自動的に処理を行ってくれるプログラムです。
今回はニコニコ動画のランキングの結果を1時間おきに取得するボットを作成します。

 

ボット作成環境をつくる

Powershellからvagrantを立ち上げ、RLoginを起動しUbuntuを開きます。
Ubuntuから開発用ディレクトリ(フォルダ)を作成し、touchコマンドでシェルスクリプトのファイルを作成し、chmodコマンドで権限を付与します。
そして、VS Codeを用いて#!/bin/bashを入力します。

ボットの要件を定義します。

今回はテキストに従い要件を定義します。

データの保存先となるディレクトリを作る
現在の時刻から、データを保存するファイル名を決める
そのファイルに、ニコニコ動画の毎時ランキングのデータを保存する

データの保存先を作成する

データを保存するディレクトリを作成します。

dirname=”○○”
mkdir -p $dirname
1行目でデータの保存先ディレクトリ(フォルダ)を示す変数をdirnameとして、2行目でそのdirnameを名前としたフォルダを作成します。
-pは、記述したディレクトリが存在しなければ作成するというコマンド

取得するデータの名前を指定する

今回はニコニコ動画のランキングデータを取得しますが、その取得したデータを保存する際の名前を指定します。

filename=”${dirname}/××”
echo “Save to $filename”
1行目で、保存するファイルを示す変数をfilenameとしています。
今回は先ほど作ったディレクトリ(○○)内の××という名前のファイルとしています。
2行目では、「Save to ○○/××」のように表示するコマンドです。

サイトのデータを先ほど指定したファイル名で保存する

ニコニコ動画のランキングを、インターネットから取得し先ほど作成したディレクトリに保存します。

curl -s -o $filename -H “User-Agent: CrawlBot; your@mail” https://www.△△
サイト(https://www.△△)の内容を上で指定したfilenameという名前のファイルで保存します。
ここで、-sは何も表示せずに実行するコマンド、-oは結果をファイルとして保存するコマンドです。

<例>
curl -o □□ https://www.△△
サイト(https://www.△△)の内容を□□という名前のファイルで保存します。

User-Agentとは、アクセスしている相手側にどんな環境でアクセスしていうかなどの自分の情報のことで、自分が作成したボットが、設定ミスやバグなどで意図せず相手側に負荷をかけてしまった時に、相手側から遮断しやすくします。

メールアドレスを追加することで、何かあった時に連絡が取りやすくなります。

ボットの自動化

作成したシェルスクリプトを自動的に実行するように設定します。
今回は、cronというプログラムを利用します。

  • cron
    スケジュールに合わせて定期的にプログラムを実行してくれるプログラム
     

cronを自動実行する設定

cronの設定を行います。

crontab -e
crontabは、必ずオプションが必要で、-eは、cronを設定する時に使用します。
このコマンドを実行することで、vimが開かれます。

その最終行に、下記のよう入力します

○○**** /××
これは、○○分に××というファイルを実行しなさいという内容になります。

以上のことを用いて、itunesのトップソングのRSSを1時間ごとに保存するボットを作成することが出来るようになります。

GitHubについて

自分自身のWebページを全世界に公開するのに、GitHub(ギットハブ)というWebサービスを利用します。

GitHubでは、それぞれが作成したソースコード(プログラム)が公開されています。
ソースコードを公開することで、だれでもそのコピを使い修正することが可能になります。この修正内容は、作成者にも通知され、プログラムの改善が進みます。またその過程にあらゆる人が参加することが出来ます。

GitHubのアカウントを作る

Webサイト(https://github.co.jp/ )にアクセスし、アカウント登録を行います。

リポジトリの作成

リポジトリ(Repository)とは。ソフトウェア開発の際に、コードなどのデータをまとめて保存しておく置き場のことです。

このリポジトリの作成にはいくつかの方法があります。
今回は、その一つとして他人のリポジトリをコピーして自分のリポジトリを作成します。
その方法を、Fork(フォーク)といいます。

  • Fork
    他人のリポジトリをコピーして自分のリポジトリを作成します。
    オリジナルのデータが色々な人へと分岐していく点からフォークと呼ばれています。

自分の作成したデータを公開する

作成したリポジトリに作成したファイルを貼りつけることで作成したWebページを公開することができます。
その際、リポジトリに変更を加えることをcommit(コミット)と言います。

イシュー管理

issueとは、議論における論点や関心事を意味しており、ソフトウェア開発では不具合や要求など色々な関心事があらわれます。
GitHubでは、それらをイシューとして取りまとめて多くの人で議論することが出来ます。

WikiとGist

Wikiとは、Web上からかんたんに内容を変えられるWebサイト管理システムのことで、これを使うことで簡単に内容を編集することが出来ます。
Gistとは、Wikiほど本格的なページが要らない場合に、メモやコードの断片を気軽に投稿できる機能の事です。

これらを使うことで、GitHub上で文章を作成することができます。

  

Gitについて

アプリなどのプログラムは、定期的に変更が行われそのたびにバージョンが更新されます。 Gitは、そのバージョンの管理を行うソフトウェアです

gitのインストール

まずGitをインストールします。

sudo apt update
sudo apt install git
1行目で、 インストールされているパッケージの情報が更新されます(ファイルが更新されていればアップデートが行われます)。
2行目で、gitがインストールされます。

SSHの公開鍵を秘密鍵の作成

GitHubには、SSH(Secure Shell)を使って通信を行います。
SSHでは、公開鍵認証という認証方法で暗号化通信を行うことができます。

  • 公開鍵認証
    公開鍵認証とは、相手が情報を暗号化する際に使用する「公開鍵」、自分が受け取った暗号を情報へと戻す「秘密鍵」の二つを使った認証方法です。

ssh-keygen
上記のコマンドで、.sshという名前のディレクトリ内に公開鍵(id_rsa.pub)と秘密鍵(id_rsa)が作成できます。

GitHubに公開鍵登録

上記で作成した公開鍵(id_rsa.pub)を登録します。

cat ~/.ssh/id_rsa.pub
上記のコマンドを実行することで、公開鍵情報が表示されます。

その内容を、GitHubのSettinngs内のSSH and GPG keysに登録します。

これにより、GitHubと自分のパソコンがSSHを利用した暗号化通信が可能になります。

クローン

自分のパソコンのLinux内にGitHubと同じようなリポジトリを作成します。
この工程を、clone(クローン)といいます(GitHubでのForkと同じこと)。

pull

自分以外のパソコン(リモート)の中にあるリポジトリ(リモートリポジトリ)の変更を、自分のパソコン(ローカル)のリポジトリ(ローカルリポジトリ)に取り込むことをpullと言います。
なお、pullは「ひっぱる」という意味の英単語です

git pull origin ×× 
originという名前のリモートリポジトリ(自分以外のパソコンにあるリポジトリ)の変更をローカルリポジトリ(自分のパソコンのリポジトリ)に取り込むことができます。
××はブランチという概念であり、別の回で紹介されるようです。
リモートリポジトリの名前は、自動でoriginになります。
リポジトリに変更を加えることをcommitと言います。

以上のようにして、GitとGitHubが連携できます。


この回では、「自動的にプログラムを実行するボット」「自分のプログラムを公開するGitHub」「バージョン管理プログラムであるGit」について学びました。

少しずつWebアプリの作成に近づいてきたように思いますがまだまだ道は遠そうです。

 

ABOUT ME
GoodAmbition
オンライン塾経営者(大阪大学工学部出身の元開発技術者) 自身も家庭教師や塾講師として働きつつ、後輩の育成やオンライン塾を経営しています。 私自身も約10年にわたり家庭教師や塾講師として100人以上の受験生と向き合ってきました。 色々な学生、保護者の方とかかわる中でよく質問される内容や、受験に必要な内容について書いています。 独学で頑張っている人たちへ勉強計画や悩み相談なども受け付けていますので気軽にお問い合わせください。 就職活動や資格の勉強などで悩んでいる方もご連絡ください。 教育・就活、書籍、食べ歩きに関するお話がメインです。 最近取り組んでいること プログラミング、筋トレ、マラソン、ライティングスキル向上etc. 苦手なことを克服しようと頑張っています。