感情的ドリル

Ruby県から飛び出して関東にきたオタク

落合さんと矢野さんの先輩コンビの話

この記事はSHIROBAKO Advent Calendar2018の11日目の記事です。「大分先のことだろう~」と思ってたらもう11日目なんですね。0時ちょうどの投稿じゃなくて申し訳ないです。愛は込めます。許してね。

adventar.org

SHIROBAKOってたくさんのコンビがありますよね。
監禁される監督と監禁するナベP、同じ会社で働くみゃーもりとえまちゃん、みんなを見守る社長と興津さんとか。

コンビやトリオを上げていくときりがないんですが、今日は頼りになる先輩コンビ、落合さんと矢野さんについて取り上げようと思います。おそらく本人たちは「コンビ? ないない」「ありえんな」と拒否することでしょう。

落合さんについて

去年のアドベントカレンダーでも書きましたが、落合達也さんのことが好きになりました。不愛想だけど気遣いと仕事のできる人でかっこいい。
途中で転職して本編からは消えてしまうんですが、時折頼られるシーンがありますよね。好き。
スターリングラードなんで」とか無表情でボケる。元ネタは分からなかったので今度見てみます。

矢野さんについて

ほかの部門との橋渡しをしてくれたり、テンパったら羊羹くれてカウンセリングしてくれる頼りになる先輩ですよね。矢野さんのおかげで4話がどうにかなったし。
去年のアドベントカレンダーでも書きましたが、お父さんが倒れて休職して、途中で消えてしまいます。
背格好はちょっと子供っぽい(失礼)なのに周囲をよく見て仕事もきっちりこなして、引継ぎもスムーズ。大好き。

共通点

  • 頼りになる先輩
  • 優しい支援
  • 途中でいなくなる

頼りになる先輩

落合さん、移動が必要な段階になったら路線の確認をしれっとしてくれたり(「中央線また人身で止まってる」1話かな?)サーバーの環境をずっと追いかけてたり。
「自分の仕事に関わるから見てただけ」とかいって素直に褒められてくれないけど、大局的に現場を見つめられる素敵な先輩だなーと思います。
落合さんが退職するとき、話数がスライドしても狼狽えることなく引継ぎを始めるのが矢野さんです。すんなりと受け入れられることでもないはずなのになあ。狼狽えない先輩がいるだけで現場は安心できますね。
自分が職場でこんな動きを出来ているだろうか。
一年ぶりにSHIROBAKOを見ると、自分が今誰のような立場にいるのか、見つめなおす機会になって身が引き締まるような、空しくなるような…。口だけの人間になってないかな。ちゃんとした先輩で居たい。

優しい支援

落合さんは業務上のサポート、矢野さんはメンタルのサポートが目立ちます。
別に落合さんがメンタルを支えてくれないわけじゃないし、不愛想に後輩を拒否する酷い先輩でもないし、リア恋に落ちる後輩絶対いたでしょう…。私だったら恋に落ちてる。まあ、落ちてるからこんな記事を書いているんですけどねー。
矢野さんはいつだって気にかけていてくれていて、「どうした?」「今は何が出来るの?」と宮森に考えをリセットさせる時間を作ってくれます。その作り方を、宮森はちゃんと自分の身に落とし込んで強くなっていく。
太郎と宮森と落合さんと矢野さんが揃うと、ふとした時の雑談が柔らかいですよね。その空気を形作っているのは先輩である二人の優しさだとおもっていて、アニメ本編で描かれていない、もっと平和な頃(えくそだすっ!が決まった時期とか)は「卵焼きは甘いだろ」「出汁でしょ」「食えればなんでもいいっすよ~」とか、中身のない会話が飛び交っていたんだろうな、と勝手に妄想が膨らんでいきます。
太郎の横暴な言動に怒ることも注意することもなく、個性として受け止めてキャッキャ会話できるの、マジ話としてめっちゃ優しくて素敵な先輩ですよね。

途中で居なくなる

退職と休職、形は違いますが二人ともプロジェクトから一旦ドロップアウトします。
「忙しい時にごめん」「こんな時に抜けてごめんな」と二人は宮森にやさしい言葉をかけていきます。
これを共通点としていいのかはわかりませんが、好きなキャラクターが本編の筋から姿を消すので辛い気持ちになったことをよく覚えています。
二人がそれぞれに居なくなったことはダメージだけど、クリティカルに何かの穴を作っていくことはありませんでした。仕事の全体像がつかめていて、何をどう残せば他の工程に迷惑を掛けずに済むのか。何があれば後輩が仕事を覚えられるのか、明日の自分が記憶をなくしていても仕事が出来るか。身内向けの情報の共有が上手い人になりたい。

