Diary of a Perpetual Student

Perpetual Student: A person who remains at university far beyond the normal period

input[type="datetime-local"]の値をPlay Frameworkで受け取るには

結論

  • input[type="datetime-local"] をPlay Frameworkで受け取る時のValidationルールは localDateTime("yyyy-MM-dd'T'HH:mm")

本文

背景と問題

Play Frameworkのチュートリアルとして、スケジュール管理ツールのようなものを作ろうとしていました。予定のタイトルと開始日時・終了日時をDBに蓄積していくようなWebアプリケーションです。

日時の入力を自分で実装するのは大変なので、input[type="datetime-local"] 要素を利用しました。この要素を利用すると、ブラウザが良い感じに日時を選択するUIを表示してくれます。

developer.mozilla.org

この値をPlay Frameworkで受け取ろうとして、以下のようなControllerを作りました。

package controllers

import java.time.LocalDateTime
import 
import javax.inject._
import play.api.i18n._
import play.api.mvc._
import play.api.data.Form
import play.api.data.Forms._

case class CreateScheduleRequest(title: String, startsAt: LocalDateTime, endsAt: LocalDateTime)

@Singleton
class CalendarController @Inject() (mcc: MessagesControllerComponents) extends MessagesAbstractController(mcc) {
  private val form = Form(
    mapping(
      "title" -> nonEmptyText(maxLength = 30),
      "startsAt" -> localDateTime,
      "endsAt" -> localDateTime
    )(CreateScheduleRequest.apply)(CreateScheduleRequest.unapply)
  )


  def postAdd = Action { implicit request =>
    form
      .bindFromRequest()
      .fold(
        error => {
          // エラー表示
        },
        postRequest => {
          // Scheduleの追加処理
        }
      )
  }
}

ところが、input[type="datetime-local"] で日時を選んで送信しても、localDateTimeじゃないよというバリデーションエラーが表示されてしまいます。

この要素を使ってフォームを送信すると、値としては 2018-06-12T19:30 のような形になります。これはJavaでいうと ISO_LOCAL_DATE_TIME と呼ばれるフォーマットになります。

解決法の模索

まず最初に、内部的に LocalDateTime.parse() を呼んでいて、これに失敗しているのではないかと考え、REPLで実験してみました。

scala> java.time.LocalDateTime.parse("2022-04-20T18:21")
val res0: java.time.LocalDateTime = 2022-04-20T18:21

これはうまくいくようです。

次に、localDateTime には nonEmptyText(maxLength = 30) と同じように引数が渡せるのではないかと睨みました。実際、 def localDateTime(pattern) という定義がありました。コメントには

@param pattern the date pattern, as defined in java.time.format.DateTimeFormatter

と書かれています。ならばと以下のように書いてみましたがType Errorになります。

import java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME
...
      "startsAt" -> localDateTime(ISO_LOCAL_DATE_TIME),

なんと、patternはstringのみしか許容しないようです。定数として定義済みのフォーマッタも使えないのかあという気持ちになりました。

解決法

-       "startsAt" -> localDateTime,
+       "startsAt" -> localDateTime("yyyy-MM-dd'T'HH:mm"),
-       "endsAt" -> localDateTime
+       "endsAt" -> localDateTime("yyyy-MM-dd'T'HH:mm")

上記のように文字列でフォーマットを教えてあげることで解決しました。Tという固定の文字列をpatternとしてどう表現するか分からず、地味に苦戦しました。(シングルクォートすれば良いようです。)

感想

WebのフォームからlocalDateTimeを送信する時に、input[type="datetime-local"] を使うのは自然なムーブだと思うので、こちらのフォーマットをデフォルトにして欲しいなと思いました。

202203引っ越しログ 4. IoT機器編

もう5月も終わりそうなのに未だに3月の話をしている。

  1. 家電編
  2. 家具編
  3. PC周辺機器編
  4. IoT機器編 ←本エントリ
  5. 物件編

IoT機器編

持ち込んだもの

Nature Remo Mini

