そぬばこ

備忘録とか、多分そんな感じ。

2月に読んだ小説

2月に読んだものを軽くまとめる。最近ハヤカワ多い。

以下、読み終わった時期が早い順


僕が愛したすべての君へ (ハヤカワ文庫 JA オ 12-1)

君を愛したひとりの僕へ (ハヤカワ文庫 JA オ 12-2)

乙野四方字

bookmeter.com bookmeter.com

これはセットで一冊みたいなものなのでまとめて。
並行世界という概念の存在で起こる、不器用な天才が主人公の話。
設定も凝っていて、SFとしても、恋愛小説としても楽しめる。
けっこうサッと読めるので、本を読まない人にもオススメしておきたい。

最後にして最初のアイドル (ハヤカワ文庫JA)

草野 原々

bookmeter.com

短編3作。パンチの効いた文章で殴りかかってくる。
何かと話題になった一作だったらしいが、読めば雰囲気でわかる。
SF好きなら嫌いになれないとは思う。

そして僕等の初恋に会いに行く (角川文庫)

西田 俊也

bookmeter.com

初恋を精算する話。
終始うまくいかない辺りが、現実的でちょっぴりほろ苦い。


以上4冊。
3月は花粉の季節。やっていきじゃどうしようもないこともある。

1月に読んだ小説

1月に読んだ(読書メーター上読了日が1月となっているもの)を軽くまとめておく。本を読むためにしっかりとした時間を確保することは無くて、いつも通り、新宿調布間の京王線で読んだ。

以下、読み終わった時期が早い順


雨の降る日は学校に行かない (集英社文庫)

相沢 沙呼

bookmeter.com

中学時代、学校に行くのは楽しかったか?
カーストを気にして、取り繕っていた自分はいなかっただろうか?
現実として、そこにある。 誰もが気づいても気づかないフリをしているだけ。
6編からなる短編集。

Just Because! (メディアワークス文庫)

鴨志田一

bookmeter.com

dアニメストアで最終回を見た後すぐに読んだ。
読了後の率直な感想としては、物足りない終わり方ではあったが、アニメと合わせて楽しむのが良いと感じた。
アニメとは違い、瑛太と美緒二人のみの構成になっていて、心情描写の補完と考えて読むのを奨めたい。

君は月夜に光り輝く (メディアワークス文庫)

佐野 徹夜

bookmeter.com

第23回電撃小説大賞、大賞受賞作。
月の光を浴びると体が光る発光病で入院している女の子と、主人公である僕とのラブストーリー。
主の展開はよくあるので、どうなるかは読める。しかし、心情描写がうまく、ラストが感動した。

繕い屋 月のチーズとお菓子の家 (講談社タイガ)

矢崎 存美

bookmeter.com

飯テロ小説。料理の表現がとてもおいしそう。
自分の夢を喰らうちょっと変わった話。夢喰いだとバクを思い出すように、他人にどうにかしてもらうのがよくある話だと思うので、気になった人は一読して欲しい。

ポスドク! (新潮文庫)

高殿 円

bookmeter.com

非常勤講師が主人公。
ポスドクの話と一緒に暮らす甥っ子との話が二重で楽しめた。
「派閥争い」や「家族」といったテーマが好きな人も楽しめる内容だと思う。
設定の甘さや、この登場人物は必要なのか、といった部分が少し残念。


以上5冊。
2月はあまり読めないような気がする。なんとなく。

Arch Linuxにgnomeを導入した

以下の話は 2018/1/22 時点の話です。

Linuxディストリビューションとかに疎い私のような人間が、どういう所で躓いたかメモ。
OSはArch Linux。間違っているところがあるかもしれないので、 公式wiki をちゃんと見ることを推奨する。

Xら辺を入れる

グラボを見て、ドライバを入れる

# lspci | grep VGA

これで確認して、合うものを入れる。私の場合Intelのものなので、以下を入れる。

# pacman -S xf86-video-intel

そしたら、X周りを入れ…

# pacman -S xorg-server xorg-server-utils xorg-xinit mesa

られない。xorg-server-utils が見つからんと怒られた。
調べた。見ていた情報が古かったようで、 xorg-apps に代わっているみたい*1。 気を取り直してこう。