もともと漢気があるところが似ているのかなーと思っていたんですが、誠実さが似ているのかもしれません。自立したまま頼り合うことのできる関係性って素敵。

おわりに

最後に好きなところの話!私が二人のシーンで一番好きなのは阿吽の呼吸です。
きっとわかっている人は分かっているでしょう、好きな会話を引用して記事の終わりとしたいと思います!

イデポン回~~~!!みんな好き

「俺はお前みたいな猛獣使いじゃないし」
「猛獣使い?!」
「確かにな」
「みゃーもりは飴と鞭、持ってるよね」
「そうですかぁ?」
「それは誰もが持ってるわけじゃないから」
「宮森は向いてるよ、制作」
「よっイデポン宮森」

一身上の都合の回

「すまん宮森。放送終わるまで見守りたかったんだけど」
「いえ」
「それと、最終話の担当って、いわゆる等価交換だから。小さな名誉と大きな地獄の」
「えっそうなんですか!」
「でも一回やれば自信になるから。進行経験としてはオススメ」
「何がオススメなんだか。鬼畜だね、落合は」
「分かってるよ。マジスマン」

以上、派手なドライブ描写に怯える @sakahukamaki でした。

余談
今年は「刀使ノ巫女」というオリジナルアニメーションにどっぷりと浸かりました。SHIROBAKOアドベントカレンダーを切欠にSHIROBAKOを見た私がいたように、だれかが刀使ノ巫女アドベントカレンダーを切欠に刀使ノ巫女に興味を持ってくれたら嬉しいなと思っています。
今のところ舞台版のことばっかり書いているんですが、今日からは真面目にアニメの話も書いていくので、どうぞよろしくお願いいたします。

adventar.org

Ansibleの git cloneがいつまでたっても進まない

どういう状態か

  1. Ansibleで他環境の構築をしていて、
  2. 特定のリポジトリをcloneしているとき
  3. いつまでたっても進まない
- name: git clone
  command: git clone <repository>
  args:
    chdir: <project dir>
Host xxxx
  IdentityFile ~/.ssh/xxx

諸事情あってgitモジュールを使っていない。

今回の原因

Ansibleで見に行っている先のサーバから、cloneしたいsshサーバにアクセスしたことがなかったので以下の状況で止まっていた。

Are you sure you want to continue connecting (yes/no)?

対応1

Ansibleで見に行く先のサーバでsshの接続確認をする。 サーバが複数ある場合は非効率。

ssh -T xxx

対応2

~/.ssh/configを修正する。 これでも問題はないけど、known_hostに入ってないよみたいなメッセージが出てくる。

Host xxxx
  IdentityFile ~/.ssh/xxx
  StrictHostKeyChecking no

Dockerで動くGitLabのpostgresからsnippetsの一覧を取得する