スマートリモコンと呼ばれるものです。赤外線のリモコンで制御できる製品なら、こう行った製品を使うことで簡単にスマート家電化できます。リモコンの代わりにこいつが赤外線信号を発信してくれるんですね。いくつか種類があるのですが、僕は1回目の一人暮らしの頃からずっとNature Remo Miniを使っていました。今は世代が変わったものが販売されているそうです。

昔はこのRemoを使って、エアコンとシーリングライトを制御していました。ただ、シーリングライトの制御には不満がありました。

Google Home経由でRemoにつながっている製品を制御することができるのですが、Google Homeでは、シーリングライトの状態を取れる前提でインタフェースが設計されています。メインの操作がtoggleボタン(ついている時は消す・消えている時はつける)になっているんですね。ところが、Remoはただのリモコンなので、ライトがついているかどうか知ることはできないです。よって、toggleボタンがバグって思うように操作できなくなってしまいます。

Remoのアプリから操作すればこの問題は解決できますが、他のスマートデバイスGoogle Homeに紐づけていたので、これだけやらないという選択肢は取りたくありませんでした。よって、今回の引っ越しを機に、シーリングライトそのものをスマートデバイスに変えることにしました。Remoはエアコン専用として今後も使っていきます。外出先から帰宅する時に遠隔で予めエアコンをつけられるだけで価値があります。

Google Nest Mini

スマートスピーカーです。旧型のGoogle Homeを持っている人にGoogleが無償でプレゼントしてくれました。

store.google.com

このスピーカーを通して、音声によりシーリングライトやエアコンを操作していました。病気で身体が動かせなくなったときに、音声入力や音声操作のありがたみをとても感じたのがきっかけで、こういったスマートデバイスを愛用しています。また、目覚まし時計の代わりにもなっています。

買ったもの

スマートシーリングライト

¥13,980- (6,990x2)

ニトリのスマートシーリングライト「ネクト」を2台購入しました。リモコンも付いていて便利。

www.nitori-net.jp *1

6畳用を購入したのですが最大輝度でも若干暗い気がしました。部屋は明るければ明るいほど良いと思っているので、8畳用にすればよかったです。

なぜスマートライトにしたかったかというと、18畳の部屋の片隅にスイッチがあり、わざわざ押しにいってON/OFFを切り替えるのが大変だからです。部屋のどこにいても、OK Googleと呼びかけることでシーリングライトをつけ消しできます。

スマートスポットライト

¥28,664- (10,780x2+ダクトレール7,104)

スマートスポットライトを4つ(2つセットを2組)購入しました。ダクトレールにつけるタイプの製品です。部屋に3箇所ローゼットがあったのですが、全部普通のライトだと面白くないので、1箇所はスポットライトにすることにしました。引掛ローゼットに取り付けられるタイプのダクトレールも合わせて購入しました。

ON/OFFはもちろん、明るさや色温度まで制御できます。ただ、最小の明るさでもそれなりに明るくなるので、就寝時の照明としては使えなさそうでした。

半分は寝室エリア照明、半分はリビングエリア照明

ネットが繋がるまでの繋ぎとしてリモコンも買ったんですが対応機種を確認し忘れていました。こちらは上位機種のみの対応のようです。

Google Nest Hub

¥11,000-

前述の通りNest miniを持っているのですが、スマートデバイスを手で操作したいこともあるため、画面付きのNest Hub (第2世代)を購入しました。

store.google.com

買ったちょっと後に、GWのセールで1台買うともう1台もらえるというキャンペーンが開催されました。ちょっと損した気分になっています。

スマートキー

¥12,580- (7,377+アダプタ600+WiFiモジュール4,603)

僕は物理の鍵をよく失くすので、スマートフォンなどで鍵の開け閉めができるスマートキーは必須でした。いくつか種類がある中選んだのはSesame 4です。その理由は、他の製品に比べて安いことと、そのままでは非対応な鍵にも3Dプリンタでアダプタを作ってくれることです。実際、僕の家のサムターンには変な土台がついていてうまく取り付けられませんでした。採寸してメールしたら、1週間ぐらいでアダプタを送ってくれました。

今のところ問題なく使えています。GPSで自動解閉錠などの機能もあるようですが、うまく動作するか疑問なのでまだ利用していません。

