10年以上ぶりに引っ越しをした

4月末に10年以上ぶりぐらいに引っ越した(賃貸→賃貸)のでそのまとめ

引っ越しした理由

今まで1Kだったが、単純に物が増えてきて手狭になったことと、リモートワークになって生活と仕事がより身近になって仕事場の横にベッドがある状態であんまり休まらなかったことの2つがある。物が増えてきたのはもう何年も前から少し物件を探していたけど、リモートワークになったことが決め手になった

どうやって探したの?

SUUMO https://suumo.jp/をつかった。ISUCON 10 でSUUMOを題材にした問題が出たことがあって記憶に残っていた。

やったこと

インターネット!インターネット!インターネット!!

今まで共有回線で下りが30Mbpsぐらい出ていたので最低でもそれぐらいは欲しいと考えて、SUUMOで「高速ネット」を検索条件にして入れてたけど、だいたい出てくるのは無料インターネット(ただし遅い)みたいな物件ばかりだった。なので、不動産屋さんには「個別回線引けますか?」とずっと聞き続けていた。

個別回線引いていいよーという聞けたときは「勝った」というお気持ちになってた。引っ越し当日に業者さんが「うーん、これ難しいかも…」と言ってたときは本当にどうしようか焦って開通したときには拍手してしまった

f:id:hs_hachi:20210808152513p:plain
10倍だぞ!10倍!

気持ちを切り替えられるスペースをつくる

これは今の心身の状態によるのだけど、昔みたいにずっと働くことは無理で休みをとることが必要な状態になっている。なので、寝室と仕事をする場所を分けてスイッチを切り替えれるようにした。また、リビングが広いのでテニスの素振りをすることもできる。

いつも行く場所から近いところにする

2週に1回カイロプラティックと毎週テニスに行ってるのでそこからあまり遠くないところを選んだ。基本出不精なのでちゃんと行き続けるためにはこういうところから。

わかったこと

洗濯乾燥機のサイズを見くびってはいけない

洗濯乾燥機の横幅とかは測ってたので大丈夫だったけど、扉を開いた時の奥行きを測ってなかった。まぁ大丈夫やろーと思ってたら案の定厳しくてギリギリ入るサイズになってしまった。不満と言ったらそれぐらいであとは特に不満らしい不満はない

新しく導入したもの

デロンギ

仕事場でコーヒーを飲むことが多かったのでついに導入。音は大きく、大分場所はとるもののコンビニでコーヒー買うよりもコスパはきっといい。デロンギを置く台はニトリで購入。

www.nitori-net.jp

Fire Stick

これはいただきものなのだけど非常によかった。Amazon Prime Videoの他にもWowowのオンライン配信がテレビで見えるのは非常に良い体験。これでテニスのWowowオンデマンド配信を見てる。

Committee + Open APIでYAMLファイルを分割する 2021年夏版の続き

続きがあった。

openapi: 3.0.3
info:
  title: Title
  description: Title
  version: 1.0.1
servers:
  - url: 'http://localhost'
paths:
  /api/token/{id}:
    $ref: './token.yaml#/paths/~1api~1token~1{id}'

このように/api/token/{id} という風に{} を入れると URI::InvalidURIError: bad URI(is not URI?): "./token.yaml#/paths/~1api~1token~1{id}" が発生する。 これは{%7b}%7dという形でエスケープする必要がある

Committee + Open APIでYAMLファイルを分割する 2021年夏版

やりたいこと

OpenAPIでAPIを定義したいが、ファイルを分割して管理したい

バージョン

  • Committee 4.0.0(committee-rail 0.5.1)
  • Open API 3.0.3

最初にやったこと&課題

Open APIの仕様に則ってAPIを(ここではopenapi.yamlとした)を定義した

openapi: 3.0.3
info:
  title: Title
  description: Title
  version: 1.0.1
servers:
  - url: 'http://localhost'
paths:
  /api/token:
    get:
      description: get access token
      responses:
        200:
          description: success
          content:
            application/json:
              schema:
                type: object
                required:
                  - token
                example: { token: 'access token' }
                properties:
                  token:
                    type: string

RailsのRequestSpecはこんな感じ

require 'rails_helper'

RSpec.describe 'Api::Token', type: :request do
  include Committee::Rails::Test::Methods

  it 'GET /token' do
    get api_token_path

    expect(response).to have_http_status 200
    assert_response_schema_confirm 200
  end
end

かんたんな文字列を返すAPIを定義した。ただこれだとみんなで触るときにコンフリクトとかが頻発するのでわけたい。