# pacman -S xorg-server xorg-apps xorg-xinit mesa

そしたら、必要なものを入れてXのテストをしておく。

# pacman -S xorg-twm xorg-xclock xterm
$ startx

動作確認出来たら exit で出て、下準備はだいたい完了。

gnomeを入れる

では、gnome本体を入れる

# pacman -S gnome

お好みで gnome-extra も入れる。これは別に無くてもgnome自体は動く。

# systemctl enable gdm

Display ManagerのGDMをenableにして終わり。rebootしてgnomeが立ち上がれば、オーケー。

日本語入力

躓いたのは、日本語入力で、標準のIMEだとうまく 半角/全角 で切り替わらない。gnome 3とfcitxの相性が悪いのか、いろいろ試してもダメそうだった。

せっかくなのでオープンソースGoogle日本語入力である mozc を別途で入れてみる。

$ yaourt -S mozc

あとは、gnomeの言語設定の入力ソースから 日本語(mozc) を選ぶだけ……、だと思っていたがUSキーボードで認識されていた。

ちゃんと検証していないのでわからないが、現状以下の2つのことを行うことで、JP106キーボードで動作するようになった。

$ localectl set-x11-keymap jp

上記.bash_profile に書いている。これはあんまり意味が無さそう。
本命は入力ソースのリストに、JP106キーボードでちゃんと動くデフォルトの日本語 を追加しておくことです。これをやっておくと、 日本語(mozc) でもちゃんとJP106キーボードで入力出来ました。めでたしめでたし。

休日はWindowsとArch Linuxデュアルブートさせるところから始め、Arch側のセットアップをいろいろしていたら終わってしまっていました。
知識不足を感じた休日でした。有意義なんだか、そうじゃないんだか。

参考にしました


雑なやつ(12/26)

もうすぐ一年が終わる。

今年は波があった。良い事も悪い事も、一つ一つが大きかったし、新しい事が増えた気がする。

あっという間に、二週間ぐらい先には自分も21になる。20の終わり。思い残し、やり残しはないだろうか。

気が付かぬ間に、歳は私を追い込む。冷たい風に負けずに、ぬくぬくの布団から飛び出して、明日も朝から頑張ることが、せめてもの自分自身の償いとなるように。

TeX Liveを入れ直した

初めてTeXを入れたのが、二年前の六月とかその辺かな……?

そうみたい。と、いうことでそれ以来のアップデート。せっかくなので、全部消して全部入れ直しました。

ネットワークインストーラー使って、残り30時間とか出る始末。

unpackして、batファイルからやったら2時間程度で済んだ。気をつけよう。

晴れてTex Live 2017。お目当てはアップデートされていたLuaTeX。 TeXアドベントカレンダー見てたら、気になったもんで……

adventar.org

acetaminophen.hatenablog.com

前々から気にはなっていたものの、1.0となり安定版が出たということで、使用に踏み切った。これから使いこなせればいいかなってことで、Lua自体は全然わからない。とりあえず、アドベントカレンダー1日目の記事を見ながら、フォント指定を簡単にやってみた。

qiita.com

本当に素晴らしい記事をありがとうございます。簡単だった。

課題や実験レポートとかに使っているテンプレート用のtexファイルもLuaLaTeXに合わせたものにした。いい感じに文章成形していきたい。

Markdownで講義ノートをとる

この記事はUEC Advent Calendar 2017の10日目の記事です。
前日はALevammeさんの「K科の研究室生活と就活について」でした。
K課程ならではの研究室活動の難しいところがあるんですね……
私は夜間主ではありませんが、B3で来年度よりラボワークがスタートします。
既に仮配属ですが、配属先も決まっているので、やっていきを持って頑張りたいと思います。


講義とノート

皆さんは毎日、遅刻することなく、ちゃんと講義に出ていますか?*1
改組によって大きく変わった部分もあるかと思いますが、学科生の生き残りとしては、3年に上がってから講義の専門性が高くなり、有意義な時間を過ごせているなと感じる部分が多々あります。
講義に出ているとやはり、板書等のノートをとり、勉強をするわけですが、個人のスタイルや講義そのものの性質によって、ノートのとり方というものも変わってくるのではないでしょうか。

ラップトップで講義ノートをとる

