本指南書では,卒論執筆の流れや心得を紹介します. 執筆開始前に適宜ご参照ください.
まず,執筆は以下の流れで行います.
- LaTeX 環境の選定
- バックアップ環境の用意
- 執筆
Note
ここでの紹介はあくまで推奨であり,強制するものではありません. 使いたい環境がある場合はそっちを使ってもらって大丈夫です.
各々使いたい環境があると思うので研究室としての推奨は設けていませんが,参考までに以下のような選択肢が考えられます.
- LaTeX コンパイル環境: TeX Live, Cloud LaTeX, Overleaf, CyTeX など
- 編集環境 クラウドコンパイル環境の Web UI, VSCode LaTeX Workshop, Cloud LaTeX for VSCode, LaTeX 専用の統合環境 など
Note
クラウドコンパイル環境を採用する場合は,無料枠では Git 管理ができないなどの制限があるので確認すること.
絶対に卒研のデータのバックアップを取っておきましょう. なぜか卒論時期に限ってマシンの故障が頻発します. 提出間近になって PC が壊れてしまい,提出できなくなるという悲惨な事故は起こり得ます. そうならないように,ローカル環境だけでなく OneDrive や Google Drive,GitHub などのクラウドサービスにバックアップ体制を構築しておきましょう.
これらのバックアップ環境の中でも,弊研では以下の環境を推奨します.
- 「cysec-lab」の GitHub Organization に紐づいたプライベートリポジトリ
理由としては,
- バージョン管理をしたい: Git を使用することで,データの変更履歴を管理し,誤った更新やデータ損失が発生した場合に簡単に元の状態に戻せる.
- レビュワーがアクセスしやすい: 個人アカウントでリポジトリを作成した場合は,レビュワーにリポジトリへの招待の手間がある.めんどくさい.Organization のリポジトリにしておけばそのような手間はない.
- レビュー機能を使える: GitHub の Issue や Pull Request,Permalink 機能を用いたレビューができる.
- github アカウントの作成,CySec org への追加
- git コマンドのインストール
- gh コマンドのインストール:一番楽.SSH キーの登録も必要ない.
- リポジトリの作成,Cysec org の private リポジトリとして
- cysec-lab/cytex の bachelor-fy2023-autumn から zip をダウンロード
- ディレクトリ名を変更
- git init
- git add / git commit
- init commit を push
- GitHub に反映されたか確認してみよう
最低限覚えたい概念
- Git とは何か
- git init: ワークスペースを作成する操作
- git add: 記録する変更を選ぶ操作
- git commit: 変更を記録する操作
- git push: 記録した変更をリモートリポジトリに共有する操作
Git 入門資料
困った時は,ChatGPT に「Git で〜したい時はどうすれば良い?」って聞いてみるのもいいかも.
- こまめに push すべし:少なくとも一日の作業終わりには必ず git push.
- PDF も Git 管理すべし:LaTeX コンパイルが通らなくなるなど,前バージョンの PDF を参照したいときは多い.あと,レビュー時に GitHub から閲覧できるも便利.
- commit 戦略こだわるべからず:実開発であれば commit するタイミングや commit message をこだわるところだが,卒論執筆ではその必要はない.一息ついたタイミングで commit/push しよう.それより論文の完成度を高めることを優先しよう.ちなみに,GitHub Copilot に commit message を生成してもらうこともできるので気になる人はぜひ.
卒論執筆における心得や文章表現等は以下をぜひ参考にしてください.
- 卒業論文の書き方 | 中田 亨
速く楽に書くコツは,「広く浅く書いて積み上げる」ことと「人に見せる」ことである.
- 学位論文の書き方 #論文執筆 - Qiita
通常の論文では省くようなこと(社会背景や超基礎的なことなど)も書くことが推奨される
- 論文における提案手法の書き方 #論文 - Qiita
提案手法には一般的なことを書く 実装には実際にどの様にそれを実現したかを書く
先輩たちの資料を見たいときはここにあります.
Git/GitHub での作業に慣れてる人向けにはなりますが,GitHub の Issue や Pull Request 機能を用いたレビュー方法もあるので紹介しておきます.
Pull Request でのレビューの場合,ファイル diff が見やすくなったり,suggestion コメント機能が使えたりと便利な機能が使えます. ただ,慣れてないと Pull Request を作成するまでの工程が難しいかもしれません.
他方で,GitHub Issue でのレビューの場合は特に Git の操作を行う必要なく簡単に始められます. diff や suggestion コメント機能はありませんが,Permalink でコードを参照しながらレビューコメントすることができます. 実際に,こちらの論文執筆時に GitHub Issue でのレビューを行ないました. 実例を確認したい場合はご参照ください.
[!NOTE]GitHub の操作に慣れていない場合は,素直に PDF ファイルや紙媒体でレビューしてもらいましょう. 本セクションは読み飛ばしてもらって大丈夫です.
GItHub Issue や Permalink について知りたい場合は以下をご確認ください.
GitHub Issue でレビューを受けたい場合,以下のようなフローが考えられます.
- レビュイーが,レビュー用の Issue を作成する.(
github.com/cysec-lab/{repo}/issues/new
) - レビュワーが,レビューで参照したい箇所の Permalink を作成する.
- レビュワーが,Issue に Permalink とレビューコメントを記載し,コメントを投稿する.
- レビュイーが,コメントを確認して修正.(Tips:Issue コメントへのスタンプを,修正ステータスにするのもよさそう)
GItHub PullRequest について知りたい場合は以下をご確認ください.
Pull Request でのレビューを受けたい場合,以下のようなフローが考えられます.
- レビュー用のブランチを作成するため,init commit から branch を生やして push する.
- GitHub の Pull Request 作成ページにアクセスする.
- レビュー用 branch を base branch,執筆作業をしている branch を head branch として Pull Request を作成する.
base/head branch について知りたい場合は以下をご参照ください.
- pull request の作成 - GitHub Docsの「ブランチの範囲と宛先リポジトリの変更」
- CyLint: textlint を使って、日本語論文形式の LaTeX フォーマットなのかチェックできる Web サイト(provided by xryuseix)
- textlint: 特定のフォーマットに従った文章なのかチェックしてくれるツール.日本語論文形式の LaTeX フォーマットなのかチェックすることも可能
- Word:意外と文章構成ツールとして優秀.Word にコピペするだけという手軽さがよい.
- ChatGPT:文章校正タスクは得意領域.積極的に使っていこう.
- Create LaTeX tables online: LaTeX の表を簡単に作れるサイト.
- LaTeXify Web: Python のコードを LaTeX 形式に変換してくれるサイト.
- Mathpix: OCR で画像の数式を読み取り,LaTeX 形式に変換してくれるサイト.
- BibTeX entry from URL:閲覧ページの BibTex 項目を自動生成してくれる Chrome 拡張機能.
- LaTeX にソースコードを【美しく】貼る方法 #LaTeX - Qiita
VSCode では GUI から Git の操作ができる. デフォルトでも色々できるが,拡張機能を入れるとさらにできることが増える.
- Git Graph:リポジトリの history グラフを見れたり,git の操作ができる.
他にも便利な拡張機能が
- LaTeX Workshop: VSCode に LaTeX の統合環境を作る拡張機能.コード補完やコードフォーマット, pdf プレビューなどの便利な機能を提供
- Japanese Language Pack for Visual Studio Code:VSCode を日本語化してくれる.
- GitHub Copilot:GitHub Pro への登録が必要(学生無料)
- Code Spell Checker:英単語の綴りミスを見つけてくれる.
論文の書き方や Git の操作など困ったことがあれば,先輩達にどんどん相談してください 👍 卒業研究 最後の追い込み,頑張っていきましょう 💪