みきとPさんに誘われてボカロ同創会に行ってボカローーーーーーーーーーーーー!!!!!!!!!!!!あ”あ”x”ア”ァ”ァ”ァ”ァ”!”!”!”!!1ってなった話”

日本語の体をなしてないタイトルを許してくれ。

dorikoさん

乾杯を終え混み始めた席から追放(?)されぼっち(?)をされていたところに勇気を振り絞ってワイ一言

「あのぉ〜、dorikoさんってなんでトランス作れるんですか?」

「は?」

「ぼくunformedのトランスの曲めちゃくちゃ好きなんです!」

「(ちょっとココ座りな、という感じですっと隣の椅子を指さす)」

マジで謎のツカミだった。。。(unformedはdorikoさんのメジャー1stアルバム)

雪ミク2016のテーマソング好きです!な話とかクリプトンさんのお仕事がほしい話とか最近のボカロは難しいねぇな話とかした。dorikoさんの時代は、趣味が高じてボカロ曲作ってたら伸びたンゴwみたいな世界観だったんだけど、今の感じだとアーティストアーティストしていかないとダメじゃん?そこ大変だよね。肩の力抜けばいいのになー。って言われてはっとした。
ぼくはdorikoさんの曲なんでも好きなんだけど、通勤快速とかぶちぬけ!2008!とかクッソ好きで、今ボカロに足りないもののひとつに「電波」があると思っていて。電波じゃなくてもなんでもいいんだけど、これ知ってればみんなで繋がれる!ってものがなくて。今電波じゃ伸びないもんねって合意を得てしまったが、久しぶりになんとかしたいなーいうモチベーションが復活した。

自撮り撮りたいですって言ったらフリ素だからいいよ!→えっdorikoさんとお話した!ってツイートしていいですか?→いいよ!!って言ってくれて仏かな????????って感じでTake a selfyした(死ぬんじゃねぇぞお互いにな的に)

halyosyさん

お隣で話してる方(誰かわかんなかった...)とオレコミュ障なんだよな〜っておっしゃってるのを聞いて勇気を振り絞って「ぼくもコミュ障なんですけどォ〜wwww」って言ったらいけた。すかさずabsorb時代から大ファンですって言って、すかさずヒゲドライバーさんのHello, Windowsにボーカル乗っけたやつが本当に大好きです!って言った。うぜえファンだ。そしたらノってくれてとても嬉しかった。桜ノ雨のときちょうど中学生だったから、卒業式で歌いたいって言ったけど旅立ちの日に負けたって話ウケてよかった(?)w

小林オニキスさん、ryoさん

オニキス先生はニコニコ超会議のマジカルミライ2017ステージの楽屋で意気投合して以来の顔合わせで、おぉー!って感じでご挨拶させてもらえた。ryoさんと話してみたいンゴ...って伝えたら「んじゃ行こうぜ!!」って言われて「後ろから見守ってます!!」つったけど、オニキスさんががっつりryoさんにこうこうこういう人って説明してくれて神だった。そういう人です〜wって言って、中学時代に家族みんなでバラエティ番組見てるところをぼくだけワールドイズマインに衝撃を受けてひとりウォークマンで聴きまくっていた話と、kzさんとか八王子Pさんの最初の頃の曲みたいなのがやりたいのに、EDMだったりTrapだったりが流行って辛い〜っていう愚痴を吐いたりした。有名Pに何を言っているんだ俺は。マスクをあごにかけて終始はにかみなryoさんは現世に舞い降りた神という威厳をたたえていた。

のぼる↑Pさん

以前なんかの方のギターにサインされていたときに何故か一緒にぼくのサインが入っているという怪奇現象(怪奇現象ではない)に遭遇していて、同じギターにサインしていた者です〜とか言ったりした。すっげー柔和なお方でマイナスイオン出てた...。終始謙遜されていたのでのぼる↑Pさんの良いところ1000個ぐらいぶちまけておいた。

GYARIさん

セヤナ〜〜〜〜〜〜〜〜〜〜〜
ソレナ〜〜〜〜〜〜〜〜〜〜〜
ソヤナ〜〜〜〜〜〜〜〜〜〜〜

超良い方だった。
ジャズできるようになりたいって言ったら逆にポップス書けるようになりたいって言われてなるほどみがあった。 十人十色に輝いた日々が胸張れと背中押す(教室の窓から桜ノ雨的に)

