vortispy's diary

労働者です

病院に行った

数年ぶりにひどい風邪になった。3日ほど自力で頑張ったが、喉だけはどうしてもすぐに治りそうもなかったので数年ぶりに病院に行った。
ググって歩いていけそうな病院に行った。ちょっと古い建物の病院で見たところ私より若い患者はいなかった。時間帯もあるかもしれない。
内科以外の診療科もあり、私以外は皆そちらにかかるようだった。
30分ほど待って診察を受けた。症状を聞かれて、喉を診られて、あとは薬の説明をされた。合わせて5分位だった。特に珍しい病気でもなさそうなのでそんなもんだろう。
診察料は1100円だった。3割負担でこの金額だ。やはり貧乏人は病院に行ってはいけない。
薬は7種類も処方されており、うがい薬も入れてもらって940円だった。喉の薬だけにしてもらえばよかった。
帰り道で「やはり医大くらい出ておくべきだったな」と後悔した。なんせ知識がないので自分の症状がどういうものかわからないし、薬も処方できない。しかも数分で4000円程度の売上を出せるわけで、なんだか儲かりそうだ。プログラム書いてる場合じゃないと思った。
薬を飲んで翌日になるとたしかに喉の症状は改善した。ただ薬を飲む以外にもベースを弾いて、仁義なき戦いを見たりしたので薬だけの効果かはわからない。

朝寝がしたい

再び労働者となって4ヶ月ほど経った。今回はなんと週に5日、一日八時間も労働をしている。
毎日労働するのはつらい。内容に関係なくただ労働するのが辛い。起きる予定を立てて眠るのは辛い。
電車で運ばれていると同じような労働者を目にする。大抵は私より年上でおそらく何年も労働を続けている。そんな人を見ていると自分とはまるで違う生き物を見ている気分になる。続けていれば慣れるものなのか。とてもそうは思えない。
確か東京に引っ越すことを決めたのは金のためだったはずだが、月に17万円程度ではとてもその目的を達成できたとはいえない。ただただ、時間が過ぎていくのを感じている。なぜ金が必要だったのかはもうわからなくなった。
金のことばかり考えている。数ヶ月は生きていけるだけの金はあるのでいつでも仕事はやめられる。しかし、それが長く続かないこともわかっている。だからその先に行くための金のことを考えている。なにか具体的な手段があるわけではない。「足りない」ことを確認しているだけだ。
労働に適応できないことがはっきりとわかった。早ければ冬が来る前にやめる。遅くとも春が来る前だ。

「3D ドットで遊ぼう! ~はじめてのモデリング編~」の感想的な

3Dドットで遊ぼう!〜はじめてのモデリング編〜 - 味噌煮研究所公式ショップ - BOOTH(同人誌通販・ダウンロード)
技術書典2でなんとなく目に入ったので買ってみた。ダウンロード版が上のリンク先から買えるっぽい。
MagicVoxelというソフトで3Dドットのモデルを作るという話。最低限の機能を説明して簡単なモデルを作ったりする。チュートリアルにはいい感じ。
3Dモデリングにそれほど興味があったわけではないけれど、ちょっとおもしろそうだったのでさらっと読んでやってみた。
f:id:vortispy:20170411210419p:plain
題材はキラキラ☆プリキュアアラモードのキュアホイップ。
Curewhip by vortispy - 3D model - Sketchfab
キラキラ☆プリキュアアラモード│キャラクター│キュアホイップ|朝日放送
髪の毛多すぎてつらかった。あんまり似てない気もするし、キュアハッピーと言われたらそんな風に見える。
これで2時間半くらい。形を作ってる最中は不安しかなかったけど、色を付けるといい感じになってきて楽しい。
MagicVoxelは無料で使えるけどソースコードは非公開のようだ。
似たようなのでgoxelというのがあった。こっちはGPLv3。
GitHub - guillaumechereau/goxel: Goxel: Free and Open Source 3D Voxel Editor
楽しめたので買ってよかった。

"Writing An Interpreter In Go"を読んだ

