タクマ松下のブログ

情報科学科の学生が書く記録。フロントエンドとサーバサイド練習中!です!

Clojureをかじった

プログラミングClojure 第2版を軽く読んで見たので感想.
まだ第2/10章までしか読んでいないので、そこまで突っ込んだ感想ではないです.
ちなみにページ数でいうと、50/250なのでそこそこ読んだような気がします.

プログラミングClojure 第2版

プログラミングClojure 第2版

ClojureJVMで動くLispっぽい言語だという認識です.
まず、割と突っ込んだ話から入るので、入門書だと思って読むとサッパリわかりません.
個人的にはLisp系の言語を一通り理解してから読んだ方がいいと感じました.

JavaLisp系使いの人たちは、2章までの段階で以下のような印象を持つかと思われます.

Javaとか -> なにをいっているんだこいつは、でもJavaのモジュールが使えることはわかる.
Lisp系 -> 少し気持ち悪いが、言いたいことはわかる.

僕はLispもかじっていたので、一部を除いてかなり気持ち悪いと思うことがありました.
でもかなりサクサク読めたかと思います.おそらく50ページ読むのにかかった時間は1時間ほどでしょう.
ただ、必要だと思われる部分が正確に書かれているので、この段階でも良書判定が出てます.
2章までなら、アトム、関数、束縛あたりがわかっていれば読めそうなので、Lispのドキュメント読みながらやるのも悪くなさそうです.

いきなり読むと挫折しそうな内容ですが、
Javaが好みではなくてもJavaの恩恵を受けられるというのは、大きなアドバンテージです.
次はソースを書いてまた挙げてみます...

Vortex Coreを買った

Vortex Coreとかいう変態キーボードを買いました.
例によって画像はありませんが,40%キーボードということから何かを察していただきたいです.

概要

40%キーボードなので数字キーがありません.
そんなついでに記号の位置も通常のものと異なります.
レイヤが1+3個あって,3つは自分の好きなようにキーをカスタマイズできます.(一部不可)

MicroUSB.DSA PBTキーキャップ.47キー.

所感

はじめてクリア軸のキーボードを買いました.
黒軸と同じ60gの重さでクリック感があるやつです.

Redditでクリア軸は赤軸茶軸よりうるさくないとか聞いて買ったんですが,
本当にこっちのほうが静かです.
ただしキーの重さは60gなので指が疲れます.
色々探していただくとわかるんですがこれキーが押されたと検知するまでの重みがかなり必要です.
この文章をここまで書くうちに腱鞘炎になりかけています.

数字は結構打ちやすいです.
キーの組み合わせで打つんですが,ホームポジションからほとんど動かさなくていいので結構ミスがない?
ただし,記号は3つ同時押しが基本+場所を覚えるのが辛い...

高級感はまぁまぁある.
底面とサイドはアルミ.きれい.

補足

Vortex Core公式のファームウェアよりアーキサイトのHPのファームウェアのほうが新しいので注意.
ホームポジションのFとJは他のキーより若干凹みが深い.ただしよくある棒とかはキーに付いてない.

東プレスイッチのキーボード、LEOPLD FC660Cを買った

まだ写真を撮っていないので文章だけになりますが、
適当に二週間ほど使用した感想を書き連ねておきます。

f:id:t-matsushita:20170804013308j:plain
www.archisite.co.jp

韓国で設計したものを東プレが製造しているようです。
国内ではアーキサイト様が販売しています。

特徴

  • 普通のUS配列
  • コンパクトなのにカーソルとInsertとDeleteキーがついてる
  • 東プレスイッチ
  • やっぱりコンパクト

スイッチ

スイッチは東プレの静電容量無接点方式を採用しています。
打鍵感はHHKBとあまり変わらないでしょう。
Pro2と比較しましたが、こちらのほうが全体的に少し音が高いような気がします。
CtrlやAltなどアルファベット以外のキーの音はこちらのほうが少し低めで耳に優しいと思います。
スペースキーはこちらのほうが明らかに静かです。
東プレスイッチ特有のスコスコ感はHHKBのほうがいい感じです。

