読者です 読者をやめる 読者になる 読者になる

進捗のためにできること

この記事はklisアドベントカレンダーの24日目の記事として作成されました.

こんにちは,まつのきです. 今年ももうクリスマスです.いなふくんの進捗はどうでしょうか?気になって夜も眠れません.


12/22は知識情報・図書館学類の卒業論文の提出期限です.

Twitterのklis13リストを見ると、締め切り1週間まえくらいから少しずつ余裕がなくなっていく4年生の様子を眺めることができます.

締め切り直前にデスマーチをするのも楽しいのかもしれませんが、筆者はあまり徹夜が得意ではありません.

根を詰めすぎて身体を壊しては元も子もありません.計画的な進捗作りが必要です.

筆者はとても怠け者です.授業の課題に取り組む際は大量に時間を確保してグダグダ作業をしてきました.

安全マージンを十分にとって作業をするため締め切りを落とすことはありませんでしたが、大変効率が悪いやりかたです.

しかし、4年生になり諸般の事情でそれまでよりも忙しい日々を過ごすようになり、大量の時間を確保できなくなりました.

これまでのやり方で作業を進めていては締め切りを落としてもう一度4年生を楽しむ権利を得ることになります.

それはそれで面白いですが指導教員が悲しみます.

指導教員を悲しませてはいけません.やはり計画的な作業スタイルの確立が必要です.

良い作業スタイルを探す過程で、「こうすれば計画的に/効率的に作業が進められそうだ」と思えるいくつかの知見を得たので、この場を借りてみなさんに共有します.

筆者は情報系の学生です.そのため、知見の中には情報系の学生を対象にしたものもあります.

まずは専門に関わらず使えそうな知見を、そのあとで情報系の学生を対象にした知見を紹介します.

専門不問な話題

すべての大学生にとって有益そうな知見の紹介を始めます.

1週間のうち,作業をする曜日,時間帯,達成目標を決める

できる研究者の論文生産術という本があります.

できる研究者の論文生産術 どうすれば「たくさん」書けるのか (KS科学一般書)

できる研究者の論文生産術 どうすれば「たくさん」書けるのか (KS科学一般書)

この本は、雑務におわれ思うように論文を執筆できない大学教員・大学院生に向け、論文を執筆するための時間の作り方などを指南しています.

大学教員・大学院生だけではなく、様々な人にとって役に立つ作業術であると思いました.

中でも、「1週間のうちに作業する曜日・時間帯、その日の達成目標を決める」ということは、筆者の作業能率を大きく向上させてくれました.

なんだそれだけかと思うかもしれませんが,徹底することで生産性がかなり上がります.

筆者は毎週の月・火・水曜日の午前9時〜午前11時を卒業論文の執筆に使う時間としました.

この時間以外には基本的に卒業論文の執筆をしませんでした.

週に6時間しか執筆の時間がないわけで、これでは到底時間が足りないのではないかと思っていましたが、不思議なことに作業は順調に進みました.

大量にマージンをとって1日がかりで作っていた進捗とほぼ同等の進捗が1日のたった2時間のうちに終わるようになりました.

グダグダ作業をすると作業効率が極めて悪いということを改ためて実感し、「俺はなんて無駄な時間を...」と思ったのでした.

また、その日の作業の到達目標を定めることも重要です.

ゴールなしで走るよりもゴールが定まった状態で走るほうが精神的な負担が少なく済みます.

ただ、良い目標を立てることは簡単ではありません.

仕方がないので、筆者は「1日に最低1000字は書く」ことを目標にしました.

より良い到達目標の設定が可能になれば、より作業スピードが上がる気がします.

目標設定をきちんと行うことを、後輩のみなさんは心がけるべきです(自戒).

予定を第三者と共有する

作業をする曜日・時間帯を決定しても、遊びにいく予定やミーティングなどに阻まれてしまっては意味をなしません..

できる限り作業をする時間帯には予定が入らないように工夫したいと考えるのは自然なことですね.