Writing An Interpreter In Go | Thorsten Ball
細かいことはよくわからんがとにかくインタプリタを作れる。
実際そういう内容である。字句解析、構文解析、評価、全部自分で実装する。一番わかりやすそうなやり方でやる。効率がどうのだとかめんどくさいことは気にしない。目的はインタプリタを作ることなんだからそれで良いのだ。だからといってソースが雑ってこともない。楽しい。
文章は英語だけど気にしないで良い。重要なことは全部ソースコード見ればわかるわかる。テストも書くし動けばオッケー。
そんなにGo言語詳しい必要もない。"A tour of Go"のBasicsとMethods and interfacesまでの内容がわかれば十分だ。Goroutineなんかは出てこない。
A Tour of Go
3章に入ると自作インタプリタが動き出してたまらん。なんか「うおー」ってなる。プログラミングはじめたときの気持ちをちょっと思い出す。これだよこれ。
色んな機能が足りてないのはわかる。ガベージコレクションは完全にGo言語に依存してるし、最適化なんて考えてない。それでもこの本が良いのは自分で「作れる」ということだ。なにか機能が欲しいなら自分で作れる。そういう気持ちになれるのが重要な気がする。
「知識は無いけどコンパイラつくってみたい」人にはおすすめだ。なにもわからないままでいるよりはちょっとだけでも理解できたほうがいい。なによりやっぱり楽しい。


ニートから低賃金労働者に

労働者となって3ヶ月が過ぎた。
3ヶ月前は出勤日の朝から少しの腹痛と吐き気があったが、今では制服に着替えるときに死にたくなる程度になった。悲しいことに労働に慣れてしまった。加えて、低賃金労働者であり続けるよりはもう少し収入の良い労働者になろう、という考えるようになった。前提として労働者であることを受け入れてしまった。
内容が辛いわけではない。蟹工船から程遠い、ただそこに存在することに賃金が発生する職だ。いわゆる「誰にでもできる仕事」である。それでもわずかな金銭のために首に縄をつけられ、自由を奪われるのはこの上なく悲しい。
週1日しか休みがない期間もしばらくあった。こうなると休日はさらに働かせるためのものであって、決して私のためにあるものではない。全ては雇用者の都合である。
出勤時に駅で電車を待っていると快速列車が目の前を通過する。幸いにも反対側の線路なので恨めしく眺めるだけである。この瞬間は少しだけ楽しい。
夜眠るときが悲しい。明日が来てしまう。明日を楽しみに生きていきたいわけではない、ただ安心して眠りたい。

労働に膝を屈することとなった

資本主義に敗北し、労働に従事することとなった。
最後に労働者だったのは2014年4月までであるから、無職期間は2年間にわたる。したがって、私は労働と2年間戦ったわけである。
今回は確かに私の負けである。だが、まだ1敗である。私と労働との闘争はどちらかが消滅するまで何度でも行われる。当然ながら私はまだ生きているし、戦いをやめるつもりは毛頭ない。
敗因は明確である。私の怠惰だ。2年の間に何かしら生活の糧、すなわち収入源を得ていれば結果は違っていたはずだ。「収入を得るための行動は労働ではないか?」という疑問はある。しかしながら、それは大事の前の小事であって、後の勝利を得るための意図的な敗北である。
原因があるなら対策を講じるだけである。それは簡単では無いがこのまま膝をついたまま生きるつもりはない。次は勝つ。

iOSアプリを作った覚え書き

Androidで作ったやつの移植
Androidアプリをつくった覚書 - vortispy's diary

StoryBoardで画面をつくる

ボタンのイベントで関数を動かすときは@IBAction
ラベルと変数を関連づけるのは@IBOutlet
をつかう。
そうするとStoryBoardのConnection inspectorに表示される。表示された関数か変数をマウスでドラッグして画面上の要素につなげると関連付けできる。

CocoaPodsでライブラリを管理

Podfileに必要なライブラリとバージョンを書けばインストールやアップデートを楽にできる

tableview

tableViewが表示されるとき最初に呼ばれるのはviewDidLoad。ここに初期化処理を書く。これは再度表示するときには実行されない。
それぞれのセルが表示されるときにtableView関数が呼ばれる。このなかで要素の初期化を行う。

アルバムから画像を取得する

imagePickerをつかう。UIImagePickerControllerDelegate, UINavigationControllerDelegateの継承が必要。

func addImage(){
        let imagePicker = UIImagePickerController()
        imagePicker.delegate = self
        imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
        presentViewController(imagePicker, animated: true, completion: nil)
}
    
func imagePickerController(picker: UIImagePickerController!, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]!) {
        //画像が選択されたときにする処理
        //処理終わり

        //この関数を呼ばないと画像選択画面からもどれない
        dismissViewControllerAnimated(true, completion: nil)
}
オプショナル

変数の型を宣言するときに"?"や"!"をつけることでその変数にnilが入る可能性を示す。

var foo: String? = "foo"// nilが入る可能性がある
var bar: String! = "bar"// 必ずどこかで初期化される
print(foo!)// 「nilではない」ことを"!"で示す必要がある
print(bar)// 宣言時に「どこかで初期化される」ことにしたので"!"が必要ない