GitHub について

計算機科学第一では,実習基盤に GitHub を利用します.GitHub はソフトウェアを共同開発するためのクラウドサービスです.この授業では,GitHub を用いて,講義資料の提供,授業の質問への応対,課題の提示を実施する予定です.

9月になって GitHub は classroom という新しい基盤を提案しました.GitHub classroom を利用すれば課題の提出,提出物への講評も GitHub でできそうです.GitHub classroom の利用については現在,検討中です.

課題LX00Aの概要

  1. GitHub アカウントの取得 講義資料は GitHub を通して提供します.また,授業についての質問は GitHub の Issue tracker を用いて対応します.このため GitHub のアカウントを入手して下さい.
  2. 講義資料の入手 講義資料は GitHub 上のプロジェクトとして提供します.本日は,この GitHub プロジェクトをみなさんの Mac のアカウントにダウンロードする作業を行っていただきます.
  3. 講義の例題の追実験 講義中にプログラムのさまざまな実行形態について学びました.その過程を追体験しましょう.
  4. sbtを用いた継続的実行環境の利用 講義中に紹介したsbt (Scala Build Tool)を用いた簡単なプログラミング実習を行います.

  5. 宿題(数のパズル) 次回はあるパズルを題材に,それを解くプログラムの作成を通して,テスト駆動開発について学びます.パズルは小学生の知識があれば解けますが,案外,骨があります.次回までにパズルを解いておいて下さい.次回の授業で,パズルを解く方法についてクラスで議論をします.

GitHub アカウントの取得

あなたは GitHub のユーザですか?もしそうならば,ここでの作業をスキップしても構いません.

GitHub ユーザでないならば,以下の作業を行って下さい.

  • ウェブブラウザでGitHubのサイトを開き,アカウントを入手して下さい.
    • Pick a username: 好きなユーザ名を記入する.奇天烈なユーザ名は避けてくれると嬉しいです(採点する側は変なIDで苦労が多いので)
    • Your email: 東工大メールのアドレスを記入する.ほかでも構いませんが,パソコン専用のメールアドレスを指定して下さい.
    • Create a password: パスワードを適切に指定する.
  • 登録したGitHubのユーザ名,メールアドレス,パスワードは忘れないで下さい.GitHub のサイトへのログインにはユーザ名とパスワードを用います.同じ情報を使って,ご自分のパソコンからもGitHubにログインできます.

GitHub の概要

GitHub はオープンソースソフトウェアを中心にしたソーシャルネットワーキングシステム (SNS)です.要するにオタクの集まるところです.日常の出来事を中心にしたSNS (facebook, twitter),写真を中心にしたSNS (Instagram),映像を中心にしたSNS (vimeo),音楽を中心にしたSNSがあるように,プログラミングを中心にしたSNSもあるのです.音楽オタクが流行りや自作の音楽の話題で盛り上がるように,GitHubのユーザたちは開発中のオープンソースソフトウェアのことで盛り上がります.ボーカロイドで盛り上っている人が,初音ミクを中心に集って,協同作業を行うように,プログラマーたちは開発中の面白そうなオープンソースソフトウェアの周囲に群れて手を貸すのです.

GitHubアカウントには,ユーザが提供するソフトウェア群があります.個々のソフトウェアの固まりをリポジトリ (repository) と呼びます.