キー配置

純粋なUS配列です。
HHKBと大きく違うのは独自配列を採用していない点、
カーソルキーとInsert、Deleteキーが付いていることですね。
僕はUSキーボード原理主義者なのでBackSpaceの位置が右上にちゃんといるのは大きいです。
もっとも僕はEmacsでしか大抵作業しないのでCtrl-HでBackSpaceですが...

カーソルキーはなくてもいいんですが、Macで作業しているとMicrosoft製品でCtrl-Aとかが効かないときに便利です。
他にもキーバインドが効かないときにサッと押せるのはいい感じです。

接続

キーボード側がMicroUSBでPC側はUSBです。
普通ですね。

裏側

写真がなくて申し訳ないんですが、ゴム足が四か所についてます。
HHKBは下側のみなのでここはいい感じです。
チルトスタンドもあって、スタンドの足にもゴムがついてます。
安定してます。

このキーボードを選択する意味

カーソルキーがついているというよりも
純粋なUS配列でコンパクトな部分が強いと思います。

当然リアルフォースよりは小さいです。
テンキ―やファンクションキーがいらない人にはいいですね。(ファンクションも組み合わせで表現できます。)

HHKBよりはカーソルキーの分だけ少し大きいですが、配列がUSで素直です。

総評

東プレスイッチでUS配列、コンパクトなのが良い人はこれしかないです。
コンパクトがいいのにカーソルキーが無いとつらいって人もこれです。
そして色がかっこいい!
ちょっと高いのがネックですが僕は気に入りました。

僕の移動時の装備

基本的に大学、バイト、家の間しか移動しないんですが、最近の装備です。
記録です。

とりあえずリュック

f:id:t-matsushita:20170624002920j:plain

自転車に乗ることもあるのでこんな感じのやつです。
フランス語を勉強していたときにフランスの文化に感化されて買ったリュックです。
「cote et ciel」というフランスの会社がデザインしています。
3年使っていますが壊れる気配もないですし、旅行の時にも大量に物が入る神リュックです。

とその中身。

f:id:t-matsushita:20170624002926j:plain

なんか他のエンジニアも持ってそうなものばっかりですね。
内容物です。

Macbookは定番ですね。先ほどのリュックの背中部分にPCが入る部分があるのでそこに入ってます。
財布、定期入れは必須アイテム…
ペンタブはそんなに入れませんが、外でデザインするときに持ってます。

f:id:t-matsushita:20170624002929j:plain

iPod touchDACです。
移動時にはiPod touchと普通のイヤホン。
ちょっと音質よくして外部の音を遮断したいときにはDACを繋げて4極のイヤホンに変えてます。

タバコも入ってます。zippoとオイルが切れたときに備えてガスライターを入れてます。

あとはこれにノートと本が加わる時があります。
充電する時間が取れずに、電車で時間つぶしするときに使います。

小言

iPhoneで撮ってみたんですが、写真の拡張子が.heicになっていて驚きました。
どうやらiOS11から搭載される写真のフォーマットらしいです。
iOS11 betaにしていたのでビックリしました…

SwiftのライブラリMoyaを使った

iOSのネットワーク周りのライブラリといったらAlamofireですよね.
ただAlamofireは十分に抽象化されていないのでラッパーを採用したくなります.
抽象化されたものとしてAPIKitなどもありますがどうも痒いところに手が届かなかった印象です.
自分で書いてもいいんですが大変...

というわけでAlamofireのラッパーかつRxとかにも対応しているMoyaを使ってみました.
僕はRx使わないんですけどね.

github.com

引数なしのメソッドを一つ実装してみる

とりあえず簡単なのを実装してみます.

1. enumAPIを叩くときのメソッドを宣言

