自由に生きるのに必要な名前
いくつ名前があるのかと問われ、彼は「自由に生きるのに必要なだけ」と答えた。
◆
映画「ハウルの動く城」でソフィーの問いかけに答えるハウル。
元々児童文学育ちなので原作小説の「魔法使いハウルと火の悪魔」が好きで、大きくストーリー改変されてしまった劇場版に思うことがないわけではないけれど、劇場版ハウルのこの台詞は好きでずっと覚えている。
児童文学における名前の扱いといえば、ハリー・ポッターの「名前を呼んではいけないあの人」や、バーティミアスの魔術師は本名を呼ばれると魔術を無効化される世界観も思い出せる。名前に対するわたしの考え方は小中学生のころに読んだ児童書、海外のファンタジー小説によって育まれたのだと思う。
名前は存在を、キャラクターを縛る。
たとえば会話をするとき、大抵の場合はすぐ目の前に聞いてくれる人がいて、口に出した瞬間にその言葉は自分自身と強く結びつく。その積み重ねによってこう考え、こう話し、こう振る舞う、「この人はこういう人である」と理解していく。その理解した形を扱うための識別子が名前である。
ハリー・ポッターの世界の魔法使いたちはヴォルデモートの名前を呼ばないことでその存在に対する理解を放棄した。バーティミアスという悪魔に本名を知られた魔術師ナサニエルは、自らのしもべとして召喚した悪魔に対する支配力を失ってしまう。魔法とファンタジーの世界において、名前は存在そのものを理解するための最も簡単な手がかりになる。
だからこそ、もし名前を変えることができるならそれはつまり、別の存在になれるということだ。
ハウルは「魔術師ジェンキン」「魔法使いペンドラゴン」「恐怖のハウル」そして「ハウエル・ジェンキンス」の名前を持った。作中で、その理由は身元を隠すためだと語られている。とかげのしっぽのように、名前を自分から切り離すことで、いつでも逃げられるように。
社会に生きるわたしたちがハウルのように「自由に生きるのに必要なだけ」の名前を持つことは難しいけれど、インターネット上においては、こうしてリアルな自分自身と一対一ではない「わたしではない個人」の名前を持つことも簡単にできる。
だからこの場所は居心地が良い。誰でもない個人として認知され、自分自身のある側面を縛られることなく表現することができる。
いま人がインターネット上で持つアカウントの数は、それがその人にとって「自由に生きるのに必要なだけ」の名前の数なのだと思う。
Sinatra + ActiveRecordでアプリ作るよ
社内勉強会でSinatra + ActiveRecord + vue.jsのタスク管理アプリを作っているので、そこで困ったことのメモ。
今回はSinatra + ActiveRecordのサーバサイド。
このページを参考につくる。
SQLite3::CantOpenException: unable to open database file
$ bundle exec rake db:migrate rake aborted! SQLite3::CantOpenException: unable to open database file ...
DBのファイルが開けない。
ぐぐったらファイルやディレクトリのパーミッション周りが怪しいとあったので変えてみるも通らない。
パスの指定がおかしいのかな?と疑い出す。
berofe models/todo.rb
ActiveRecord::Base.establish_connection('sqlite3:///todo.db') class Todo < ActiveRecord::Base end
after models/todo.rb
ActiveRecord::Base.establish_connection( adapter: 'sqlite3', database: 'todo.db' ) class Todo < ActiveRecord::Base end
establish_connectionはハッシュで書く方法とURLで書く方法がある。
establish_connection (ActiveRecord::Base) - APIdock
DBのファイル作成
$ sqlite3 todo.db
このあたりをやってみたらふと成功。
$ bundle exec rake db:migrate == 20180201054009 CreateTodos: migrating ====================================== -- create_table(:todos) -> 0.0021s == 20180201054009 CreateTodos: migrated (0.0022s) =============================
書き方変えたからなのか、DBファイルを事前に作っておかなきゃいけないのか…。
理由がわからなかったのでまた今度試してみる。
Encoding::UndefinedConversionError - "\xE7" from ASCII-8BIT to UTF-8:
sinatraのほう
文字コードの変換に失敗。paramsで受け取った値に文字コード指定すると直る。
str.force_encoding('utf-8')
でOK
force_encoding (String) - Rubyリファレンス
パラメータ受け取った時に毎回これやるのはどうなのっていう話はある。うーん
When assigning attributes, you must pass a hash as an argument
これもsinatra
エラーメッセージをちゃんと読むとハッシュで渡すようにと言っているので、変更する
todo = Todo.new(params[:name])
↓
todo = Todo.new(name: params[:name])
エラーメッセージをぐぐるとこういう記事が出てくるので、時勢に乗り遅れていた説…
rails5.2への準備を整える - Qiita
Automatorで自動化する
「PDFファイルを一ページずつ画像ファイルに変換」
「画像のファイル名はプレフィックス+ページ番号にする」
みたいなことがやりたいときに使ったAutomatorのめも。
macOSにはAutomatorっていうめっちゃ便利なアプリがある。
ワークフローを作れるアプリらしいです。
みんな知ってましたか?わたしはこれを作るまで知りませんでした。
確か前はシェルでなんとかしてたんですが、用途的にinとoutのファイルやディレクトリの指定やらprefixの文字やら毎回変えたいというのもあり、Automator使ってみたら使いやすかった。
GUIって便利だなあと思いました
つかいかた
やりたいことを書き出す
今回はこんなかんじ
この最後の連番付きの名前にする設定がけっこう融通きく。
プレフィックスを前後どっちにつけるか、始まりの番号、区切り記号とか指定できる。
桁数指定しておくと0埋めしてくれるのがかなり良いかんじです。
で。これを実行すると
こうなる
わーい
たまにしか使わないんだけど、めっちゃ便利。
左のほうにアクションがずらずら並んでてかなり種類がある。今回の用途であればシェルでも全然できると思うんだけど、アプリの操作がいろいろできて、office系も強いので使い所によってはつよそう
自動化の選択肢の一つとして頭に入れておけたらいいなとおもいます
以上
たまにはコード書いてプログラマらしさを見せていきたい
エンジニアでよかったな
注意力がない。
最近なんとか普通に働いてるけど、逆にこれまでどう生きてきたのか?と思う。
3つ指摘されたら最後の1つしか覚えてないとかよくある。
先日もレビューの指摘コメントをなぜか見逃して2回言われてやっと気づいたりとか
んん
普通に働けていない気がしてきたんですけどね
社内チャットのタスク機能が弱くて、期限切れてもなにもしてくれないので困る!っていう話をしたらチームメンバーが通知ツールを作ってくれて、まあ、自分でつくってないんですけど、こういう解決法を取れるというだけでエンジニアでよかったなと思った。
そもそも土壌として意識じゃなくて仕組みでミスを防ごうという考え方があるのめっちゃよかった〜って感じる。
これがほしい!って言うのが一番得意(めんどくさいひとだ)
ツール作るのは好きだからもっと手が早くなりたい!
納期を見間違える
プライベートで、ものを作って納期までに提出するようなことをやっています。
もう2年くらいやってるのでだいぶ慣れてきたはずなのですが今回「納期を見間違える」という重大なインシデントを発生させてしまったためふりかえりをしたいと思います。
(ちなみに早めに間違えた方なので納期という意味ではセーフ。ただ勘違いしたまま作業したことでいろんな人に影響が出たので)
まあ単純に納期の日付を見間違えたのが原因なのですが
- 普段であれば数人チームでやっているため、他メンバーへの作業依頼の際に必ず確認している
- しかし今回は個人作業だったため最初の一度しか確認するタイミングがなかった
- 最初の一度確認した以降は、その際に入力したgoogleカレンダーで確認していたため見直すことがなかった
うーん。見直すくらいしかTryが出ない。
でも見直すという作業は実際必要だった
個人作業だと、どこかでこれはこう!って思い込んで進めてしまってると気づけない
ていうか思い込みが強いから一人でよくやってるけど
仕事でも仕様書→設計→実装→評価のどこかで取り違えが発生してるというのは普通にありそう。
サービス仕様書に対するST仕様、詳細設計に対するFT仕様がちゃんと対応してるかどうかとか
人が仕様こうです、って言ってそれでふーんてなる時あるけど仕様書は見よう OK
それにしたってミスったことに対する気持ちのダメージが大きい……
昨日までだと思ってたから時間捻出してがんばってきたのに……はあ…………寝よう
新年はここから始まる
今年の戦隊「ルパンレンジャーvsパトレンジャー」のルパンレンジャーの黄色を工藤遥さんが演じることになりました。モーニング娘。を先日卒業した18歳の美少女です。ハロプロ履修中のわたしにとっては娘。で一番好きな女の子でした。
2月11日からスタートです。みんな見ましょう。
www.tv-asahi.co.jp
同じく今年のプリキュア「HUGっと!プリキュア」の黃色、キュアエトワールの声を小倉唯さんが演じることになりました。好きな声優さんです。小倉唯さんはキュートボイスの天使ですが、変身前の輝木ほまれさんはクールなイケメン女子ということで、今作のゆいちゃんはカッコイイ演技で魅せてくれることも期待できそうです。
2月4日からスタートしています。みんな見ましょう。
www.asahi.co.jp
今年のニチアサはアツい。
というわけでアップを始めようと思い、数週間前からニチアサをリアタイしています。前にプリキュアのリアタイをしてたのは平日も休日もないような大学院生時代のことだったので数年ぶりのこと、社会人になってからは初めての試みです。
ニチアサは昨年10月から番組編成が代わり、朝8時半のプリキュアから始まり、仮面ライダーと戦隊のスーパーヒーロータイムへ続きます。以前であれば戦隊が7時半から始まっていたので、朝に弱いことに定評のあるわたしとしてはありがたい変更。
久々に見て思うけど、やっぱりプリキュアはすごい。本当にすごい。キラキラした女の子たちの物語に引き込まれる。
毎日意識がないまま目覚ましを止めているわたしですら一瞬で目が覚めます。
平日こそ毎日プリキュアを放送するべきなのでは?東京都在住・27歳会社員の心に住まう女児がそう言っています。
字面がつらすぎる。
まあそういうわけで、誕生日だったのでした。
チケットが用意されたので推しのラジオCD発売イベントに参加し、帰りに友達に祝ってもらいながらケーキを食べました。ラッキーでハッピーな一日でした。
dry runできるバッチづくり
dry run(ドライラン)で、データの書き換えをしないでバッチの動作確認をしたい!
どうする
例。
契約に対して状態ごとに値引きするバッチを考える。
初めて動かす時とかは
- 割引処理対象者は誰か
- いくら値引きするのか
などが正しく判定できているか、知りたくなると思う。
でも普通に動かすとデータが書き換わってしまう。
- 永続化される直前の状態が知りたい
- でも永続化はしてほしくない
→これを確認できるように、「ドライラン」できるメソッドを用意する。
イメージ
たとえばservice層でやることを以下の3つに分ける。
1. 各種リポジトリを呼んで、業務に必要なドメインを集める。
2. ドメインサービスを呼ぶ。ドメインサービスは1で集めたいろんなドメインを使って業務的な処理をする。
(ドメインサービスはドメイン層なので、リポジトリは原則呼ばない。)
3. データソース層呼ぶ。永続化。
DiscountApService.java
... public void run(Id id) { // 1.ドメイン集める Engagement engagement = engagementRepository.find(id); DiscountInfo discountInfo = discountRepository.find(id); // 2.集めたドメインをサービスに渡す DiscountEvent event = DiscountService.judge(engagement, discountInfo); // 3. 処理結果を永続化する save(discountInfo, id); sendMail(discountInfo, id); } // ドライラン public DiscountEvent dryRun(Id id) { // 1.ドメイン集める Engagement engagement = engagementRepository.find(id); DiscountInfo discountInfo = discountRepository.find(id); // 2.集めたドメインをサービスに渡す DiscountEvent event = DiscountService.judge(engagement, discountInfo); // x.永続化はしないで処理結果を返す return event; } ...
こんなかんじのイメージ
1と2だけをやるメソッドをドライラン用に作っておけば、本番環境でもデータを書き換えず、安全に動作確認ができる。