一部のソフトウェアは複数の人が一緒に開発します.でも,GitHubの上のほとんどのオープンソースソフトウェアは,孤独なプロジェクトです.GitHubのコミュニティにはすごい人もいますが,ほとんどの人がプログラミングの初心者です.だから,ビビらないで下さい.(SNSが驚異的な人気を誇るわずかばかりの人たちと,無名な多数から構成されることはWired誌編集長のChris Andersonの”The Long Tail”で広く知られるようになりました.邦訳:ロングテール―「売れない商品」を宝の山に変える新戦略,早川書房

ほかのSNSと同じように,他の人たちが開発しているソフトウェアで気にいったものがあれば,それを★ = お気に入りに登録することができます.もっと気になるソフトウェアがあったら,そのソフトウェアが更新を通知(Watch)してもらうこともできます.さらに積極的に,オーップンソースの活動に参加する場合は,そのリポジトリを複製(Fork)した兄弟分のプロジェクトを始めることができます.

GitHub 初心者で,計算機科学第一の履修者でもあるみなさんには,最初にWatchしてもらいたいリポジトリがあります.それは,この講義資料のリポジトリです.講義資料のリポジトリを開き,画面のわりあい右上にあるWatch▼をクリックし,Watchingを選択して下さい.私が講義資料を更新するとあなたにそのことが伝わるようになります.

ご参考:スタッフのGitHubアカウント

脇田 / 森先生 / TAの芦田さん / TAの藤田

講義資料の入手

GitHubのユーザ登録がすんだら,手元の Mac に講義資料をダウンロードしましょう.

  • ターミナル アプリを開く.
  • 適当なディレクトリに cs1 という名前のディレクトリを作成する.
  • cs1 に移動し,以下のコマンドを実行する.

      git clone https://github.com/titech-is-cs115/lecture.git
    

    ここでgit cloneは,GitHubからリポジトリをダウンロードするためのコマンドです.その右にあるURLはリポジトリのものです.GitHub 上で見つけたリポジトリをダウンロードするときには,ブラウザでそのリポジトリを開き,画面の右欄で上から10cmくらいのところのHTTPS clone URL欄の内容を利用します.この欄の右にある左向き矢印をクリックするとこの欄の内容をクリップボードにコピーできますので,あとはターミナルにペーストするとよいでしょう.

講義の例題の追実験

講義のなかで,プログラムの実行方式として4種類を学びました.git cloneコマンドで取得したリポジトリの01aディレクトリに講義で用いたサンプルコードがあります.これを利用して,以下を追体験して下さい.

  • simple.cはC言語で書かれたプログラムです.これをclang Cコンパイラを用いてコンパイルし,実行させてみて下さい.みなさんはgccというCコンパイラを知っているかもしれませんが,Macでの標準的なCコンパイラはclangです.Macの上でgccを今でも使っている人は今後はclangを使うようにして下さい.
  • simple.scalaはScalaで書かれたプログラムです.このプログラムをテキストエディタ(Sublime Textをお薦めします)で開き,何をしているのかよく理解して下さい.
    • ターミナルでscalaコマンドを起動して下さい.
    • テキストエディタに表示されているプログラムのなかから,講義資料で入力を行っている箇所を選択してコピーし,scalaにペーストして下さい.
    • 思ったように動作しますか?simple関数の二つの引数の役割は理解しましたか?
  • simple.scalascalaインタプリタを用いて実行するもうひとつの方法について学びましょう.scalaコマンドはまだ実行中ですよね?すでに終了させてしまった方はふたたびscalaコマンドを実行して起動して下さい.講義資料の「参考:Scalaのインタプリタにファイルを読み込む方法」のページの要領で,scalaインタプリタにファイルに書かれたScalaのプログラムを読み込めることを学んで下さい. Scalaのプログラムをファイルに保存するときには,今までみなさんが書いてきたようなScalaのコードをobject Simple {}のようなもので囲わなくてはいけないことに注意して下さい.
  • Scalaのバイトコードコンパイラ (scalac) を用いてScalaのプログラムをコンパイルし,それを Scala のインタプリタに実行させる方法について学びましょう.講義資料の「仮想機械を用いた実行例」にしたがって作業して下さい.
  • (おまけ1)「どうしたことでしょう; Scalaのバイトコードは実は...」の内容も追実験してみるといいでしょう.
  • (おまけ2)配布したCやScalaのプログラムを敢えて破壊して作業を行うと当然のことながらエラーになります.どのようなエラーが出るか確認してみるのもよいでしょう.

sbtを用いた継続的実行環境の利用

  • sbtを用いた普通の作業方法を通して,compileコマンド,runコマンド,exitコマンドの使い方について学びます.作業用ディレクトリをcs1/lectureに変更してから,講義資料の「sbtの利用」の作業を実施してみて下さい.
  • sbtを用いた継続的実行モードの使い方について学びましょう.講義資料の「sbtセッションを通して実行したのは最初の~runコマンドだけ」の内容を実施してみて下さい.
  • lx00-a.scalaのなかの「あなたの***を書き換えて下さい」を適切に書き換えて,実行して下さい.
  • うまく実行できると,あなたの履修情報をJSONというデータ形式で表示されます.

GitHub Issueの使い方

講義のリポジトリを開き,画面の右上の方のIssues(日本語では懸案でしょうか)を開いて下さい.この画面には,プロジェクトに関わるさまざまな懸案が投稿されます.Issue trackerは普通はバグレポートの投稿とそれに関する議論に使います.

すでに本日の講義に対応してひとつのIssue Issue trackerの練習のためのIssueが投稿されているので,開いてみて下さい.Issueについて学ぶために,みんなでシリトリをしましょう.各自,少なくとも一回は参加して下さい.ほぼ同時に複数のひとが投稿するとおかしなことになると思いますが,そこはご愛嬌.適当に遊んで下さい.

宿題(数のパズル)

次回の講義までに,以下のパズルを紙の上で解いておいて下さい.思いの外,骨があると思いますよ.

数のパズル