ノートのとり方の一つとして、ラップトップで、テキストエディタや、OneNote等のツールを用いるという方法があります。
実際、講義中にふと周りを見渡すと、MacBookThinkPadSurfaceなどで、机の上で板書を見ながらキーボードを叩いたり、スタイラスで図を書いている学生が少なからずいます。
私もその中の一人で、全ての講義ではないですが、ノートを自分のPCを使ってとっています。
この記事では、私がどのように講義ノートをとって、それについて思っていることを書いていきたいと思います。

Markdownとは

さて、題の通り、私はMarkdown講義ノートをとっています。
Markdownとは文章を記述するマークアップ言語の一つです。マーク"アップ"言語なのにマーク"ダウン"なのか……と、思う方もいらっしゃるかもしれませんが、気にしないでください。
そもそもマークアップ言語とか知らんわ、という方にはお仲間にHTMLとか、TeXとかXMLとかがいると説明したらなんとなくイメージは掴めますでしょうか。正直あんまり、気にしなくていいです。
アピールポイントを説明すると、Markdownは、サクッと、いい感じに、箇条書きの文章が作れるぜ!
最初に断っておきますが、この記事では詳しい記法等は紹介しません。もし、使いたくなった人は先人様方のチートシート等を参考にしてみてください*2

環境

私がよく使うテキストエディタの一つに、AtomというGitHub製のものがあります。
GitHubが作っていることもあり、READ MEでよく使われている、GitHub Flavored Markdownに標準で対応しており、特に何も導入しなくても.mdファイルでMarkdownが扱えるので非常に便利です。 WindowsであればCtrl+Shift+MでPreview表示が利用できます。

f:id:nersonu:20171210154810p:plain:w500
Markdown Preview
ノートをとっていると、情報系学生である以上、時折数式を使いたいと考えることがあります。しかし、標準のままでは、数式に対応していません。
ご安心ください。Atomのパッケージは豊富です。私は次のパッケージを入れて、数式表示を導入しています。

github.com

このパッケージを入れることで、Ctrl+Shift+Xで数式表示が可能になります。記法はLaTeX準拠です。
また、リアルタイムPreviewが可能になり、非常に便利です。

f:id:nersonu:20171210155730p:plain:w500
数式表示

ノートをとる時に心がけること

3年前期から、このような環境でノートをとってきたわけですが、Markdownでノートをとる時に心がけたほうがいいなという点がありました。
それは、うまく「箇条書きでまとめてやる」というところです。

f:id:nersonu:20171210160532p:plain:w500
箇条書きでまとめる
これは紙でノートをとる時にも気をつけたほうがいいことなのですが、箇条書きで、インデントを綺麗に整えてノートをとると、非常に見やすいです。
Markdown-とインデントの高さで、綺麗な箇条書きができます。
そういった形式のノートを作るのに向いていると言えるでしょう。

板書の図をどうやってまとめていくか

Markdownに限った話ではありませんが、できるだけ文字列や数式が主体の講義でないと、Markdownでノートをとるのは難しいと思います。
しかしながら、ノートに図等を挿入したい時というのは必ず現れます。
私はまだ、この完全な解答がわかっていませんが、柔軟な対応が必要だなとは思っています。いくつか私がとっている解決策をご紹介します。

1. 文章に直す

図が文章で表現できるくらい簡素なものであれば、文字に起こすという方法があります。
自分自身にとって、内容を理解するのに必ずしもそのままの形式で無くていいものであれば、そもそも図を挿入しないという手があるでしょう。

2. コードブロック内で頑張る

コードブロック内で、そのまま出力されることを用いて、アスキーアートのように頑張って文字で図を自作します。 簡単なものなら意外とこれでなんとかなります。

f:id:nersonu:20171210161716p:plain:w500
コードブロック内で描いた図

3. 外部ツールで簡単に図を作成する

例えば状態遷移図ならば以下のサイトで簡単に図を作成できます。

Finite State Machine Designer - by Evan Wallace

講義ノートを取りながら図を作成しないといけないため、あまりそこに時間をかけたくないというのが理想ですよね。
公開されている便利ツールがあるのならば、そちらを使って図を作成し、挿入することを考えるほうが良いと思います。

4. 図は手書きにする

