****************** オリエンテーション ****************** ============ 履修について ============ * 主に2〜3年生が対象。 * 「情報基礎2」相当のプログラミング知識(繰り返し、条件分岐、関数、配列など)が前提。「オブジェクト指向プログラミング基礎」相当の知識(クラス、インスタンス、メソッドなど)が推奨。 * ネットワークの知識はあまり必要ないが、サーバ・クライアントの概念は何となく知っている方がよい。 * 前半はRubyの文法の勉強。 * 毎週最初に前回の練習問題の解答。誰かを指名して説明してもらう。説明したら加点するので、なかなか指名されなければ手を挙げるように。 * その日のポイントを説明した後、各自で練習問題を解く。できなかったら宿題。 * 宿題の締め切りは厳守すること。締め切り後に正解を公開するので、遅れて提出しても0点。 * 後半はウェブアプリケーション制作。 * 設計書なども採点対象なのでちゃんと提出すること。 * 最後の週は、時間があれば発表会の予定。時間はないかもしれない。 * 他のプログラムを参考にするのはよいが、出典をコメントとして明記すること。 * 定期試験に準ずる課題なので、不正行為(出典を明記しないコピペなど)があれば今学期の科目は全部D。 * 成績の基準は次の通り * 毎週の課題の提出・授業での説明: 40点 * 最終課題の設計・制作・発表: 60点 * 昨年度実績 * 履修許可53名→履修者45名 * S:18, A:11, B:2, C:1, D:13 ================== スクリプト言語とは ================== はっきりした定義はない。元々は UNIX で対話的な作業を自動化する簡単なプログラムをスクリプトと呼んだところから来ている。最近はそのような意味でのスクリプトだけに留まらないことから、軽量言語とか動的言語と呼ぶことも多い。代表的な言語は perl, python, php, ruby など。 * 読みやすさより書きやすさを重視 * 簡単なことは手軽に書ける * 大規模プログラムではデバッグや保守が難しい * 動的な要素が多い * 柔軟なプログラムが書ける * 処理系はインタプリタが普通なので実行速度は遅い(最近はJITコンパイラで高速化が進んでいる) ======================================== ウェブアプリケーションフレームワークとは ======================================== * ウェブアプリケーションとは * 動的な(アクセスするたびに内容が変わるような)ウェブページを用いて何らかの処理を行うソフトウェア * サーバで実行されるプログラムと、クライアント(ブラウザ)で実行されるプログラムから成るのが普通 * フレームワークとは * アプリケーションを作る時に大枠は同じであることが多いので、枠組みだけを取り出して共通に使えるようにしたもの * ライブラリは自分のコードから呼び出すが、フレームワークは自分のコードを呼び出す。 ================ 参考資料について ================ RubyとRailsについては、ググれば山のように出てくるが、いろんなバージョンの情報が混ざっているので注意。公式マニュアルが一番確実。 * `Rubyリファレンスマニュアル `_ * `Ruby on Rails ガイド `_ .. _sec-environment: ======== 演習環境 ======== 何も考えずに ruby, rails, その他関連パッケージをインストールしていくと、バージョンが合わないという泥沼にはまりやすい。 * rbenv などの複数バージョン切り替えツールを使う。 * Docker コンテナを使う。最近はこちらの方がお手軽。 * Dockerをインストール → `Get Docker | Docker Documentation `_ Dockerを使用してrubyを実行する手順は次の通り。Railsの場合はもう少し複雑だが、それはRails編の最初に説明する。 1. ターミナルでこの授業用のディレクトリに ``cd`` し、次のコマンドを実行。ただし、Windows PowerShellの場合は ``$PWD`` を ``${pwd}`` に変える。 :: docker run -it --rm -v $PWD:/home ruby /bin/bash 2. プロンプトが「root@なんとか」に変わったら、コンテナ内のシェルが実行されている。 3. 上のコマンドを実行した時のディレクトリが ``/home`` にマウントされているので、そこに ``cd`` する。 :: cd /home 4. 必要な作業を行う。ファイルの編集はホスト側のエディタ(お好みのもの)で行い、プログラムの実行はコンテナ側のシェルで行う。 5. 終わる時はコントロールDを押す。 6. プロンプトが元に戻ったら、コンテナは終了している。 .. note:: Dockerコマンドの説明 - ``docker run``: コンテナを起動する - ``-it``: インタラクティブ(i)かつpseudo ttyを割り当て(t) - ``--rm``: 起動プロセスが終了した時にコンテナを削除する - ``-v $PWD:/home``: カレントワーキングディレクトリをコンテナ内の``/home``にマウントする - ``ruby``: Dockerイメージの名前 - ``/bin/bash``: 起動プロセス ================== Rubyを使ってみる ================== 伝統に則って Hello world から。 対話的に実行 ------------ ターミナルで ``irb`` コマンドを使用する。 式を入力するとすぐに実行されて、その値が表示される。 :: % irb irb(main):001:0> puts "Hello, world!" Hello, world! => nil ``=>`` の後に表示されるのは、式を評価した値。:: irb(main):002:0> "Hello, world!" => "Hello, world!" irb(main):003:0> 2+3 => 5 irb(main):004:0> x=1 => 1 irb(main):005:0> x => 1 ファイルを実行 -------------- エディタでプログラムを書いたファイルを作り、ターミナルで ``ruby`` コマンドを使用する。 エディタで ``hello.rb`` を作成 :: puts "Hello, world!" ターミナルで実行 :: % ruby hello.rb Hello, world! .. comment =================== Railsを使ってみる =================== 下記の手順は、特別教室のiMacで行う場合。他の環境では若干違うことがある。 1. まず必要なファイル一式を作る。 :: % rails new hoge --skip-bundle 2. ファイルを作ったというメッセージがずらずらと出てくる。 ``hoge`` というディレクトリの中に作られたので、ディレクトリを移動。 :: % cd hoge 3. 必要な gem をインストール。 :: % bundle install --path vendor/bundle 4. データの形式を指定して骨組みを作る。 :: % rails generate scaffold sample name:string comment:string 5. データベースを作る。 :: % rails db:migrate 6. ウェブサーバを起動する。 :: % rails server 7. ブラウザで http://localhost:3000/ を見ると、Rails の初期ページが見える。次に http://localhost:3000/samples を見ると、sample のデータを表示するページが見える。なお、この方式で起動したサーバは他のマシンからアクセスできない(わけではないがCNSのアクセス制限のおかげで面倒くさい)ので、公開サーバに作ったのがこちら→ http://ipl-rails.sfc.keio.ac.jp/hattori/hoge/samples 。 **New Sample** のリンクをたどると、name と comment のデータを入力可能。 8. ウェブサーバを^Cで終了。今作ったアプリケーションを削除する。 :: % cd % rm -r hoge