まとめ

項目 単価 個数 小計
スマートシーリングライト 6,990 2 13,980
スマートスポットライト2個セット 10,780 2set 21,560
ダクトレール 7,104 1 7,104
Google Nest Hub 11,000 1 11,000
スマートキー 12,580 1式 17,927
合計 71,571

IoT大好き人間なので一通り揃えて快適空間になりました。スマートスポットライトは若干高価でしたが、部屋の雰囲気を良い感じにしてくれて、買ってよかったなと思います。

本シリーズも次でいよいよ最終回です。軽く物件を紹介しつつ、トータル費用を計算しようと思います。

*1:余談ですが、ニトリのサイトへのリンク、うまく動かないことがありますよね。製品ページではなくトップページに飛んでしまう場合、もう一度リンクを押すと製品ページに飛べると思います。

SlackのチャンネルURLに関する実験

Slackのチャンネルにリンクを貼りたいと思ったことはありませんか?僕はあります。

以下のようにチャンネルメニューを開いて「リンクをコピー」を選択することで、チャンネルのURLを取得することができるんですね。

チャンネルURLは https://{your_workspace_name}.slack.com/archives/{channel_id} のような形で得られます。例えば、 https://example.slack.com/archives/C03CFUDH2MU のような感じですね。IDの部分はランダムな英数字が入っているので、URLだけ見てもどのチャンネルへのリンクか分かりません。

実は、これ以外のURLでもチャンネルへのリンクを実現することができます。 https://{your_workspace_name}.slack.com/archives/{channel_name} のように、IDが入っていた部分にそのままチャンネル名を入れてあげればOKです。#random チャンネルなら https://example.slack.com/archives/random といった具合ですね。チャンネル名を変えてしまったときにリンク切れになってしまいますが、IDのものよりは分かりやすいURLが得られました。

ここまでの話を読んで、気になることはありませんか?

そうです。channel IDと同名のチャンネルが存在する場合どうなるんでしょうか。channel idが入る場合もチャンネル名が入る場合もURLの構造がまるっきり同じなんですよね。

実際にやってみた

結論を言うと、Slackのチャンネル名には大文字の英字は利用できませんでした。大文字を入力しようとしても無理やり小文字に直されます。この制約によって、URLのパスに含まれる文字列がchannel IDなのかそれともチャンネル名なのか区別できるという訳ですね。

自由研究のために乗換案内をスクレイピングしようとしたら法律の勉強をすることになった話

PR & Introduction

こんにちは。id:arthur-1です。GWいかがお過ごしでしょうか。まずはPRから。

hatenacorp.jp

株式会社はてなが2022年5月1日付でフレキシブルワークスタイル制度をアップデートしました。その1要素として、居住地に関する制限が全国に拡大します。

社員・契約社員の居住地条件を「日本全国」(※)

出社時に飛行機や新幹線を含む公共交通機関を利用した際の交通費は毎月5万円を上限に実費支給

※ 居住地は「要請があった場合、所属オフィス(京都・東京)にAM11時に出社できることを目安とする」などの条件あり

と言われて、では実際どこに住めるのか、気になりませんか?気になりますよね?

住みたい場所が決まっている人は良いのですが、この条件を満たす良い住処はないかなあと思っている人の選択肢を提示できるサービスがあったら素敵だなと思いました。今回のエントリは、GWの自由研究として「11時までに出社できる到達圏マップ」を作ろうとして挫折したという話になります。

先行研究の調査

Twitterで「●●大学1限マップ」なる画像ツイートを見たことはありませんか?各大学の地理に詳しい方々がこのように地図を公開して、大きな反響を呼んでいます。イメージとしてはこれをプログラミングによって機械的に作りたいんですよね。

しかし、僕は残念ながら地理オタクではないので、これを行うのに必要な情報をどうやって得るかという知見がありません。当然時刻表の分厚い冊子を買ったこともありません。日本全国の鉄道・空路全てを網羅して自分で調査するのは困難で、手作業で情報を集めると考慮抜けが発生してしまうことが想定されます。そこで、各社が提供しているオープンAPIにアクセスして、必要な情報(11時にオフィスに到着できる出発駅のリスト)を機械的に集めようという方針を立てました。