ファイルを分割する

$ref というのがOpenAPIに定義されているので、それが使えそう。$ref の使い方のドキュメントを読むとpaths直下には入れられないので、get以降を切り出す。

openapi.yaml

openapi: 3.0.3
info:
  title: Title
  description: Title
  version: 1.0.1
servers:
  - url: 'http://localhost'
paths:
  /api/token:
    $ref: 'token.yaml'

token.yaml

get:
  description: get access token
  responses:
    200:
      description: success
      content:
        application/json:
          schema:
            type: object
            required:
              - token
            example: { token: 'access token' }
            properties:
              token:
                type: string

これでテストを実行すると以下のようなエラーが出て怒られる。redoc からHTMLを生成するときちんと生成されるのが余計にわからん...

NoMethodError: undefined method `set_path_item_to_operation' for #

  0) Api::Token GET /token
     Failure/Error: assert_response_schema_confirm 200

     NoMethodError:
       undefined method `set_path_item_to_operation' for #

エラーを読んでみる

set_path_item_to_operation for # なので、path itemが足りない?となってドキュメント読んだりしてた。

結論

pathsとURLを分割先のファイルに記載して書けばよかった。ドキュメントや探してみてもCommitteeのIssuesを見ても特にチケット上がってなかったのでよくわからんが動いた

openapi.yaml

openapi: 3.0.3
info:
  title: Title
  description: Title
  version: 1.0.1
servers:
  - url: 'http://localhost'
paths:
  /api/token:
    # ~1は`/` のエスケープ
    $ref: './token.yaml#/paths/~1api~1token'

token.yaml

paths:
  /api/token:
    get:
      description: get access token
      responses:
        200:
          description: success
          content:
            application/json:
              schema:
                type: object
                required:
                  - token
                example: { token: 'access token' }
                properties:
                  token:
                    type: string

Intellij IDEAで効率よくdirenvを使う

環境変数.envrc ファイルに書いて読み込ませるdirenvがあるがこれをサポートするIntellij IDEA系のプラグインがほとんどないのでうまいやり方を考える。Direnv Integration はあるが.envrcファイルを新規作成したときしかうまく動いてないぽいのでちょっと様子見。

github.com

Railsプロジェクトでやったが、Javaでも使えると思う。

手順

  1. .envrc ファイルを作成する。この時点で テスト用 の設定ファイルを書いておく。例えば export foo=test と書く。
  2. ターミナルを開いて idea コマンドで起動する。この時点でIDE には環境変数 foo=test が読み込まれている。
  3. テストでは複数のRun Configurationを使いたいが都度書き換えるのがめんどくさいので、IDEからテストを起動するときはIDEに上述の設定をそのまま使う。
  4. IDEからrailsを起動するときはRun Configurationの Environment Valuesで foo=test を上書きして起動させる

新規に設定するときはIDEを起動し直さないといけない&Toolboxから起動できないのがネック。

リモートワークの達人 を読んだ

社内でそーだいさんが薦めていたので読んでみようと思い秒速でポチった。

コロナ禍で本格的にリモートワークをやるようになって約1年。自分がやっていること、できていないことを振り返れる機会になった。

 

元来自分は働きすぎの気配があるので強引に定時近くになったら強制的に切りのいいところで止めるようにしている。以前はズルズルと仕事をしていたのだけど、どんなに遅くとも19時には終わってご飯食べてニュース見てゆっくりするようにしている。通勤時間がないのでこのニュース見る時間で仕事とプライベートのON/OFFをしている。

あとは、出社している時とリモートワークでも同じ服装をしている。もともとスーツではないので私服でいいのだが、社員証のネックストラップが首にすれるのが嫌なので襟付きのシャツを来ているのを継続している。それをクリーニングに毎週出している。服もパリッとしているので気持ちがいい。

また、自宅に仕事の快適さを導入した。椅子買ったり、ディスプレイ買ったり。

 

無駄な承認や手続きを根絶しようという項目があって、そういえばなんでこれ承認手続きがいるんだっけ?というのを思い出した。例えば本番サーバにSession Managerで繋ぐときになんで承認手続きがいるんだっけ?というのを思い出した。当時は良かったのかもしれないけど、環境が変わったりしているので、徐々に変えていければなーとは思っている。定期的に棚卸しができる会を作ってみても面白そう。

 