ルーズリーフ等に手書きで図を描き、スマートフォンで撮影して、あとで図を挿入するような形です。
あまりにも図が多い講義には、そもそもMarkdownでノートをとることが向いていないので、諦めたほうがいいとは思います。

Markdownは万能じゃない

先から言っているように、板書の図や表が多い講義はそもそもMarkdownでノートをとること自体が向いていません。
また、フリーダムに板書を使う教員の講義にも向いていないでしょう。
私自身も全ての講義で、Markdownを使ってノートをとっているわけではありません。
これは手書きのほうが向いているなと思ったら、ルーズリーフにペンを使ってノートをとっています。
何でもかんでも無理にPC上でノートをとるというのは、かえってうまくいかないことのほうが多いのではないかと思うところが、やはりあるのです。
キーボードでタイピングするほうが、文字列を速く記録することが出来ることを考えると、頼ってしまいがちですが、効率よくケースバイケースで使っていくことが大事なんだろうと思います。
心がけることでも言いましたが、私はMarkdownは箇条書きでまとめることが向いていると思っています。講義との相性もあるので、うまく利用出来るかなと思った時に、一度やってみてはいかかでしょうか。

明日はponkikkidayoさんです。


*1:私の周りの人間が、起きていなくて2,3限に出ていないことがあるのは、また別の話である。

*2:こことか

CeiEDでCLion使いたいでしょ?

この記事はUEC Advent Calendar 2017の2日目の記事です。
前日はid:octopus_iMykさんの「ドーム友達を脱退した前田氏の理由が核心をついていない件」でした。
共同生活って難しい……


まえがきのようなもの

これを読んでいる電通大生のみなさんは、「基礎プログラミングおよび演習*1」等で、C言語のコーディング方法から、コンパイルして実行する手順を学んだ、もしくは学んでいる最中であろうと思います。
例えばemacsvim等のエディタ*2を開き、C言語のコードを書きます。その後、gccを使ったりして、コンパイルして実行していることでしょう。
しかしながら、IDE*3を用いてJavaからプログラミングを学んだ私にとっては、この手順が非常に面倒に感じたものでした。
そんなこともあり、日頃からC言語を使えるIDEをいろいろ探していました。Microsoft Visual Studioを試したりしましたが、どうも肌に合わないようで、うんうん唸りながらnanoのシンタックスハイライトのカラーリングを変え続ける日々が続きました。

運命の出会い(?)

ある時、Javaでコーディングをしていると、IntelliJ君がふと、目につきました。
IntelliJはJetBrainsが世に送り出している主にJava向けのIDEです。私は学生の特権*4を用いて、Ultimate版をしっかり確保していました。
ここらへんの詳しい話は12/23にudoooom君がしてくれるかもしれないので、割愛します。簡単に説明すると、よくある学生にはタダでライセンスをくれるってやつです。JetBrainsは本当に太っ腹だなぁ。
何気なくそのJetBrainsのHPを眺めていると、CLionという文字が目につきます。
なんだこれは、ライオン? がおー*5

CLionとは

前置きが長くなりましたが、今回紹介するのはCLionのお話です。
CLIonとは、JetBrainsが提供するC・C++向けのIDEです。UIは非常にIntelliJに近く、普段からIntelliJを使っている人にはオススメです。
もちろん、こちらも学生の特権を使えば無料で手に入れることができます。気になった方は、早速JetBrains様に学内メールアドレスを献上してみましょう。
ここから先は、I科とⅠ類の計算機室であるCeiEDでの導入の手順を軽く紹介しますので、ぜひ。

CLionを導入しよう

CeiED以外の他環境では導入手順や、設定等に違う点があると思いますので、ご留意くださいませ。

1. ダウンロードする

まずはダウンロードしなきゃ始まらない。
https://www.jetbrains.com/clion/ でダウンロードしましょう。
Linux版だと.tar.gzのファイル形式で手に入るはずです。

2. 解凍しよう

圧縮ファイルは解凍しないと始まらない(?)
CeiED標準のfirefoxでダウンロードしたならば、ルート直下のダウンロードディレクトリにあるはずです。
解凍は好きなやり方でいいですが、こんな風に

$ tar -zxvf CLion-2017.3.tar.gz

とでもしてやれば出来ると思います。
解凍したものをそのままダウンロードディレクトリに置いておくのもアレなので、好きなところに移動させておくと良いでしょう。