とくPさん

ガルニデの新譜のPoppin’ Tripが最高過ぎてどうやったらあのドロップかけるんですか!!!!!!!!!!!!!(※コラボだからとくPさんは書いてないけど!!!)って言ったらめっちゃのってくれて嬉しかった。あとぼくのこと知ってるみたいで嬉しかった。これに関してはインターネットにはブン投げられない感じの超絶本質情報がお聞きできてとても収穫があった。ありがとうございます(;_;)あとYouTubeDTM動画見てるのはマジで時代遅れだよwって言われたのがグサッときた。すごい人から直接話聞くのがいちばんじゃのー。あとはARiAのオリジナル版とEXITのコンピ向きに書いたやつ版を比べながら聴いてます!!!!って言ったら若干引かれた。やったぜ。
蛇足だけど一緒にいたのぼる↑Pさんがポッピントリップってカタカナでググってて全然検索結果引っかかってなくてちょっと草生えてしまった。かわいい。

みなと(流星P)さん

あんまうまく言ってないのよね〜って感じ言われたのでアンビバレンツカッコいいじゃないですかwって300回ぐらい推しといた。
Soarの次になるようなヴォーカリオンの歴史を刻む曲が作りたいです!って宣言してしまった。
有言実行の男になるぞ俺は。

buzzGさん

高校生時代チャリ通のときに組んでたボカロプレイリストにアルビノとかくれんぼをずっと入れて、BPMに合わせてペダルを漕いでました!!!!!!ってやっと本人に伝えられて感動した!!!!!!!!!!!ただの厄介じゃねえか!!

ピノキオピーさん

曲を聴くときにめっちゃ分析してますって言ったらそんな肩の力入れんでええんやで...?みたいな感じでなるほどとなった。ピノキオピーさんはすろぉもぉしょんでアッソーレ!アーヨイショ!みたいな特徴的なコールがある曲とかあって、マジカルミライみたいなライブのシーンでそれがすごい楽しいよね、お客さんもペンラ振ったり声かけて楽しみたいよね、で自分はそういうコールをあまりうまく入れられないからめっちゃ参考にしてますみたいな話をした。
もともと漫画家で、ボカロは趣味で現実逃避のためにやってたみたいな感じとのこと。自分もそうだなー。

みきとPさん

ロキロキだった。
前半でぼっちしてるときにビュッフェでメシすくってるところを話しかけてくれて「ぼっち?」「ぼっちです」「俺もぼっちの頃あったしそんなもんよ」って感じの話をしてそうなのか〜〜〜〜〜(????)ってなった ぼくもロキロキになりたい。

ミスミさん

去年のマジカルミライでDJステージあったりクリエイターズマーケットのスペースがとなりだったりしたので親近感がわいてる。
カニコ出られるとのことなのでありったけのガッツを注入しといた。かませ〜〜〜!!!

アカサコフ(にいとP)さん

スーツのコスプレしてた(お仕事お疲れ様です)
AHS周りの話お聞きできて楽しかった。ボカロマケッツ頑張ってくださいー!

は〜〜〜〜クソヒヨったけど思ったよりなんとかいろんな方とお話しできました。

ボカロを聴き始めたのは中学生の頃で、ほんと青春時代全部ボカロに捧げたようなヤツだったので、あの場にいられたことはなんというか天上世界を垣間見た気分でした。
リスナー出身ボカロPとして、いろんな思い出を大切にこれからもぼくはボカロ界隈で生きていきます。

以上現場からお伝えしました。

Google App ScriptでGoogle Spreadsheetの検索→置換を配列に定義したルール分繰り返す

function main() {
    var sheet = SpreadsheetApp.getActiveSheet();
    
    var replaceRules = [
      ['対象語', '置換後'],
      ['hoge', 'fuga'],
      ['bar', 'baz']
    ];
  
    for ( var i = 0; i < replaceRules.length; i++ ) {
      replaceInSheet(sheet, replaceRules[i][0], replaceRules[i][1]);
    }
}

function replaceInSheet(sheet, to_replace, replace_with) {
  var values = sheet.getDataRange().getValues();

  for ( var row in values ) {
    var replaced_values = values[row].map(function(original_value) {
      return original_value.toString().replace(to_replace, replace_with);
    });
    values[row] = replaced_values;
  }

  sheet.getDataRange().setValues(values);
}