筆者は、作業時間とその他の予定がバッティングしないように、自分のGoogleカレンダーを公開し、頻繁に一緒に行動する人たちとカレンダーを共有しました.(http://himkt.github.io/ の下の方にあります)

これによって作業時間に予定が入ることがほとんどなくなりましたし、日程調整の手間がかなり減って良い感じでした.

知られても良い予定については他人に共有する、ぜひ試してみて欲しいです.

記録について:ノートを使う?

継続的に作業をするための工夫は終わりで、ここからは作業中の具体的なあれこれについてお話します.

まずは作業の記録の取りかたについてです.

尊敬する大先輩であるところのるーめりさんの記事によると、研究ノートを作ることは研究の様々な側面において重要です.

筆者も研究ノートを作ることにしました.

紙のノートの方が「頑張ってきた積み重ね」が目に見えるので良いということだったので、紙のノートを購入して作業を記録しました.

f:id:himkt:20161223213906j:plain

紙ノートに記録をとっていたのは夏休みの2ヶ月間です.

ノートの冊数が増えるにつれて、過去の記録の検索に時間がかかるようになり、最終的にはパソコンでノートをとることにしました.

GitHub上にリポジトリを作成し、issueなどの機能を使っています.まぁまぁ快適です.

GitHubについて、もう少し詳しい話を後述します.

インターネット接続について

「執筆中はインターネット接続を切るべし」という教えをよく耳にします.

Twitterをしながら作業をするのはダメだと思いますが、情報系の人間が作業中にインターネット接続を断つのは必ずしも得策ではないように思います.

例えば、手法の実装をするにあたり,ウェブ上のドキュメントは重要な情報源です.

ドキュメントへのアクセスを制限するとかえって作業効率が落ちます.

一方で,Twitterをみながら執筆したり課題をしたりするのが非効率的であることも半ば自明です.

誘惑に弱い人はSite Blockなどを使ってTwitterなどへのアクセスに制限をかけましょう.

情報系学生にとって有益そうなことがら

ここからはより情報系な人に向けたトピックになります.

Git、GitHub

なにかしらのシステムを実装することになった場合,プログラムのソースコードなどを管理する必要があります.

Gitというツールは、ソースコードをコミットと呼ばれる単位で管理します.

コミットとは、ゲームにおけるセーブに似たものです(多分).

ソースコードを手元の計算機だけで管理しているとあるとき計算機が壊れてストレージからデータを復旧できなくなった!というときに詰みます.

また、コミット単位でコードを管理することで、予期せぬバグがプログラムに入り込んでしまったときにバグが含まれたコミットを取り消すことができます.

Gitの初歩的な知識をゲームを通して学ぶサイトがあります、Gitって何?という方はのぞいてみると良い気がします.

GitHubソースコード管理において非常に強力なサービスです.GitHubはGitを用いた開発のインターフェースを提供します.

コードの管理には気を遣うべきです.

また,GitHubはチームで開発を行う際にも非常に役に立ちます.

プルリクエストと呼ばれる機能を通して,研究室の他のメンバーに自分の書いたソースコードをレビューしてもらうことができます.

GitHubを使いこなすためにはGitの使い方を知る必要があります.

慣れないうちは多少戸惑うこともあるかもしれませんが,学ぶ価値は十二分にあると思います.

さらに,GitHubにはソースコードを管理する機能の他に,進捗管理を行うための機能も備わっています.

この機能に関してはMakkyの記事が詳しいです.

システム系以外の人にとっても便利な機能です.ぜひ読んでみてください.

まだGitHubのアカウントを持っていない人はぜひアカウントを作成してhimktをフォローしましょう(?).

プロジェクトの構成

システム系の研究(特に実験メインの研究)では,実験コードや実験結果(数値,図)や前処理をするスクリプト,前処理後のデータ,テストなどを1つのプロジェクトの中で管理する必要があります.

実験スクリプト、実験データ、実験結果などは別々のフォルダに置くようにして管理すると良い気がします.

また、ファイルの命名規制などを決めて置くとより管理が楽になります.

以下に筆者のプロジェクトのディレクトリ構成を示します.

適切かどうかにあまり自信はありませんが、1つのディレクトリにあらゆるファイルを設置するよりは見通しが良いはずです.

root
 ├── figure
 ├── data
 ├── model
 ├── result
 ├── test
 ├── util
 └── work

参考になりそうな資料へのリンクを以下に示しておきます.

テストを書く

テストを書くことはバグを発見し、対処する作業を劇的に楽にします.

複数のプログラムを組み合わせて行う実験において,エラーが出たときに「このモジュールがおかしい」ということがわかるとデバッグがとても効率的に行えます(強く自戒).

テストに関してはNLPチュートリアルの21ページ目あたりを読んだり「単体テスト」で検索すると色々と資料が見つかります.

まとめ

卒業研究に取り組むにあたって,生産性を高める/維持するために試してみたことについてまとめました.

来年卒業研究に取り組む人はもちろん,授業の課題をなかなか計画的にこなせない人にもぜひ試してみて欲しいです.

進捗管理術は一生ものの財産です、大学生のうちに洗練させるために試行錯誤する価値があると思います.

また,生産性を高めるために使えるTipsがあったらぜひ教えてください.

それではみなさん、良いクリスマスを.