ここにメソッドを突っ込みます.

enum HogeAPI {
    case getNewPhoto()
}

2. extensionでメソッドに対するAPIの挙動を列挙

extension HogeAPI: TargetType {
    var baseURL: URL { return URL(string: "https://api.hogehgoegehogegeohgeh.com")! }
    var path: String {
        switch self {
        case .getNewPhoto():
            return "/photos"
        }
    }
    var method: Moya.Method {
        switch self {
        case .getNewPhoto:
            return .get
        }
    }
    var parameters: [String: Any]? {
        switch self {
        case .getNewPhoto:
            return ["client_id": "himitsu"]
        }
    }
    var parameterEncoding: ParameterEncoding {
        switch self {
        case .getNewPhoto:
            return URLEncoding.default
        }
    }
    var sampleData: Data {
        switch self {
        case .getNewPhoto:
            return "mendoikarayouisitenai".data(using: .utf8)!
        }
    }
    var task: Task {
        switch self {
        case .getNewPhoto:
            return .request
        }
    }
}

3. プロバイダとかいうのを宣言してリクエスト投げる

let provider = MoyaProvider<HogeAPI>()
        provider.request(.getNewPhoto()) { result in

あとはAlamofireの要領でなんとかしたら終わりです.

感想

ほぼサンプル通りでしたが,いい感じに抽象化されてていいんじゃないでしょうか.
この後はObjectMapperでJSONをパースしてCollectionViewに突っ込みます.予定です.

emacsとかシェルでカレントディレクトリをクリップボードにコピーする

探すのが面倒だったので書きました.
ほぼ参考先そのままです!

(defun copy-current-dir ()
  (interactive)
  (let ((process-connection-type nil))
    (let ((proc (start-process "pbcopy" "*Messages*" "pbcopy")))
      (process-send-string proc default-directory)
      (process-send-eof proc))))

説明

default-directoryにカレントディレクトリのパスが入っています.
この変数はEmacs側で宣言済みぽいのでそのまま使えます.
start-processでpbcopyコマンドのprocessが走って,
そのprocessにdefault-directoryをそのまま流してやります.
(よくわからないけどこんな感じだと思います.)

補足

pbcopyコマンドはmacOSのコマンドです.
他のlinux系OSでは動きませんので注意.

ちなみにbash上でカレントディレクトリのコピーをしたいときにはこんな感じ.

$ pwd | pbcopy

パイプしているだけなので

$ cat hoge.txt | pbcopy

もできる!

将来の野望

僕の小さな野望です。

 

背景

僕はプログラミングがそこそこ好きですが、家から出られません。

理由はディスプレイの数です。

あとは居心地。

 

喫茶店で作業…とかはあまり好きではありません。

他人にディスプレイを見られたくないので。

 

そんな僕の野望です。

 

プログラマ向けカフェ

見出しの通りです。

ちなみに僕は某有名喫茶店チェーンのアルバイトをしてます。

 

内容としては以下の通りです。

 

  • 自由に使えるディスプレイ設置
  • ディスカッションスペース(小規模)
  • 他の技術者と話せるエリア
  • 喫煙席
  • バーっぽいカウンターエリア
  • 会員向け個室っぽい空間
  • ガチなコーヒー
  • デスマーチを助けられるスタッフ

 

ディスカッションスペースが小規模にしたいのは、より深く話し合えるようにするため、ワイワイしてほしくないとの理由からです。

 

禁煙じゃねーのかよ!って人もいますよね。

でも技術者は喫煙者が多いです…

喫煙所でしか話せないこととかもありますよね。

 

考察

エリアが広くなりそうです。

お金が足りるかどうか…

あとはスペースの組み合わせ問題。

 

実現するのは何年先かわかりません。

しないかもしれません。

そんな時にはもう家から出る必要とかディスプレイ問題も解決されてるんですかね…

 

小さな野望でした。