最近声日記ってやつをやっています
最近、声日記ってやつをはじめてます!
もともとは id:ninjinkun と話してるときに「最近、声日記やってるんですよー」っていっていて、なんかブログより手軽に出来て日々のちょっとしたこととか話せていいですよ。って言われたのではじめてみたかんじです。
で、「とりあえずページネーションが出るようになるくらいまで投稿溜まったらブログにも書こう」って思ってたのですが、今日とうとうページネーションが出現したので宣伝してみます。
僕はどんなスタイルでやってるかっていうと
- 使うサービスはにんじんくんに教えてもらったまま LISTEN を使う
- ブラウザからそのまま撮って出し(編集とかしない)
- 話す時間は3分目安(大幅に超えることも)
ってやってるんですね。で、これはなんとなくそうやってはじめたんだけどすごく良いなぁと思っていてアウトプットのための敷居が僕の中でだいぶ下がったんですよね。 なんかちょっとブログに書こうかなとか思っててもブログに書こうとするとそれなりに時間かかるので躊躇しちゃうんですよね。 たとえばこれなんかも書き始めてからもう10分くらい経ってる。こんな雑な文章でも10分くらい経ってる。
でも3分の声日記だとタイトルとか概要とか書いても5分で終わる。リモートで仕事してるから目の前にマイクあるのでホントに LISTENのページ開いてすぐに録音初めてタイトルと概要書いて終わり。 最初はポッドキャストとか声日記的なのはハードル高いと思ってたんだけど逆だったんですよね。サクッと公開できる。(これはLISTENっていうサービスが良いというのもあると思います)
5分で終わるってなると、仕事一旦終わらして晩御飯作る前にとかにサクッと公開出来るんですよね。しかもなんかタイトルに「日記」って付けたので雑に日記的なことを言えばいいだけっていう。そんなことをやってアウトプットする筋肉を取り戻そうとやっています。そんなアウトプット筋の話はこちら
せっかくページネーションでるまでやってみたのでしばらく続けようと思います。楽だしね!!!
真・WEB+DB PRESS総集編的なやつにエッセイを寄稿させてもらった!
みんな大好き「WEB+DB PRESS」が隔月刊誌としては休刊するということで、真の総集編的な全部入り総集編が出ました。
DVDとダウンロードコード付き!!! 全記事PDF+全文検索っていう意味がわからないほど豪華なのに3000円っていう実質無料な感じなのでみんな買うと良いと思います。
で、僕もそこに寄稿させてもらいました。で、そのときの依頼メールに「エッセイを執筆してくれ」って書いてあって興奮してしまいました。
だって、エッセイですよ。エッセイ。好きなんですよ、エッセイ。
で、興奮してエッセイについての思いを導入に書き始めたら全然ページに収まらなくなってしまって結局削りました。
今読むと「これ、完全に自己満だから消しておいてよかったな」と思うんですがせっかくなのでここに載せて供養しようと思います。
エッセイを書くということの意味
この原稿は「Web開発者として生きるあなたへという題材でエッセイを書いてください」という依頼から書くことになった。エッセイである。僕の中でエッセイというのは小説家が自分の言葉で日常に感じたことやちょっとしたことを書くものの印象が強い。普段物語を読んでいるときには見えなかった作者の個人的な側面が見えてちょっとしたファン心理的にも楽しい読み物だった。特に若い頃は椎名誠のエッセイが大好きで沢山読んでいた記憶がある。その出会いを少しだけ語ると中学生のころに遡る。当時椎名誠は『岳物語』が教科書にのっていてお堅い人だと思っていた。まだエッセイとかあんまり読んだことがなかったある日、本屋さんで『かつをぶしの時代なのだ』というゆるーいタイトルの本を手にとったら作者がそのお堅い人だと思っていた椎名誠なので興味を持った。そこから椎名誠のエッセイにハマって他の人のも読んだりしたが僕の中ではエッセイといえば椎名誠なのである。そしてエッセイというのはそういう著者が自分の言葉で書くものなのだという概念から逃げられなかった。逃げられなかったので今、執筆依頼時に『本文は原則「ですます調」を想定していますが、「である調」のほうがよければその形でも大丈夫です。』と言われたのにガン無視して口語体で書いている。
人生の中でまさか自分が「エッセイを書いてくれ」なんて依頼を受けれるとは思っていなかったのでせっかくのチャンスだし楽しんで僕の中にある「エッセイっぽい文体」で書かせてもらおうと思っている。そう、そしてこうやって前置きをグダグダ書いてなかなか本題に入らないのもエッセイっぽいと思ってしまうのだ。
みなさん買いましょう!!
隔月刊誌としては休刊ってことなんだけど、なんか売上良ければちょいちょい出るんじゃないかなぁとか勝手に期待してるんですよね!!!!なんでみんな買いましょう!!!!
そして記事をChatGPTとかに学ばせて質問すれば最高な体験が出来るかも!!!(適当)
オンラインミーティングが始まったら自動で点灯するオンエアーネオンライト作った
家で仕事するようになったときからずっとオンラインミーティング始まったら自動で点灯するネオンサインみたいなのあったら良いなぁと思ってた。 まぁぼんやり思ってるだけだったんだけど、ちょっとやる気が出たのでガッと組んでみた(確定申告の書類集めとかしてるとそうなるよねー)
雑要件定義
- 絶対に自動でON/OFF
- 取り回しのためPCとは直接有線で繋げない
- ミーティングはZoomだったりGoogle Meetだったりあるのである程度汎用的な方法
ミーティングの自動判別
たまにネットで出てくる記事でよく使われているZoomアプリのプロセス監視するのはGoogle Meetに対応できないので無し。カレンダー監視してミーティングの時間とか考えたけど、精度低いし突発の仕様相談とかに対応できないので無し。
結局仕事のミーティングはすべてカメラONにして行っているのでカメラの監視をすることにした。たまにゲームでDiscordつかって音声だけのときもあるけど、奥さん的要件としてはカメラに映り込みたくないというのが大きのでカメラの監視をすることにした。
で、カメラがつながっているかどうかではなく、実際に起動しているかどうかの監視はlsofコマンドで行える。
# lsof /dev/video0 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME pipewire 2019 yoshiori 52u CHR 81,0 0t0 2289 /dev/video0 wireplumb 2020 yoshiori 47u CHR 81,0 0t0 2289 /dev/video0
linuxだとこんな感じ。(pipewireとかwireplumbはWayland下でオーディオデバイス扱うやつなので無視して大丈夫) 多分Macでも似たようなもんだと思う。
あとはこれをループで監視すればON/OFFが判別できる。
ライトのオンオフをリモートで操作
PCで会議のイベントは取れるようになったのであとはプログラムからネオンライトを操作できれば良い。昔ならIFTTTとか使おうとか考えたんだけど、今やIFTTTのwebhookは高級有料プランになってしまったので無し。スマートデバイス、PCから扱うのはじつは面倒くさいんだよなぁとか思いつつ、なんか他に無いかなぁと思ってたらSwitchBotはAPIを公開してた!マジでAPI公開してる企業は政府から補助出てほしい!!ありがとうSwitchBot!!
で、Rubyのgemもあったのでめっちゃあっさりできた。
class Light def client @client ||= Switchbot::Client.new(ENV["TOKEN"], ENV["SECRET"]) end def on client.device(ENV["DEVICE_ID"]).on end def off client.device(ENV["DEVICE_ID"]).off end end
これで道具は揃ったのであとは作るだけ。
材料
ON AIR ネオンライト
物理スイッチなので本体のスイッチはいれっぱなしにしてスマートプラグでON/OFF操作できる。あと電池も対応しているけど有線でも使えて接続口がUSB-Cなのも地味に嬉しい。
スマートプラグ
商品説明にはAPIについて全く触れられていない。なぜなのか!?(マニアックだから?)
【Option】薄型 USB-C ケーブル
USB-C のコネクタ側が薄型のL字なので接続時に綺麗に見える。初代Apple Pencilの突き刺さりが美しいと思った人はいらないと思う。
プログラム
ということで前回かいた「超楽にRubyで雑に書いたスクリプトをsystemdで管理したい! - 宇宙行きたい」はこれを動かすためでした。
まとめ
SwitchBotが実はAPI公開しててさくっと色々なハックが出来るのはもっともっと知られてほしい!!!!最高便利!ありがとう!!!
超楽にRubyで雑に書いたスクリプトをsystemdで管理したい!
ちょっとした雑なスクリプト書いてそれを常に起動しておきたいときないですか?僕はあります。
しかもめんどくさがり屋なのでghq管理化のディレクトリでgemに頼って雑に書いたスクリプトがそのまま動いてほしいんです。
systemd使えば出来るんだろうなぁと思いつつ「色々面倒くさいんだろうな」と思って手を出していなかったんだけどやってみたら拍子抜けするほど簡単だったので共有です。
雑要件定義
- rubyはrbenvで管理してるんでそれそのまま使ってほしい
- 実行ファイルをgit&ghq管理化のディレクトリでそのまま使いたい
- 他の場所にインストールとかコード管理ダルい
- bundle exec 的なのもやって依存ライブラリもうまいことやってほしい
やること
systemd
をユーザーレベルで使うときは ~/.config/systemd/user/
にファイルを置けば良い。ディレクトリ無かったら作る
mkdir -p ~/.config/systemd/user/
そこにsystemd ユニットファイルを作る。例えばhogeっていうプロジェクトならhoge.service
という名前のファイルを作る。中身はこんな感じ。
[Unit] Description=hoge [Service] Type=simple Restart=always Environment="PATH=%h/.rbenv/shims:/usr/local/bin:/usr/bin:/usr/local/sbin:" ExecStart=%h/src/github.com/yoshiori/hoge/bin/run WorkingDirectory=%h/src/github.com/yoshiori/hoge [Install] WantedBy=default.target
- Environment
- ここに
PATH
設定をかいてrbenvをにもパスを通す。
- ここに
- ExecStart
- 実行するコマンド
- WorkingDirectory
%h
はsystemd
が定義しいる置き換え文字でユーザーのホームディレクトリになる
で、実行するファイルの中でbundler/setup
呼んであげれば良い。
#!/usr/bin/env ruby # frozen_string_literal: true require "bundler/setup"
デバッグ
とりあえず実行
systemctl --user start サービス名.service
動かなかったらログ見る
journalctl --user -eu サービス名.service
修正したらリロード
systemctl --user daemon-reload
あとは正常に動くようになるまで微調整
登録
ここまできたらいつものsystemdと使い方変わらない
登録
systemctl --user enable サービス名.service
登録されていることを確認
systemctl --user list-dependencies
おわり
まとめ
簡単だからsystemd
をユーザーレベルで使えばよい。そうすればログイン時に起動するデーモン作れる。
JavaでUUID.compareToの挙動が思ってたのと違った
UUIDはv6,v7,v8とかで時間ベースのソートが出来るようになった。べんりー
なのでUUIDの上下関係が大事になったんだけどJavaのUUID.compareToはそこまで考慮されていなさそうだった。
たとえば2つのUUIDを用意してみる。
00000000-0000-7dda-8cc3-13f289aa2814
- 1970/01/01とかでつくったUUID
e677d1fe-e676-7224-be39-f88d1cd436d8
- 9999/12/31とかでつくったUUID
- こっちのほうが大きくなってほしい
まあ、見た目通り文字列で比較すればe677d1fe-e676-7224-be39-f88d1cd436d8
のほうが大きい。
ちなみに postgres で比較するとそのとおりの挙動になる
neko=> select ('00000000-0000-7dda-8cc3-13f289aa2814')::uuid < ('e677d1fe-e676-7224-be39-f88d1cd436d8')::uuid; ?column? ---------- t (1 row)
でも、Java(21)でUUIDオブジェクトとして比較すると逆になる
# jshell 2023ms 2024年02月22日 15時49分21秒 | Welcome to JShell -- Version 21.0.2 | For an introduction type: /help intro jshell> UUID max = UUID.fromString("e677d1fe-e676-7224-be39-f88d1cd436d8"); max ==> e677d1fe-e676-7224-be39-f88d1cd436d8 jshell> UUID min = UUID.fromString("00000000-0000-7dda-8cc3-13f289aa2814"); min ==> 00000000-0000-7dda-8cc3-13f289aa2814 jshell> max.compareTo(min) $3 ==> -1
ちなみに文字列にして比較すると(当たり前だけど)見た目通りの挙動になる。
jshell> max.toString().compareTo(min.toString()) $4 ==> 53
なぜかと言うとOpenJDKの実装では前半と後半にわけて(符号付きの)longとして保持している。
public UUID(long mostSigBits, long leastSigBits) { this.mostSigBits = mostSigBits; this.leastSigBits = leastSigBits; }
で、compareTo
も実装されていていて、最初に前半のlongで比較している
@Override public int compareTo(UUID val) { // The ordering is intentionally set up so that the UUIDs // can simply be numerically compared as two numbers int mostSigBits = Long.compare(this.mostSigBits, val.mostSigBits); return mostSigBits != 0 ? mostSigBits : Long.compare(this.leastSigBits, val.leastSigBits); }
で、このmostSigBits
の値が一定の大きさを超えたUUIDではマイナスになる(まぁ、それはそう)。
例えば上記のものは内部的には下記のような感じ
max = {UUID@3077} "e677d1fe-e676-7224-be39-f88d1cd436d8" mostSigBits = -1839771030039137756 leastSigBits = -4739483847872989480
ちなみに変換ロジックはこれ
public static UUID fromString(String name) { if (name.length() == 36) { char ch1 = name.charAt(8); char ch2 = name.charAt(13); char ch3 = name.charAt(18); char ch4 = name.charAt(23); if (ch1 == '-' && ch2 == '-' && ch3 == '-' && ch4 == '-') { long msb1 = parse4Nibbles(name, 0); long msb2 = parse4Nibbles(name, 4); long msb3 = parse4Nibbles(name, 9); long msb4 = parse4Nibbles(name, 14); long lsb1 = parse4Nibbles(name, 19); long lsb2 = parse4Nibbles(name, 24); long lsb3 = parse4Nibbles(name, 28); long lsb4 = parse4Nibbles(name, 32); if ((msb1 | msb2 | msb3 | msb4 | lsb1 | lsb2 | lsb3 | lsb4) >= 0) { return new UUID( msb1 << 48 | msb2 << 32 | msb3 << 16 | msb4, lsb1 << 48 | lsb2 << 32 | lsb3 << 16 | lsb4); } } } return fromString1(name); }
まぁ、Java のUUIDは4くらいまでしか対象にしていない気がするのでしょうがないような気がするし、これが仕様なのかバグなのかは人によって捉え方が違うと思う。
ただ、UUIDv7とかのロジックで生成したUUIDをJava上でオブジェクトとして比較すると順番が思ったのと違うことになるというお話でした。 僕はとりあえずtoString()して比較するようにします。
この10年で何がみえるようになって何が変わったのかという発表をします。
久しぶりにデブサミがオフラインでやる!って事で僕も発表します!!!
で、なんの話をするのかとういのを概要でなんとかまとめたつもりなんだけど書ききれなかった部分とかあるので書いていきます。
基本的には10年前にデブサミ関西で基調講演させてもらったときの続きのお話です。「10年後...」ってやつですね。
でもただ続きの話するんじゃなくてそこから変わったこと、変わらなかったことの話をしていければと思っています。
偉そうなこと言ってるけど10年後も同じこと言えるの?
「生き方」的な発表を聞くと素直に感動する反面「偉そうなこと言ってるけど10年後も同じこと言えんのかね?」とか心の片隅で思ったことありません? 俺はいつも思ってます。
映画なんかやらないって言ってたお笑い芸人が映画撮ってたりあるじゃないですか。
でもそれを否定しているわけじゃないんですよ。多分それから色々立場が変わったりして見える景色が変わったり実は深く考えたらそちらの考えになったことって絶対あると思うんですよ。
で、実は一番大事なのはなぜ変わったのかだと思うんだよね。より深くみるようになった方かもしれないし、立場が変わってもっと上からみたら実はこうだったとか。
何が見えてどう感じて変わったのか。これが聞きたいんだけどあんまり話してくれる人いない。まぁなんか言い訳っぽくなっちゃって話しづらいのもあるかもしれないけど、そういった部分を聞きたいなって僕自身が思っていたのでそのへんの話をしようと思います。
40代とか若者以外もキャリア悩んでるんだ!
なんか「エンジニアの生き方」みたいなセッションあると20代後半から30代前半ぐらいをターゲットにしてること多いじゃないですか。でも実は30代後半、40代以降の人もキャリア悩んでるんですよ。だってWeb業界は業界自体が若いからその年齢になると前例が少ないんですよね。出てきても「著名なOSSのコミッタ」とか「xxx社のCTO」とかの話で普通のエンジニアにはなかなか参考にならないんですよね。
なんで「著名なOSSのコミッタ」とか「xxx社のCTO」ではない1エンジニアの話って結構役に立つんじゃないかなって思っています。
自分で言うのもアレなんですが、それなりに執筆とか公演とかの依頼いただいたり転職したらインタビューしていただけたりするので「ただの普通」ではないとは理解しているつもりです。
でもエンジニアとして僕よりすごい人はいっぱいいるしマネージャとしてもすごい人はいっぱいいるし、能力的にはやっぱり僕は「普通」なんですよね。
そんな普通な僕がどんなことを考えて、どういう決断をしてきていまのキャリアになってるのかっていうのを話せればなと思っています。
「著名なOSSのコミッタ」とか「xxx社のCTO」のキャリアが才能*1の話とすれば、僕のは普通のエンジニアとして挑戦し続けるスキルの話ですね。
スキルなんで才能いらなくて意識して練習すれば出来るようになるやつです。そういった話をしようと思っています。
僕も誰かの言葉に背中を押してもらった
僕自身もなにか決断をするとき、誰かの言葉を参考にしたり、背中押されたりするんですよ。
例えば前職でお家騒動的なので社内がぐちゃぐちゃなときに「人事部長やってくれ」て言われたとき、寝耳に水だし領域違いすぎるし断る気でいたとき*2に任天堂元社長・岩田さんのインタビューの言葉に背中を押されました。
当事者になれるチャンスがあるのに
それを見過ごして
「手を出せば状況がよくできるし、
なにかを足してあげられるけど、
たいへんになるからやめておこう」
と当事者にならないままでいるのは
わたしは嫌いというか、
そうしないで生きてきたんです。
この「当事者になれるのにたいへんになるからやめておこうっていうのは嫌い」っていうのに「あー、めっちゃロックだな」ってすごく共感して引き受けることにしました。
さらにその後、会社の元同僚が僕のデブサミ関西のスライドをみて影響を受けたと書いてくれていました。
当時在籍していた同僚のこのスライドを見て「あぁ、僕より先を進んでいる先輩が大胆に挑戦しているのに、だいぶ縮こまってるなぁ」と感じ、せっかくなら違うことに挑戦してみようかなという気持ちに。
めちゃめちゃ光栄だし嬉しかったとともに自分の言葉が誰かの背中を押すこともあるんだっていうことに気付かされました。
僕は誰かの言葉に背中押されて、その僕の言葉にふじけんは背中押され、そして誰かがふじけんの言葉に背中押される。
なんか言葉にするとこっ恥ずかしいけどそうやって少しづつでも誰かの背中を押すことが出来るって素晴らしいなと思って猛烈に僕もなにかしたくなったのを覚えています。
このふじけんの記事を読んだときから「いつかデブサミ関西の続きの話したいなぁ」と漠然と思っていたのが今回実現した感じです。
この物語の主人公ではなくなるのか
家庭では子供生まれたり家購入したり、仕事でも管理職になったり若手エンジニアがガンガン成果をだしているのをみるとすごく嬉しい反面、ちょっと自分が少し脇役になってくるような感覚になるのかなぁと。なんとなく最前線ではなくなった感じ、ちょっと「あ、僕中心の物語じゃないのかもしれない」という感覚。子供出来たらそりゃ子供中心に生活はなるんですよね。仕事でもちょっと俯瞰してみる立場になって最前線でガンガンな昔とくらべるとちょっとさみしい。たまにそんなこと思うこともあるよねーっていう。
家庭や仕事の中心が自分じゃなくなっても人生の中心は自分だっていう感覚、結構大事だと思うんですよ。そのへんの話も出来たらなぁと思っています。
ターゲットは若者ではなくなった人たち
なので今回の発表内容は30代後半から40代のキャリアの話です。ターゲットももちろんメインはその層になると思いますがふじけんの例のように若者が聴いてもなにか持って帰れるような発表にしたいと思うので是非聞きに来てください!
2023 年買ってよかったもの
今年は夏くらいからキャンプにハマり始めてそれ系のものを買うことが多くなったのですが今回はそれ以外で買ってよかったものをまとめています。
Amazonベーシック 乾電池 アルカリ 20個セット
いままでエネループみたいな充電式の電池を使ってたんだけど充電式だと肝心なときに充電されていなかったりしてちょっと苛つくことがある。
今年になって子供のおもちゃで電池を使うものも増えてきてエネループ補充するのもなぁと思って電池買いだめしてみたら便利!
一回よく知らないメーカーの電池買ってみたらすぐになくなったり品質的に満足できなかったんだけどAmazonベーシックのは安定しているのでこれをとりあえず買うようになった。充電式よりストレス減って最高!。
サンワダイレクト フットレスト
椅子に座るとき、物書きをする人は前傾姿勢になるんだけど、僕みたいにキーボード使ってディスプレイ見る人は後傾姿勢にしたほうが腰にも楽なのです。
で、机を低めにしてキーボードを椅子の肘置きと同じくらいの高さにするとすごく楽なんだけど、僕の昇降机はそこまで低くならない。逆の発想で少し椅子を高くすると丁度いい高さになるんだけどそうすると今度は足が少し浮いてしまう(正確には浮きはしないんだけどちょっと違和感がある)
なのでこのフットレストを買ってみたんだけど思いの外よかった。足の位置が少し上になるのもそうなんだけど、いい感じに角度があることで椅子から少しづつおしりが前にずれてきてしまうのも防げて本当に楽になった。
サンコー モニターアーム用ポール
モニターアームはエルゴトロンの例のあれを使っています。
で、後継姿勢で座っていると顔は少し上を見るようになるんだけどすこしモニターアームの長さが足りない。のでサンコーのポール買ったらピッタリでした。ちょっと机の強度が気になったので補強プレートも一緒に買いました。
Anker Soundcore AeroFit
更に後傾姿勢になると椅子のヘッドレストに頭をつけることが多くなるんだけど、そうなると骨伝導イヤフォンの首の後ろをまわるグルッとした部分がじゃまになるんだよね。でも仕事中にAirPods Proとかは耳が塞がるのが嫌だなぁと思ってた。メインは仕事中かゲームやってるときに使うので
- 無線である
- 耳を塞がずに外の音が聞こえる
- 外に音がもれない
ことが大事。でノイズキャンセリングとかはいらないというのを考えて骨伝導にしてたんだけどよく考えると上記を満たせば骨伝導である必要はないことに気がついた。
Ankerの AeroFit は指向性のあるスピーカーで耳の穴に向けて音をとばしているので耳の穴を塞がないし外に音も漏れにくい。耳にかけるだけで振動もしていないので本当に求めている体験だった。
さらにマルチポイントに対応しているので複数機器に繋げられるのも便利!
Belkin 3 in 1 MagSafe充電器
iPhone 14 pro あたりから後ろのカメラの出っ張りがドンドンでかくなってきて立てかけるようなワイヤレス充電台に乗せるとちょっと浮くようになっちゃってきた(15 Pro で少し出っ張り小さくなった気がする)
なのでMagSafe充電器探してたんだけどApple公式認証していないと15wの最速充電が出来なくてなんとなく嫌なのでそれに対応していてAirPods ProもAppleWatchも充電できるの探してみるとあんまり選択肢がない。なので高いけどBelkinのこれにしたら台座の重量的にも安定していてMagSafe剥がすときも安心なので最高でした!
Anker PowerLine III Flow USB-C & USB-C ケーブル
すごく柔らかくクネクネしたUSB-Cケーブル、これは触ってみないとわからないと思うんだけどめちゃめちゃ柔らかいので持ち歩きのUSBケーブルとして最高だった。PD 100W対応しているけど映像出力は対応していないのでそれだけ注意(というか映像出力対応させるとケーブル太くなりすぎるよね。。。)
Anker Nano II 65Wと合わせてiPad ProとかMac Book Proとかの充電用に持ち歩いてます。
バッファロー BUFFALO USB3.2
仕事用に新しいPCを組んだ - 宇宙行きたい に書いたようにArch Linuxで普段は仕事しているんだけどたまにブートイメージ欲しくなるときがある。そんなときに使っているこれが地味に便利。なんとUSB-AとUSB-Cの口が両側についている。どっちでも使える!(普段はディスプレイのUSB-Cに挿しているんだけどのっぴきならないときはHHKを直接つなげてキーボードのUSB-Aに挿して対応したりしてる)
フォトフレーム ましかくフレーム
子供の写真は毎月ALBUS(アルバス)で印刷しているんだけど子供かわいいしアルバムに入り切らないどころか3倍位毎回頼んでしまうんだよね。公式の木のフレーム買って机の前に飾ってたりもするんだけどもっと飾りたい!とおもって探してたら出てきたのがコレ。公式じゃないんだけどサイズピッタリなので愛用しています。(公式で出してくれー)