頭の中身をアウトプットしていく

筆記開示目的でもあり、自分がどういうことを考えているか?どんな人間なのか?を知ってもらうために記事を書き連ねていこうと思う。 おそらく技術的な記事はあまり書かないと思う。技術的なことは好きだが整理したり、調べなおしたり、アウトプットに時間がかかる。 一方で考えていることをアウトプットするのは、あまり時間がかからない。短文でもいい。良いと思ったこと、日々感じたこと、頭の中を駆け巡ったことを、なるべく書いていこうと思う。

継続>>>分量、質

コンテキストマネージャーとwith文 Pythonトリックより

with文

Pythonに限らずファイルをオープンしたらクローズしないといけない。

with文がなかったころは、こう書いていた。

f = open('hello.txt', 'w')
try:
    f.write('hello, world')
finally:
    f.cloe()

with分を使うとこう書ける。

with open('hello.txt', 'w') as f:
    f.write('hello, world')

enterexit

自作したクラスでもwith文に沿ってopen->closeができる。それがコンテキストマネージャー

以下のようにクラスに__enter____exit__を実装してあげればよいとのこと。

3. Data model — Python 3.8.2 documentation

class ManagedFile:
    def __init__(self, name):
        self.name = name
    
    def __enter__(self):
        self.file = open(self.name, 'w')

    def __exit__(self, exc_type, exc_val, exc_tb):
        if self.file:
            self.file.close()

コンテキストマネージャー

クラスだけではなくcontextmanagerデコレータを使用することで、関数に対してwith文を適用できる。

from contextlib import contextmanager

@contextmanager
def managed_file(name):
    try:
        f = open(name, 'w')
        yield f
    finally:
        f.close()

with managed_file('hello.txt') as f:
    f.write('hello, world!')
    f.write('bye now')

大昔ですがJavaもtry-catchのtryでcloseできるようになりましたよね。 一瞬で実行し終えるスクリプトならcloseが漏れても、プロセスが終了するので問題ないが バッチ処理とか長時間処理する場合は、クローズ漏れはリソースを逼迫します。 コンテキストマネージャとwith文積極利用していきましょう。

Pythonのdataclass

補完を利用したい。タイポで苦しみたくないから辞書型の使用は極力さけてClassを書くようにしていたのですが、dataclassという機能をしりました。 Pythonなどオブジェクト指向言語だと、ちょっとした構造体を用意するにもClassをつくってコンストラクタを作ってと面倒なのですが、そのあたりをショートカットできるデコレータのようですね。 Python3.7以降なのであたらしいプロジェクトじゃないとだめだけども積極的に使っていこう。

docs.python.org

在宅リモートワークで集中力アップにつながったこと

人生初のリモートワークでして、やり方について試行錯誤している最中です。

モニタの数を上下2枚にする

  • モニタの数=効率だと思っていましたが逆
  • 左右にモニタを並べると首を振らなければならず、首を降るだときに集中力が途切れる
  • またモニタ多数囲まれるとバックライトが眩しくて集中力がおちます。
  • 足りない分は仮想ワークスペースやMissonControlをつかって画面切り替えましょう。

Youtubeで常時、顔出し配信

  • 「監視されているわけではないが、人に見られているとような感覚」で出勤している感覚をだす。
  • 自由に私生活行動ができてしまうと気持ちが緩んでしまい集中が途切れるけれど、配信していると私生活行動防止になる。
  • ほどよい緊張感になるのでおすすめしたい。

2018年に読んだ本

年末にまとめるつもりが新年でした。 いっぱい読んだなー。この一覧以外にも積読がたくさんある。 まったくお金がたまらない。

読み切った本

PythonとKerasによるディープラーニング

PythonとKerasによるディープラーニング

PythonとKerasによるディープラーニング

今年一番影響を受けた本。ディープラーニングの細かいところをここまで丁寧に説明している本はなかなかないと思う。非常に実践的な本

エンジニアの知的生産術

経験則でやっていた・心がけていたことをすべて文字で説明されていた。もっと効率的にやれそうなことにも気付かされたすごい本。うまく説明できないけどすごい。曖昧にやっていたことを文字にしたことがとにかく凄い。

AWSによるサーバーレスアーキテクチャ

AWSによるサーバーレスアーキテクチャ

AWSによるサーバーレスアーキテクチャ

最近のAWSの使い方を教えてくれた本。実務と完璧にマッチしたためAWSに対する意識がおおきくかわった。

Clean Architecture

Clean Architecture 達人に学ぶソフトウェアの構造と設計 (アスキードワンゴ)

Clean Architecture 達人に学ぶソフトウェアの構造と設計 (アスキードワンゴ)