なにがしたいの

  1. Dockerで動かしてるGitLabのsnippetの一覧が欲しい
  2. Where are the snippets stored? (#21946) · Issues · GitLab.org / GitLab Community Edition · GitLab
    「snippetsどこにあるの?」「DBのsnippetsテーブルにあるよ!」
  3. SQLを叩いてサッと取得したい

どうするのか

# host
docker exec -it <name> /bin/bash

# docker (root)
su - gitlab-psql

# docker(gitlab-psql)
psql -h /var/opt/gitlab/postgresql/ gitlabhq_production

# postgres
\d snippets

SELECT 
  users.name, 
  snippets.id,
  snippets.title
FROM
  snippets
LEFT JOIN
  users
  ON users.id = snippets.author_id
;
gitlabhq_production-# ;
   name   | id |                                            title
----------+----+----------------------------------------------------------------------------------------------
 hogehoge |  1 | vimrc
 hogehoge |  2 | vagrantfile
 hogehoge |  3 | vagrantfile
 hogehoge |  4 | zshrc

おわり

参考

daemonize なpumaのpidが行方不明になる時のメモ

前置き

メモだよ

現象

設定ファイルがこう。

tmp_path = "...."
deamonize
stdout_redirect "#{tmp_path}/logs/puma.stdout.log", "#{tmp_path}/logs/puma.stderr.log", true

systemctl stop pumaでも死なないしもちろん systemctl restart pumaもできない。

結論

pidfileの設定もしましょう。

tmp_path = "...."
deamonize
stdout_redirect "#{tmp_path}/logs/puma.stdout.log", "#{tmp_path}/logs/puma.stderr.log", true
pidfile "#{tmp_path}/pids/server.pid"

jQuery UI Datepickerで西暦を表示しないようにする

別の入力欄で和暦を選択している場合、Datepickerで西暦を表示すると矛盾が生じる場合がある。ちょっと気持ち悪いので見せないようにしたい。

前提

既にDatepicker(jQuery ui)を導入していること。日本語化していること。

ちなみに私の環境はRailsなので、こうなっている。

//= require jquery-ui/widgets/datepicker
//= require jquery-ui/i18n/datepicker-ja
//= require_tree .

$(document).on('turbolinks:load', function() {
  $('.datepicker').datepicker({
    dateFormat: 'm月d日',
  });
})

修正前

f:id:ayakufe:20211125213805p:plain

修正内容

js側で修正。

 $(document).on('turbolinks:load', function() {
   $('.datepicker').datepicker({
     dateFormat: 'm月d日',
+    yearSuffix: ""
   });
})

CSS側でも修正。

+.ui-datepicker-year {
+  display: none;
+}

修正後

f:id:ayakufe:20211125213822p:plain

参考

アカウント消しにくいサービス&メルマガ停めにくいサービス

ということがあった。使わなくなったpixivアカウントを消そうとしたときの呟きである。

別に、「ユーザーに優しくなれ! 必ず直せ!」というわけではないんだけど、顧客を逃すまいと必死にしがみついてると無駄に嫌われるんじゃないのかな…とは思う。というか一瞬嫌いになった。

ヘルプから辿らないとたどり着けない退会リンクとかが辛い。ただひたすら辛い。

 

メルマガ配信停止のほう。Pontaなんちゃらってのが毎日来て辛いんだけど、配信停止のためにログインするには、PontaカードIDが必要とかで設計がクソ。そこにユニークなメールアドレスがあるじゃろ…つらみ…つら…。

どこのサービスだったかさっぱり忘れたんだけど、「配信停止はこちら!」のリンクを踏んだら配信停止手続きが終わってたサービスがあった。リンクに個人の情報を突っ込んで配信停止のアクションへのリクエストが完了するようになってたんだろうなあ、と思う。そういうの最高。

Rとかで仕方なく買い物をした後、無言で「××メルマガを受信する」みたいな選択されてて、翌日からひっきりなしにメールが届くのもつらい。じゃらんもそうだけど、しれっと自分のサービスのユーザーを無言で増やすのやめてほしい。

 

落ちなどない

carrierwaveを利用したファイルアップロードで確認画面を挟む

tl;dr

carrierwave + 確認画面 = retrieve_from_cache!

どうかくのか

確認画面を挟まないnew~craete~show~edit~updateの流れが出来ている前提。つまりcarrierwave導入済みの状態を前提とする。

view

<%= form_with ... do |f| %>
  <%= f.file_field :upload_file %>
<% end %>
<%= form_with ... do |f| %>
  <%= f.hidden_field :file_cache_id, value: f.object.upload_file.cache_name %> <%# 追加 %>
<% end %>

model

class Document < ApplicationRecord
  belongs_to :article
  attr_accessor :file_cache_id  # 追加
  mount_uploader :upload_file, DocumentUploader

controller

class ArticleController < ApplicationController
  def create
    article_params[:documents_attributes].each do |key, value|
      document = @article.documents.find { |d| d.id == value[:id] }
      document ||=  @article.documents.build
      document.upload_file = nil
      document.upload_file.retrieve_from_cache! value[:file_cache_id]
    end
    @article.save!
    ..... # 以下略
  end
end

memo

どこのタイミングでやるのがいいのか判断に迷ったのでしれっとコントローラに混ぜてしまった。nested_attributesだったりする特殊なコントローラなので素直にやればparamsをeachでこねくりまわす必要もないと思う。PJ内のコードから一部抜き出してそれっぽくしただけなので動かないかもしれない。その時は編集リクエストなどで修正をお願いしたい。

あとがき

日本人(特に歴史のある団体)というのは確認画面を重視する。確認画面より編集しやすいUIが必要なのではないかとは思うがそこは主旨から外れるので置いておくとして、これ、マジでいるのかな…と思いながら作っている。