また、モチベーションが上がらない時は仕事に問題があるというのはそういう考え方があるのか。と感じた。自分は結構自分の中に課題があると感じるタイプなんだけど、自分と仕事の接点を考えた方が良さそうだなーと。確かにマネジャーとして他人のモチベが上がらないときに改善するときはコントロールしやすい仕事側のことが多い気がするので、それを自分に当てはめれば良いということがすっぽり抜けていた。いつから自分のことをコントロールしやすいなんていつから思っていたんだろう。この辺はちゃんと客観的に物事を見切れていないんだろうなーと思う。

 

 

 

 

2020買ったものまとめ

今年を振り返りつつ買ったものをまとめる。やはりコロナの影響で家で仕事をするようになってからだいぶそこにお金をつぎ込んだ。

仕事では首に社員証が擦れるのが嫌だったのでいつも襟付きのシャツを来ていたがそれを継続。仕事と普段着の違いが出るようにして気持ちを入れ替えていたというのと、洗濯するのが面倒なので襟付きのシャツだとクリーニングに出してもあまり値段がかからないというところを重視。

ビール

今年はオンライン飲みがあったりしたのも含めて、@tdakak さんに色々ビールをおすすめしてもらった。多分一番飲んだのはヒューガルデンホワイトと伊勢角屋麦酒のヒメホワイトじゃないかなと思う。ヒューガルデンは近所のスーパーで売ってるのですぐ手に入るところがポイント高い。

ヒメホワイト | クラフトビール・地ビールの通販 伊勢角屋麦酒

TANGERINEのみかん

もともとみかんが好きなので近所のスーパーで買って食べてたのだけどBSニュースで知って購入。ダンボールの中に40〜50個ぐらい入っているので一人でも食べれるレベルなのがいい。

tangerines.stores.jp

nosh

もともとBase Breadを食べていたのだけど味が単調になっているなと感じたのと、温かいものを食べたかったのでこちらに切り替えた。味は個人で合う、合わないがあるのでヘルシーなものを探している人はいいかも

nosh.jp

机の広さだけちょっと不満だけど、会社の自席よりも良い環境と整えられたと思っている。

部屋が1Kなのであまり大きなものが置けないため、幅100cmぐらいの机を購入。ちょっと手狭だけどこれ以上大きくなると今度は入らなくなるのでこの辺は妥協。

www.low-ya.com

椅子

もともと、普通の椅子にアーユルチェアーをつけて座っていたのだけど、「座らせない」をコンセプトにしている椅子だったので、仕事上ずっと座っているため相性が悪くなってきたので一念発起してオカムラのバロンチェアを購入。バロンチェアが一番納期が短かったのが最終的な決め手だったが、家に入るか少しヒヤヒヤしていた。会社ではコンテッサを使っていたときもあったけどまぁ大して座り心地はかわらない。

item.rakuten.co.jp

ディスプレイ&Webカメラ

会社みたいにミーティングルームと自分の机を往復することがなくなり、ずっとディスプレイ前にいるからと思ってちょっといいものを購入。27inchで最初は机のサイズに比べて大きいと感じたものの今では慣れてしまった。個人所有のMacと会社のMacを交互につなげ直しながら使っている。ちなみにキーボードはRealForce for MacをディスプレイのUSBに挿して使っている。

スペースの都合上、クラムシェルモードでPCを使っているのでWebカメラも買った。マイク機能は使ってないけどミーティングに十分耐えられるクオリティを出してくれている。

イヤホンはAirPods Proのまま

一応SonyのWF-1000XM3とBoseBose QuietComfort® Earbudsは買ったのだけど、WF-1000XM3は新宿駅近辺でブツブツ切れるのと、iPhoneMacとの相性がやっぱりよいので、AirPods Proを継続して使っている。もともと使っていたBoseのQC20をそのまま使っても良かったのだけど机の上がゴチャゴチャするので断念。

www.sony.jp

www.bose.co.jp

以上、買ったものでした。来年も経済回していくぞ!!

Agile Tech EXPO に参加した

agiletechexpo.connpass.com

色々なことが変わっていく中で、高速に試してカイゼンしていくことが必要となっている時代で、開発だけのアジャイルではなく、ビジネスとしてのアジャイルが必要になってきてる時代に何ができるだろうか?ということを考えた。

「ソフトウェア開発は文化」という川口さん。文化に根づかせるということはどうしたらいいんだろう?自分の会社でソフトウェア開発は根付いているのか?と感じた。そもそもソフトウェア開発ってなんだろうか?

また、「場」の大切さも改めて感じた。1対1のコミュニケーションではなく、一人ひとりの行動が場の影響を受ける。よって、どのような場を作るかが非常に大切である。また、一人ひとりの行動が場を変えていけるんだなと思った。