オブジェクト指向、関数型などパラダイムを説明する下りがとくに気に入った。「我々はなにをしたら良いかは分からないけど、何をしてはいけないかはわかる」という言葉は最高。後半は細かすぎてすぎてついていけなかった。

基礎から学ぶVue.js

基礎から学ぶ Vue.js

基礎から学ぶ Vue.js

まったく興味がなかったけどVueをやることになったので読んだ。SPAはロジックでWebページを作っていくのでロジック書きたいマンにはVueは楽しい。HTMLとCSSがわからんので最低限のことはできるようになりたい。

Linuxのしくみ

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

2018年にOS(Linux)の仕組みを簡単に説明してくれた貴重な本。ただ誤植が多く、図がわかりにくいのが難点…。2版、3版で修正されていたら書い直したい。

Docker/Kurbenetes実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

単なるDocker入門書ではなく、正しいDockerの使い方を説明した良書。最近Dockerに触れていないのでそのうち読み直したい。

スターティングGo言語

スターティングGo言語 (CodeZine BOOKS)

スターティングGo言語 (CodeZine BOOKS)

単なる入門書だろう…と高をくくっていたけど、かなり細かいところまで説明している本だった。他の言語を長年やっていてGoを始めようとしている人にはピッタリだと思う。

JavaScript関数型プログラミング

実務でTypeScript/JavaScriptを書くために読んだ本。なるほどーで終わっている

TypeScript実践マスター

TypeScript実践マスター

TypeScript実践マスター

実務でTypeScript/JavaScriptを書くために読んだ本。

読み切ったけどピンとこなかった本

UNIXという考え方

UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学

古典。UNIX全盛期に書かれたものなのでオラオラ感がすごい。いいことがたくさん書いてあるのだけれど、宗教色がつよいのでお腹いっぱい。

SQLアンチパターン

SQLアンチパターン

SQLアンチパターン

理論から学ぶデータベース実践入門

SQL実践入門

SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)

SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)

検索エンジンをメインで触れていたのでSQL疎くて再勉強した。ORMをばりばり使うことになったので、あまりピンとこなかった。

つまみ食い or 途中まで読んだ本

実践Vim

超良書だけど覚えることがおおいのでつまみ食いして終わっている。なんども読みかえすべきほん。今年は本格的なVim入門年でした。Vim力をたかめていきたい

Amazon Web Service 実践入門

Amazon Web Services実践入門 (WEB+DB PRESS plus)

Amazon Web Services実践入門 (WEB+DB PRESS plus)

AWSの全体像を知りたくて買ったけど、内容が古かった。実際触らないとイメージし辛いことが多いので読んでると眠くなる。

AWS Lambda実践ガイド

AWS Lambda実践ガイド

AWS Lambda実践ガイド

Lambdaの使い方をまなぶために読んだけど、途中までよんで公式を理解できるようになったので放置

Elasticsearch実践ガイド

Elasticsearch実践ガイド (impress top gear)

Elasticsearch実践ガイド (impress top gear)

業務でElasticsearchを使うことになったのでかった。スキーマ設定まで知りたかったので途中までよんだ。

Nuxt.jsビギナーズガイド

Nuxt.jsビギナーズガイド―Vue.js ベースのフレームワークによるシングルページアプリケーション開発

Nuxt.jsビギナーズガイド―Vue.js ベースのフレームワークによるシングルページアプリケーション開発

Nuxtの使い方をしるためにかった。途中で止まっている。

体系的に学ぶ安全なWebアプリケーションの作り方

ORMばかりだったので、インジェクション系がもピンとこなかった。また読み直したい。

Goプログラミング実践入門

入門書に読もうとおもったけど、いきなり読む本にしては難易度が高めだった。途中で挫折。

会社で読む本と読まない本

無事に入社して2ヶ月経ちました。

自席も徐々に自分のモノであふれはじめました。 技術書も5,6冊ほど持ち込んだのですが、全く読まない本と定期的に手に取る本があることに気づきました。

先にまとめてしまうと、「手に取らない本 = Google or 公式Docで解決できてしまう本」 でした。

手に取った本

手に取らない本

  • Gitの本
  • Linuxコマンドの本
  • Dockerの解説本
  • AWSの使い方
  • 技術雑誌

まとめ

中級・上級向けの本を持っていきましょう。  

ちなみに手に取らない本が役に立たないというわけではないです。 通勤時間や暇な時間に眺めていると新しい発見があったりします。 仕事中は辞書としての役目を果たすかがとても重要で、仕事上PCの前にずっといるため ネットを上回る情報がないと職場に持ち込もう本としては不適だなと感じました。