Open API

地図アプリの代表と言えばGoogle Mapだと思いますが、最近のGoogle Mapはアプリ内で公共交通機関を含んだ経路検索ができて便利ですよね。つまり、Googleは情報を持っていて、それをAPIとして提供しているのではないかと考えました。調査したところ、Google Maps PlatformのDirection APIによって、情報を取得できそうでした。

ところが、FAQにこんなことが書いてありました。

Directions API と Distance Matrix API は、日本を除くすべての国の Google 乗換案内パートナーをサポートしています。

ということで残念ながら振り出しに。

他社が提供している個人で使えそうな乗換案内系のOpen APIも調査しましたが、いずれも日時まで指定しての時刻表のデータを考慮した経路検索はできないようでした。

ちなみに、NAVITIME APIのReachableというサービスを利用すると、到達圏検索ができるので今回やりたいようなことに近いことができます。ただし、時刻表180分より長い時間を設定できない上に、出発時間/到着時間も設定できないので見送りました。これはこれでおもしろそう。

rapidapi.com

qiita.com

乗換案内サービスの利用規約

仕方ないので、各種乗り換え案内サービスにpuppeteerでスクレイピングして全駅分情報を取得するか、という気持ちになりました。とてもnaiveですが、日本中の各駅・バス停などを出発地、オフィスを到着地として、到着時刻を11:00に設定して経路検索をすれば、出発日時を見ることで出社可能か否かが分かりますよね。

あれ、でもこれって利用規約的にOKなんだっけ?と頭をよぎりました。先程のOpen APIがちゃんとした経路検索の機能を提供していないことも踏まえると、ダメそうな予感がします。

Yahoo! 路線情報

Yahoo!路線情報ヘルプ

路線に掲載されている情報は、情報提供元との契約により配信されているものです。そのため、情報や画面の二次利用は基本的に不可となります。

無理そう。

NAVITIME

利用規約 | NAVITIME

お客様は、本サービス及び本サービスで使用されているソフトウェア、ドキュメント、データ、画像、キャラクター、ロゴ等につき、次に定めることを行ってはなりません。

(3) 複製、頒布、公衆送信、改変、翻訳、翻案又は二次的著作物の作成をすること

翻案ってなんだろう?あと二次的著作物には該当するのだろうか。

駅すぱあと for web

利用規約 | 駅すぱあと for web

お客様は本サービスの利用に関して、次の各号に定める行為を行わないものとします。

(2)当社若しくは第三者の商標権、著作権等の知的財産権その他一切の権利を侵害する行為、又は侵害するおそれのある行為

直接的にNGであるとする表現はなかったけれど、ここに引っかかる可能性があるのかな?

ジョルダン

サイトのご利用にあたって|乗換案内ヘルプ|ジョルダン

当サイトに関する著作権を含む一切の知的財産権等の権利は、当社又は当社に対して使用許諾を行っている情報提供者に帰属します。 当サイトの内容を無断転載・複写・修正・改変し、または第三者に譲渡することを禁じます。

直接的にNGであるとする表現はなかったけれど、ここに引っかかる可能性があるのかな?

ekitan

利用規約 - 駅探

(1) 本サービスに関する一切の権利は、当社および知的財産権を有する当社へのライセンサに帰属します。本サービスの内容を無断で転載・複写・修正・改変・蓄積・転送し、または第三者に譲渡することを禁じます。

(2) 当社は、JR各社、電鉄各社およびその指定機関等から直接、時刻表ダイヤグラムを含むデータを購入し、その利用許諾を得て本サービスを提供しております。お客様は、有償無償・利用形態の如何に拘わらず、当社の許可なく当該データを加工・再利用・再配布・販売することはできません。

無理そう。

スクレイピングと法律と利用規約

実はこれまで個人的にいろんなデータをスクレイピングして解析して遊んできていましたが、不安ではあったんですよね。そこで、法的根拠についてちゃんと調べてみることにしました。

以下のページが丁寧な説明で参考になりました。