3. 起動しよう

起動しなきゃ始まらない。それはそう。
解凍後はclion-2017.3とかそれに準じた名前のディレクトリになっているはずです。その中にbinがあり、binの中にclion.shがあります。

$ cd ~/clion-2017.3/bin/
$ ./clion.sh

こいつを叩いて起動しましょう。簡単ですね。
起動直後はライセンスの確認があるので、JetBrains様にもらったものを使いましょう。
導入は以上です。お疲れ様でした。

CLionを使ってみよう

では、早速CLionを使ってみましょう。File -> New Project...でプロジェクトを新規作成できます。

f:id:nersonu:20171201133430p:plain:w300
プロジェクト新規作成画面
例えば、C言語で何かやりたいならば、C Executableを選びます。プロジェクトを作成する場所を指定し、Language standardはお好みで。
C90とかC99がわからないという人は、一度自分で調べてみてください。
あとは右下のCreateを押せば、プロジェクトが作成されます。

作成したプロジェクトには、いわゆるHello, Worldプログラムのmain.cCMakeLists.txt、あとはCLIon君が勝手に生成したファイル群があります。

f:id:nersonu:20171201133435p:plain
作成したプロジェクト
早速右上のスタートボタンか、Shift+F10でプログラムを動かしてみましょう。画面下部に"Hello, World!"と表示されていれば問題はありません。
f:id:nersonu:20171201133441p:plain
Hello, World!

CMakeってなんですか

さて、もうCLionを使える状態にはなりました。しかし、CMakeList.txtって何やねん。と思われた方がいらっしゃると思います。
実は、CLionはCMakeと呼ばれるビルドシステムを採用しており、つまるところCMakeList.txtというのはそいつの設定ファイルと思ってもらえればよいです。
記述方法もそんなに難しいものではないので、軽く説明しておきましょう。
今、CMakeLIst.txtをCLion上で開くと、以下のようになっていると思います。

cmake_minimum_required(VERSION 3.9)
project(Project_name C)

set(CMAKE_C_STANDARD 90)

add_executable(Project_name main.c)

これを見て、ああ、add_executableにファイルを追加していけば、いいのかな。くらいわかれば、もうどうということはない(?)気がします。
実際、新しくsub.cを追加したいならば

add_executable(Project_name main.c sub.c)

と、してやればいいです。

あと、電通大生の皆さんはやはり、-Wallといった警告オプションや、-O2などの最適化オプションを使いたい! と考えると思います。 CLionでも、もちろん可能です。こういうときは

add_definitions("-Wall -O2")

と、一行追加してあげましょう。

また、電通大生の皆さんはやはり、数値計算を講義や実験で行う時に、math.hといった数式ライブラリを使わなきゃ……と、常日頃思っていることでしょう。
こういう、ライブラリを引っ張ってくるときは先のような方法ではなく

target_link_libraries(Project_name m)

と、すればオーケーです。上記は、math.hをリンクした例です。

その他、詳しく知りたいのであれば、まずはCLionのHelpにあるCMakeのチュートリアルをやってみるのをオススメします。 www.jetbrains.com

おわりに

いかがでしたでしょうか。CLionを始めとしたJetBrainsのIDEはUIが非常に好みで、使いやすいと感じています。
なんといってもIDEを使うメリットは

などとあり、作業の効率化につながると考えています。
今回はLinux版の導入に触れましたが、WindowsMacにも対応していますので、IntelliJを入れるついでに、導入してみてはいかがでしょうか。
ちょっと気になるな……と、思われた皆さんはぜひCLionを使ってみてください。
これからガンガン使っていくぜとなった方は、ここに書いていないような設定のアレコレも、時間の許す限り触ってみて欲しいと思います。
よきコーディングライフを。

明日はid:Kniumさんです。
UEC Advent Calendar 2016の作成者ですね。お楽しみに。


*1:電気通信大学の二学期に開講されるプログラミングに関する基礎知識を学ぶ講義である。今年度より講義内容が一新されたらしい。

*2:余談だが、筆者はnanoをよく用いている。

*3:統合開発環境のこと。

*4:https://www.jetbrains.com/student/

*5:(「・ω・)「ガオー