TwitterKit (iOS) をCarthage経由で使おうとしたらセッションが毎回破棄されてつらい

題名どおりで、本当にCarthageのせいかどうか調べてないけど、元がオブCのままだったりするのもあるしセッションが関係しててデバッグがしんどい。

しぶとくググっていたら Twitter Kit iOS purges all sessions every time the app is launched - Twitter Kit SDK - Twitter Developers ここらへんにそれっぽい人を発見したので今CocoaPodsを入れようとしてるけどSpecs.gitが重すぎてむかついている。ログインしたのにセッションが保存されてねえぞな方は確認されたし。

メールって何て言ったら良いかわかんない時あるよね、特に同人活動

同人の人たち(特に学生さんとか)ってメールの文言で参考にするものがないと思うので
自分がよくメールの時に使ってる文言をちらり。

一応Web系とかデジモノ系会社に勤めてまして、マーケティングの人たちがメールしているのが
メーリングリストで回ってくるので、そこで使える単語をちょくちょく盗んでおります。

メールの文体なんてどうでもいいと日本語にうるさい方はブラウザバックしてくれ

初めてメールする時

初めてご連絡させていただきます。 私は初音ミク等を用いた楽曲を制作しているkeiseiと申します。

いきなりメールする時

突然のご連絡で失礼いたします。

お世話になってる人からメールが来た時 or 送る時

「大変お世話になっております。」「いつも大変お世話になっております。」

話し始め

「掲題の件」というタームが使いやすい

ほとんど「掲題の件承知いたしました」「掲題の件確認させて頂きました」で始めてる気がする

嬉しい時

仲良くなってきたらそのまま嬉しいですでいいけど
最初の頃は感無量ですとか大変感激いたしておりますとかにしておくと
ジェントルマンなアトモスフィアを出せると思う
マジカルミライ2017の公募に受かったときはこんな感じで送りました
(今は何度かお会いしているので嬉しいです!って普通に返しちゃう)

「お声掛け頂き嬉しいです。」「お誘い頂き嬉しいです。」
「ぜひともご協力させて頂きたく存じます。」「ご尽力させて頂ければと存じます。」

耳寄りなお言葉を頂いた時

「ご助言ありがとうございます」

申し訳ないことする時

ブシツケというターム

「ただ〜〜〜するのが困難でして、不躾なご対応となり申し訳ないのですが、○○○とさせて頂きたく存じます。」

確認する時

いかがでしょうか

OKな時

ご確認させていただき、問題ございませんので引き続きご進行のほどよろしくお願いいたします。とか

「ご提示頂いた日取りおよび条件にてご承諾させて頂きたく存じます。」
↑日時、ギャラなどの条件を確認してることをちゃんと言う

進めてほしい時

「何卒よろしくお願いします。」でいいんだけど、「ご進行お願いいたします。」ってタームが好き

後でする時

「追って」

「追ってご請求書の方お送りいたしますので、ご確認の上ご査収の程何卒よろしくお願いいたします。」

すぐにやる時

「程なく〜〜〜いたします」

言葉としてはかなり軽いからあまり使わないかな

連続で送ってしまった、送ってしまう時

サミダレというタームが便利

「五月雨で恐縮ですが」「五月雨で申し訳ありません。〜〜〜」「五月雨にて失礼いたします」

返事がほしい時

「お忙しいこととは存じますがお返事頂けましたら幸いです。」

めちゃくちゃ返事が早く帰ってきた時

「迅速なお返事、誠にありがとうございます。」

とりま反応だけしたい時

そんなにメールに内容がない時に使う

「取り急ぎご挨拶まで。  何卒よろしくお願いいたします。」

「取り急ぎお返事まで。」

相手の会社さんにブチアゲてほしい時

「今後とも貴社の益々のご発展を心より祈念しております。」とかなんじゃねえの

Swift2年目の初心者でもRxSwiftでポーリングが書きたい!

欲張りな子ね。

クラスの中に以下を記載しておく。

import RxSwift
import RxCocoa // もしかしたら必要ないかも?

private var polling: Disposable?
private let hoge = Variable<Hoge?>(nil)

そしてこんな感じ。
APIのリクエストの仕方とかはよしなにしてください。

