プログラミングの授業で死なないためにすべきこと
この記事はklis Advent Calendar 2015の16日目の記事です.
Q. お前誰?
・klis13(3編) システム主専攻
・栃木の高専で電子制御工学を学んでから今年度編入してきた情報学 学び歴1年未満の学生
・与えられたタスクをひたすらこなすのは得意ですがクリエイティブな思考はできません
・サークルはバレーサークルに入っています
Q.何書くの?
klisでは1年次必修の科目に『プログラミング演習I』,『プログラミング演習II』というプログラミングをする科目があります.
この授業は毎年難民が出るらしく再履修者用の科目が用意されているほどで,今年も阿鼻叫喚しているklis15(1年生)を見かけます.
知識情報・図書館学類ということで本や図書館に興味を持って入ってきた人がプログラミングをやらされて,大変つらいというのは心中お察しします.
が,この科目の単位を取らなければ卒業はおろか2年生の科目『知識情報演習I』でOPAC(Online Public Access Catalog, オンライン蔵書目録)を作るときに苦労することは必至で,「プログラミングつらい」の無限ループになってしまいます.
なので,今回はプログラミングがつらい1年生や,来年度編入してくる文系出身の3編生およびklis16(来年度入学する1年生)に向けて困ったときに見て欲しいTipsを記しておこうと思います.
Q. 先行研究は?
昨年のklis Advent CalenderでYousackさんがこのことについて記しています.
こちらも参考にしつつ,僕が考えたことを書いていきます.
ちなみに,先述の通り情報学を学んで1年未満なのでプログラミングが得意な人からすれば「何言ってんだこいつ」と言われる点も多々あるかと思いますが暖かく見守ってください.
それから大事なことがもうひとつあります.
僕自身は『プログラミング演習』を履修していないということです.
編入生には単位の認定制度があり,僕は高専でプログラミングをすこーしだけやっていたので履修が免除されています.
そのため,「『プログラミング演習』のことを何も分かっていない!」というツッコミは甘んじて受け入れます.
が,もしかすると『プログラミング演習』以外でも思い出したらお得になることかもしれないので,時間がある方はお読みください.
(一応言い訳すると今年の3編生のサポートをするために『プログラミング演習I』のテキストはある程度読みました)
Q. 何すればいい?
1. テキストや教科書を読もう
まずは基礎的なことです.
「当たり前だろ!」,「そんなの分かってるわ!」という声もあると思いますが,基本に立ち返ることは大切なことで,もしそれが間違っていた場合はかなりの時間を浪費してしまいます.
基本的に課題の出来は時間との戦いでもあるので,無駄な時間を過ごさないように配列やハッシュの指定の仕方などは重点的に見ておきましょう.
また,テキストは文章が多く読みづらい or 分かりづらいという人は,教科書である『たのしいRuby』を見てみるといいと思います.
配列やハッシュなども図解されていて,Web上で調べるより分かりやすいかもしれません.
2. 考え方を整理しよう
課題に向き合った時,最初からコードを書こうとしていませんか?
最初に課題を見た時や考え方が分からなくなった時は,一度エディタから手を離してノートやメモ帳にまず「最初にこれをやって,次にこれ…そして最後にこれ」というように日本語や図で書いてみましょう.
考え方が整理できていれば,その順番通りにメソッドを作ったり文字列の読み込みをすることが理解できます.
もしコードがぐちゃぐちゃになってしまって訳が分からなくなった時は有効だと思います.
3. インデントをつけよう
インデントとは、文章の行頭に空白を挿入して先頭の文字を右に押しやる「字下げ」のこと。
プログラミングの分野では、プログラムの構造を見やすくするために制御構造の内側にある行などを一律に字下げして記述することが多い。
引用: インデントとは|indent - 意味/解説/説明/定義 : IT用語辞典
インデントをつけることによってよくある「while ~ endにおいてendが足りない」だとか,「if文を書いたのにendがない」などのエラーが比較的見つけやすくなります.
このendがないことによって長時間無駄にする人がよく見られるので,インデントは是非つけて欲しいと思います.
emacs(プログラミング演習ではMeadow)は各行でTabキーを押すことによってインデントをつけてくれるはずです.
この時点でインデントがおかしい(ex. whileのwの位置とendのeの縦位置が合っていない)ことに気づいたら,while, if, endなどをよく見なおしてみましょう.
4. エラーメッセージを見よう
自分で書いたコードが実行した時に動かないと「なんで~~」,「どうしよう~~」という人がいますが,その前に画面に出ているエラーメッセージをよく見てみましょう.
よくあるエラーにNameErrorやTypeErrorなどがありますが,そこには同時に間違っているコードの行数が書いてあります.
その内容をよく見て,何が間違っているか考えてみましょう.
How to handle with Error messages in Ruby
上のサイトによくあるエラーとその対処法があるのでこちらも参考にしてください.
5. 人に頼ろう
1人でずーっと考え込んでいてもできない時はあります.
どうしてもできない時は最終手段です.
klisは『知識情報・図書館学類』ですが,情報学群の学類であるため理系出身の学生と文系出身の学生が混在しています(これは編入生も同様です).
つまり,課題ができず苦しんでいる人がいる一方で,時間に余裕を持って楽しんで課題に取り組んでいる人もいます.
友達に理系出身の人がいればそれは大チャンス,その人に頼ってみましょう.
他の人にコードを見てもらうと,自分が何時間かけても見つけられなかったエラーを一瞬で見つけることがあってその人が一瞬だけ神様に見えることがあります.
理系出身の人もそれくらいは教えてくれるだろうし,教えることにより自分がまた理解できるというメリットがあります.
ちなみに,ご飯をおごってあげれば大体の人は助けてくれる(個人の感想です)ので困ったらこの手段も使ってみましょう.
ここで「友達がいない人はどうすればいいんだ」という人は春日ラーニングコモンズ(KLC)を使ってみましょう.
KLCには『プログラミング演習』を履修済み且つ優秀なチューターさんがいます.
友達に頼るとその友達に頼りきってしまって答えを丸々教えてもらったりすることもあると思いますが,KLCは答えを教えずに考え方を教えてくれます.
自分の力でやってみたいという人はこちらの手段も有効だと思います.
おわりに
ここまで書いたところで3000文字近くなっていることに気づきました(長くてスミマセン).
長々と書いてきましたが,この記事を見ている履修中の人やこれから履修するかもしれない人が単位を無事に取れることを応援しています.
この科目を通じてプログラミングが好きになったり興味が出たりして将来の進路が変わるかもしれません.
嫌いな人も精一杯授業と向き合っていくことで,2年生では苦労しなくなるかもしれないので,頑張って欲しいと思います.
ちなみに,僕がこの科目を履修していないことは先述の通りですが,どこが間違っているかくらいは教えることが出来ます.
どうしても困ったときはご連絡いただけると助けられるかもしれませんので,僕のtwitterもご利用ください.
ぼやき
klis Advent Calendarに参加しようと思ったのは,入学前に昨年のklis Advent Calendarの記事を読んで参考になったのでやってみることにしました.
この時期課題が山積みになること忘れていて,この日に登録してしまいました
ゆっくり書いていたら1時間半かけてしまったので,頑張って課題を進めます…