sugiaki1989.gitbook.io

topcourt-law.com

また、以下のページでは総務省スクレイピングを可能としている根拠を紹介していました。*1

self-development.info

調べてわかったことをまとめると、

  • データ分析目的なら法的には大丈夫 (知らなかった)
  • robots.txtを確認しよう (知ってた)
  • 利用規約を確認しよう (知ってた)
    • でも、使う前に同意を求められなければ大丈夫かも (知らなかった)
  • たくさんアクセスをしてサーバ落としたりすると偽計業務妨害罪になるかも (知ってた)

といったところです。ただ「ダメそう」という雰囲気ではなく、法的にアウトか(刑事訴訟されるかも)、サービスの利用規約としてアウトか(BANされる・民事訴訟されるかも)という切り分けも大事かもしれません。もっとも、僕は後者なら破っても良いかと思う人間ではないですが。

ここまで調べているうちに、僕がしたかったのは法律の勉強じゃない!と思い、調査に時間がかかったのもあって熱が冷めてしまいました。

思ったこと

まずは1クリエイターとして、いろいろな情報が一定の秩序が守られた上で自由に使える世界にもっとなって欲しいと思いました。多量のデータから機械学習を行うdeep learningが様々な領域に応用されて久しいですね。自分が提供するサービスではきちんとルールを定め、個人情報保護などを考慮しつついろんな情報を利用しやすい形で提供できるよう心がけたいです。

もちろん、連絡をすればOKをもらえるかも、という考えもありますよね。(実際、これまで個人で提供してきたサービスも、関係者と直接連絡を取って許可をいただいたものがいくつかあります。)でも、僕はチキンなので、そこまでの労力をかけて提供しようと思えない限りは諦めてしまいます。他にもやりたいことはいくらでもあるので。

この件に限らず、例えばUGC(User Generated Contents)においては、ユーザが投稿した内容が法律に触れていないかという問題もありますね。このように、ものづくりの技術だけでは作ったものを合法的に提供することができません。企業は法務部や顧問弁護士を抱えていますが、個人のクリエイターが同じことをするのは難しいですよね。自分が全知全能になるか、外注するしかないと思いました。全知全能を目指す方向性はスケールしないことが明らかで厳しいですね。やはり同じ志を持つ仲間を見つけてカバーする専門領域を拡大していくのが大事かもしれないです。

という感想を書き綴ったところでGWの自由研究発表を終わります。他にも自由研究ネタはいくつかあるけどpublicにはしないと思います。