let interval = Observable<Int>.interval(10, scheduler: MainScheduler.instance)
self.polling = interval.subscribe(onNext: { [weak self] _ in
    guard let `self` = self else { return }
    HogeRepository().fetchHoge().subscribe(onNext: { [weak self] result in
        guard case .success(let hoge) = result else { return }
        self?.hoge.value = hoge
    })
    .disposed(by: self.disposeBag)
})

ポーリングは書きたくない

Interface BuilderでUIView.layer.cornerRadiusを調整できるようにする

qiita.com

今までは ↑ ここのコードを参考にやっていたけれど、drawメソッドをオーバーライドするのが非常にしんどいなぁと思っていたら別の場所で良いの見つけたのでメモ

@IBInspectable var cornerRadius: CGFloat {
    set{ layer.cornerRadius = newValue.cgColor }
    get{ return layer.cornerRadius }
}

以上。クソ楽!代入してしまえばいいんだよね。
メインスレッドで動けば大丈夫だと思う(パッと見大丈夫に見える)。

最近イケてると思ったiOSアプリ開発のパターン

UIApplication.shared.delegate as! AppDelegate やめる

static var shared: AppDelegate? {
    return UIApplication.shared.delegate as? AppDelegate
}

コードでAutoLayoutの制約をつける簡易メソッド

func bindFrameToSelf(subview: UIView) {
    // この中で縦横のAutoLayout制約を宣言
}

bindFrameToSelf(subview: hogeView)

アプリで表示する文字列を列挙子にまとめる

struct Strings {
    enum Home: String {
        case title = "ホーム"
        case welcome = "ようこそ"
    }
}

ってやって、ViewControllerで

self.title = Strings.Home.title.rawValue
welcomeLabel.text = Strings.Home.welcome.rawValue

とかやると文字列を気にしなくて良いので気持ちが楽

このそれぞれにさらにStringLocalizableみたいなプロトコルに対応させるようにすれば言語対応ができる

アラートを表示するメソッドをAppDelegateに書く

いままで

let ac = UIAlertController(title: "アラート", message: "アラートです", preferredStyle: .alert)
ac.addAction(.......省略......)
self.present(ac, animated: true)

みたいなやつを色んなところに書いてしまってた。これをやるメソッドをAppDelegateに書いてしまうと気持ちが楽。

func showAlert(withTitle 
    title: String = "アラートタイトルの初期値",
    message: String = "アラート内容の初期値",
    buttonTitle: String = "ボタンタイトルの初期値",
    handler: (() -> ())? = nil) {
    
    DispatchQueue.main.async {
        // ① 一番前のViewControllerなりWindowを得る
        // ② アラートや自前UIViewを作る
        // ③ VCやWindowにaddSubviewしたりpresentしたりする
    }
}

読み込みウィンドウをAppDelegateで保持しておく

private var progressWindow: HogeProgressWindow?

private func setupProgressWindow() {
    // prepare view
}

このウィンドウを、APIClientのコネクション数に応じて表示/非表示させれば良さそう

RealmのマイグレーションIDを日付にする

Realmのスキーマバージョンを日付にすると管理が楽になる?(かも?)

APIClientの結果を必ずRealmにぶち込む

ローカルにぶっこんどいておくと便利なエンティティとかはやっておく

APIClientが通信しているとき必ずprogressを回す

Alamofireとかがデータリクエストをするところの最初でインジケータを回してしまえばいい。VCとかで考える必要がなくなる
post, put, deleteリクエストのときは画面暗くして一時的に操作不能にするとかそういうのもここで突っ込んでしまうと気持ちが楽

viewにまつわる操作をしたかったらAppDelegateにapiCountみたいな変数を生やしておいて、APIClientからそこをインクリメントしたりデクリメントするメソッドにアクセスして(apiCount自体はprivateで宣言しておいた方が良い気がする)、AppDelegate側でそれを監視してビューの出し分けをすれば良い

アセットファイルを画面ごとに分ける

.xcassetsファイルは何個も作れるらしい
親でResourceフォルダみたいなのを作って、そこに画面.xcassetsとかで作ってあげるとよさそう

リリースビルドでは出ないprintメソッド

class Debug {
    class func print(_ items: Any..., separator: String = " ", terminator: String = "\n", function: String = #function) {
   #if DEBUG
        Swift.print(Args(args: items, separator: separator), separator: ......)
   #endif
    }
}

あとはそもそも Swift.debugPrint とか Swift.dump とかあるみたいなのでそれも適宜調べてみて