*1:以下のページでは全く触れられていませんが、総務省は各サービス提供者から事前承諾を得ています。諸外国の事例も載っていて参考になるので元の資料(https://www.soumu.go.jp/main_sosiki/kenkyu/big_data/02toukatsu01_04000328.html の資料1)を参照推奨です。

202203引っ越しログ 3. PC周辺機器編

こんにちは。id:arthur-1です。新卒がぽつんといても役に立たない気がしたので、GWは10連休にしました。

次回はPC周辺機器編の予定ですが、先に技術エントリを書くかもしれません。

正解はどちらでもない、でしたね。

  1. 家電編
  2. 家具編
  3. PC周辺機器編 ←本エントリ
  4. IoT機器編
  5. 物件編

PC周辺機器編

PCデスク全景

机は、家具編にて紹介したIKEAのUTESPELAREです。

持ち込んだものなど

メインディスプレイ

これは在宅ワーク用の貸与物です。DELLのU2723QEになります。(閲覧当時、割引適用後69,583円)

www.dell.com

4Kで、給電と出力を両立できるUSB-Cでつなげて、なおかつKVM機能がついているのがポイントです。仕事はMacbook Proで、ゲームはデスクトップで、というシーンはよくあると思うのですが、モニタのUSB端子に周辺機器をつけておけば、モニタの接続先PCを切り替えることでUSB機器の接続もまとめて切り替えることができます。これによって、Webカメラやオーディオインタフェースなどを繋ぎ変える必要がなくなるわけです。とても便利ですよね。

接続図

とても気に入っていて私費でもう1台購入も検討しているのですが、仕様上の問題が1点。USB-C端子経由でモニタとPCを繋ぐところがUSB 3.2 gen2接続なのですが、帯域が足りず4K60HzとKVMのUSB3.2を両立することができません。つまり、4K60Hzを諦めて30Hzにするか、モニタ経由でつながっているUSB製品についてUSB3.2の速度を諦めてUSB2.0の速度で繋ぐかを選ぶ必要があります。詳しくは以下のブログに書いてありました。

www.labohyt.net

ここの接続がgen2x2になって両立できたら最高ですね。最近のWebカメラUSB2.0だと繋げないものも出てきていますし。

サブディスプレイ

実家で使っていたacerの27inch 4Kディスプレイをサブ用に持ち込みました。FullHDの時代はもう終わったと思うんですよね。

時折スリープから復帰できなくなるなどの不具合は起きますが、ディスプレイが原因か特定できていないので、不満はありません。

Magic Trackpad

Mac操作用。

マウス

Windows PC操作用。弟から以前もらったものをずっと使っています。あまりこだわりはないです。

Webカメラ

本当はLogicoolのStreamCamに買い替えたかったけれど、モニタのKVM仕様問題により昔使っていたものをそのまま使っています。一応この製品も1080p対応。

マイク

SHUREのWH20です。ドラマー業でコーラスしたいとき用に買いましたが、普段もオーディオインターフェイスにつなげてオンライン通話用に使っています。頭の締め付けがキツくて普段使いにはかなり向いていないです。

https://www.soundhouse.co.jp/products/detail/item/69965/

買ったもの

キーボード

¥18,800-

MX Keysの並行輸入品です。なぜか日本向けにはUS配列かつWin/Mac両対応の製品が出ていないんですよね。

Bluetooth接続先を最大3台まで登録でき、ボタンで接続先を変更できるキーボードです。PCをたくさん使い分けている人におすすめです。

オーディオインタフェース

¥18,700-

ずっとYAMAHAの超有名な製品AG03を利用していたのですが、新しいモデルが出たということで買い替えました。

https://www.soundhouse.co.jp/products/detail/item/304967/

AUX端子が4極でin/outに対応したのが最大の進化です。これにより、スマートフォンでも利用しやすくなりました。TwitterのSpace機能は現状スマホでしか参加できませんが、それでも良いマイクで話したい人にはおすすめできるかもしれません(未検証)。

スピーカー

¥17,500-

PCの下に置くサウンドバー形状のちょうど良いスピーカーがないか探したのですが、コンパクトなサイズ感と音質を両立する製品がなかなか見当たりませんでした。AG03の出力から繋ぐので、アナログ入力があるものでないといけなかったのも追い打ちをかけていました。

熟考した結果購入したのがSONYBluetoothスピーカー SRS-XB32です。この製品は2019年モデルということでやや古いですが、先程挙げた条件をすべて満たしています。

欠点は、この製品が一応Bluetoothスピーカーとして売られていることです。何もペアリングしている製品がない状態だとBluetoothボタンがチカチカ青く点滅しているのですが、それがかなり鬱陶しいです。また、アナログ入力のときに音を出していないと一定時間でオフになってしまうようで、PC用スピーカーとして使うには使い勝手が悪いです。でも他に選択肢が全然ないので妥協しています。おすすめがあれば教えてください。 スマホのアプリから設定を変えてオートパワーオフを無効化できました。

helpguide.sony.net

ライト

¥24,680-

ElgatoのKey Lightです。PCやスマホからネットワーク経由でON/OFFの切り替えや明るさ制御などができます。

この製品には致命的な欠点があります。それは、WPA3を有効にしているWi-Fiに接続できないことです。(WPAとは無線LANの暗号化規格です。2018年にWPA3が登場しました。)それだけなら100歩譲って許せますが、アクセスポイントの設定をWPA2/WPA3にしていてもダメなのが意味不明です。

そもそも、今の家ではデスクライトが必要ありませんでした。スペースに余裕がある関係で机を壁向きに置かなくなったので、シーリングライトによって十分顔が明るくなります。

配信用コントローラ

¥17,927-

ElgatoのStream Deck Mk.2は有名ですね。Key Lightを手軽に操作できるという理由で購入したデバイスです。jubeatがやりたかったわけではないです。各ボタンが画面になっていて、好きな画像を出しつつ何らかのアクションをセットできるという便利ガジェット。

こちらの製品にも致命的欠点があります。ボタンを押したときに他のボタンも一緒に反応してしまうことがあります。この現象が使い物にならないレベルで発生します。不良品なのかこの製品が抱えている問題なのかは分かりません。Key Lightの件もあって、Elgato製品かっこいいけど微妙だなと思ってしまっています。これはさすがに交換してもらいたいな。

電源周り

¥6,790- (総額)

PC周りの製品にはちゃんとアースを取りたい派なので、基本的に3極のコンセントを使っています。実は、PCを設置したい場所の近くにアースコンセントがあるかというのも物件選びで重要なポイントでした。

磁石つきタイプは机の脚につくのが良い

まとめ

項目 単価 個数 小計
キーボード 18,800 1 18,800
オーディオインタフェース 18,700 1 18,700
スピーカー 17,500 1 17,500
ライト 24,680 1 24,680
配信用コントローラ 17,927 1 17,927
電源周り 6,790 1 6,790
合計 104,397

引っ越し、というより欲しいガジェットを買ってみましたみたいな感じになってしまいましたね。これでディスプレイまで自費で買っていたら破産していたかもしれません。これらはすべて、在宅ワークを快適にすることに投資する価値がある、と判断して購入したものになります。ところが、肝心の在宅ワークがどういう状態かという話はそのうちちゃんと書くつもりです。軽くネタバレをするとネット回線がまだ引けていません

引っ越しログシリーズも折り返しを過ぎていて、次回はIoT機器編の予定です。ガジェット系の話が連続しますがお楽しみに。

202203引っ越しログ 2. 家具編

id:arthur-1です。Play Frameworkへの恨みつらみ 技術エントリが書きたくなったので引っ越しログをさっさと終わらせようと思います。

  1. 家電編
  2. 家具編 ←本エントリ
  3. PC周辺機器編
  4. IoT機器編
  5. 物件編

家具編

僕の物件は18畳ワンルーム(+玄関、洗面、バスルーム、トイレ)というぶっ飛んだ間取りなのですが、仕切りこそないものの用途ごとに分けて使っています。家具編では、各エリアごとに分けて紹介します。

リビング

リビングと呼んでいるが実質ボドゲプレイエリア

ダイニングテーブル

¥26,990-

僕はボードゲーマーなので、自宅ボードゲーム会を開きたいという欲望があります。そこで、一人暮らしではあるものの6人用のダイニングテーブルを中心に検討していました。僕のよくやっているボードゲームはめちゃくちゃ場所取るんですよね。

価格や占有スペース、奥行きの長さなどを考慮して、最終的に選んだのがIKEAのEKEDALENです。

www.ikea.com

良かったところは、4人用サイズから6人用サイズに伸ばせるところです。普段場所を取るのは邪魔に思いますが、来客時だけ伸ばせるのは素敵な製品だと思います。

悪かったところは、IKEAの家具全体が抱えている特徴ですが、木ネジを樹脂パーツにねじ込んでいく組み立て方式なことです。今回届いた商品の樹脂パーツ1ヶ所が不具合で異常に硬く、木ネジが全く入っていきませんでした。返品交換も考えましたが、冷静に組み立て途中の商品を段ボールに元通りに戻すの不可能すぎませんかね。中途半端に広げたパーツ群を電話一本で回収してくれるとは常識的に考えられなかったです。よって、一部のネジはついていないまま組み上げました。

また、テーブルを伸ばそうと脚を引っ張るのに必要な力が思ったよりも大きかったです。2人いないと厳しいと思います。もっとも、伸ばしたいタイミングは来客時なので、これはそこまで問題にはなりません。

ダイニング椅子

¥16,000- (4,000x2+2,000x4)

テーブルと同じくIKEAです。TEODORESを2脚、折り畳みタイプのGUNDEを4脚買いました。

www.ikea.com

www.ikea.com

椅子の組み立てはとても簡単でした。GUNDEは、普通のパイプ椅子とは開き方の感じが異なるので注意が必要です。

タイルカーペット

¥7,176- (299x24)

ニトリのタイルカーペットを、ダイニングテーブルの周りに24枚敷き詰めました。汚れた時に部分的に交換できるのは嬉しいですね。

接地面に貼ってある商品ラベルを剥がすとベタベタするのがマイナスポイントです。

www.nitori-net.jp

スタッキングシェルフ

¥39,900-

無印のスタッキングシェルフは有名ですよね。だたっ広い空間の中、リビングスペースと寝室を良い感じに区切りたくて購入しました。

www.muji.com

裏にベッドがあります

組み立て体験は思ったより良かったです。アセトアルデヒドのにおいが気になるというレビューもありましたが、自分は許容できるレベルでした。

見ての通りアグリコラサイズの大箱ボードゲームを収納するにはちょうど良いサイズ感なので、ボードゲーマーの皆さんにオススメです。

オフィス

在宅ワークのためのスペース

PCデスク

¥14,990-

IKEAのゲーミング家具UTESPELAREのデスクを買いました。サイズがかなり大きく場所を選ぶ製品なのですが、4Kディスプレイを2台設置する余裕が欲しかったのでこれを選びました。

www.ikea.com

値段を考えると文句はないです。金属メッシュの部分がとてもカッコ良いですよね。ただ、クランプでつけたいガジェットがたくさんある方にはおすすめしません。この金属部分が邪魔になります。

オフィスチェア

¥10,560-

オフィスチェアの定価がめちゃくちゃ高いということを知り、予算の関係で中古オフィス家具店から購入することにしました。オカムラのCG-Mチェアを30%ぐらいの価格で買うことができました。

product.okamura.co.jp

ちゃんとしたオフィスチェアは座り心地がとても良いですね。大学生にはちゃんとした椅子を買えと啓蒙したい。

チェアマット

¥3,980-

椅子のコロコロで床に傷をつけたくなかったので購入。使っていると微妙にずれますが、床に張り付いて退去時に困るよりはマシだと思います。

寝室

ベッド

¥11,900-

ニトリのパイプベッドです。疲れた時はどこでも寝られるし、疲れてない時には寝ないので、寝具にこだわりはありません。布団やマットレスなどは実家から持ち出しました。

www.nitori-net.jp

その他

カーテン

¥35,722-

(掃き出し窓2ヶ所、腰高の窓2ヶ所分。レースカーテン含む)

角部屋なので部屋の2辺がほぼ全部窓です。カーテンは全部で4セット揃える必要がありました。全てニトリで規格サイズのものを買おうとしたのですが、1か所のカーテンだけ幅が通常より広く、定型のものが合いませんでした。仕方なくオーダーサイズで頼むことにしたのですが、納期が思ったより遅く、しばらくカーテンなしで過ごすことになってしまいました。

www.nitori-net.jp

購入したのがこちらの製品なのですが、結構後悔しています。以下の写真を見ると分かると思いますが、折り目がおかしくて隙間が空いてしまっているんですよね。

こんな不格好な形で形状記憶されても……

まとめ

項目 単価 個数 小計
ダイニングテーブル 26,990 1 26,990
ダイニング椅子 4,000 2 8,000
折りたたみ椅子 2,000 4 8,000
タイルカーペット 299 24 7,176
スタッキングシェルフ 39,900 1 39,900
PCデスク 14,990 1 14,990
オフィスチェア 10,560 1 10,560
チェアマット 3,980 1 3,980
ベッド 11,900 1 11,900
カーテン 35,722 1式 35,722
合計 167,218

おそらく一番金が掛かっている項目群だと思いますが、こうして振り返ると節約したつもりが結構しんどい感じになってますね。でも、自分が大事だと思うところには納得できるクオリティを求めて金を積む、他は安物で揃える、というようにメリハリをつけるのは悪くないと思います。僕はボードゲームができる環境と在宅ワークが快適にできる環境に予算を全振りしました。

次回はPC周辺機器編の予定ですが、先に技術エントリを書くかもしれません。