beatsync.net

It's always Darkest before the Dawn

Navigation

beatsync.net (2014/03/04)

Google Spreadsheetに#FFFF00などと色コードを入れたら自動で背景色をその色にする

最近またストーリーテラー期が来ているので今日は小説調です。

—— あれは先週のことだっただろうか。会社でミーティングに出ていた私は、いつものようにMacBook Airに向かって手を動かしていた。すると、ディレクターとデザイナーの雑談が耳に入ってきた。

「じゃあこのセルにこのキャラクターの髪色を指定する色コード入力しておきますー」

「おねがいします」

「入力した色コードが間違ってないか、入力した色コードの色に背景色が自動的に変わればいいのになー」

「そういうのって自動で出来ないんですかね…」

あまりにも何気ない会話だったのでそのままスルーしそうになったが、よくよく考えてみればこれはエンジニアの出番だ。

ということで、そのまま会話を聞いてないフリをしつつ少し考えて、条件付き書式を使うことを検討した。しかしそれはダメだ。たしかに条件付き書式を使えば背景色を変えられる。ただし任意の色コードに対してその色を背景色にするという要求を満たすには、1677万通りの条件付き書式を作成する必要がある。そんなことは考えたくないものだ。

前職ではExcelマスターっぽい仕事もしていたのでExcelだったらどうするかと考えてみたが、やはりVBAを書くことしか思いつかない。Google Spreadsheetでもそれっぽいことが出来るはずなので、Googleで背景色を設定する方法を調べてみた。そのものずばりのものは見つけられなかったが、類似案件としてGoogle Spreadsheet 任意の文字入力時に自動で背景色を変更という記事が見つかった。

「これで行けるな…。」サンプルのスクリプトに目を通した私はそう確信した。

テスト用のSpreadsheetにスクリプトを貼り付けてスクリプトを加工して試行錯誤すること10分、動くものができたところでちょうどミーティングが終わった。私は、会議室から出て行くディレクターを無表情で呼び止めた。

「キッシュちゃん、ちょっと。」

「なんですか?」

「あのさ… ここにさ… こうしてさ…」「\ジャーン!/」

「おお! すごい!」

「あとで使い方教えます」

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

そのスクリプトが、これだ。

function onEdit(event) {
  rowColor();
}
function rowColor() {
  var range = SpreadsheetApp.getActiveRange();
  var col = range.getColumnIndex();
  var row = range.getRowIndex();

  value = range.getValue();
  if (value.indexOf("#") == 0 && value.length == 7) { // #xxxxxx で7文字!!
    range.setBackgroundColor(value);
    // 色の濃さを確認
    if (getChannelLevel(value) > 400) {
      range.setFontColor("#000000");
    } else {
      range.setFontColor("#FFFFFF");
    }
  }
}
function getChannelLevel(baseColor){
  baseColor = baseColor.replace('#', '');
  if (baseColor.length != 6){ return '#000000'; }
  var totalValue = 0;
  for (i = 0; i < 3; i++){
    channelValue = parseInt(baseColor.substr((i * 2), 2), 16);
    totalValue += channelValue;
  }
  return totalValue;
}

このスクリプトをコピーしたら、Google Spreadsheetのメニューから[ツール] → [スクリプトエディタ] と進み、新しいスクリプトを適当な名前で作成してエディタウィンドウにこのスクリプトを貼り付けて保存。Spreadsheetに戻ってどこかのセルに#FF00FFと入力すれば、自動保存の後自動的に背景色がピンク色になるはずだ。こうしてディレクターの悩みがエンジニアリングにより一つ解決した。

その日の帰り。電車で一日を振り返りながらこの件について今一度考えていた。

自分はエンジニアだからスクリプトを書けばそのぐらい解決できるだろうということは分かっていた。しかし、そう知っているのはよく考えてみればエンジニアだけだ。

ディレクター、デザイナーとエンジニアは持っているスキルが違う。自分は、自分が困ったときはエンジニアリングの力で解決してこれまで生きてきた。しかし、ディレクターやデザイナーはどうか。きっとエンジニアリングで解決できる悩みも解決できないまま、手のかかる作業を強いられている場面があったのではないだろうか。

「その程度だったらエンジニアリングで何とかなりますよ。」これは自分がこれまで多くのディレクターと話をするときに何度も言ってきた言葉だ。にもかかわらず、ディレクターやデザイナーが自動化できそうなことをがんばって手でやっている場面を目にすることは、やはり、ある。

自分の問題は、チームの問題。そう考えれば、チームで仕事をしているのであれば自分の問題や課題を共有して他のスキルを持ったチームメンバーの力で解決したほうがチームの力は強くなるはずだ。

もちろん、相談してくれるのが一番ありがたい。しかし、そもそもエンジニアリングでなんとかなるかどうかが分からないのであれば、そもそも相談するというアクションにつながらないのかもしれない。もしくは、自分の抱えている課題がチームの課題に対して小さいという考えもあるのかもしれない。しかし解決手段をエンジニアリングに求めるのであれば、解決にかかるコストを見積もることができるのはエンジニアだけだ。

やはり、「困ったときにエンジニアリングで解決できないか相談すること」と「エンジニアが立ち上がって自ら困っていることを聞きにいくこと」をそれぞれが行わなければ、個人の課題をチームの課題として解決することは出来ないのである。

もっと、もっともっとエンジニア以外の仲間たちが困っていることを聞いていかないといけないな…。そう内省した一日だった。

この物語はフィクションであり、登場する人物は架空の人物ですが、登場するスクリプトはちゃんと動きます。

Comment

beatsync.net (2014/03/02)

劇場版モーレツ宇宙海賊を観てきた

2014年最初の更新です。新年あけましておめで…あれ、もう3月なんだなぁ…。

さて今日は、タイトルの通り珍しく映画観に行ってきました。どのぐらい珍しいかっていうと本州にきて初めて劇場に映画観に行ったという感じです。最後に劇場で映画観たのは2010年末のノルウェイの森だったかな…。まだ札幌にいたころです。

そんなわけで珍しく映画を観たので珍しく感想を書いちゃうぞーと思ったんですが、その前に一つ注意。以下はあらすじは含まないですが結構マジメに書いた感想を含むので、感想書くのもネタバレだ! ネタバレは許さん!! という高エネルギー反応とともにタッチダウンしてきた方はそのまま超高速跳躍でお戻りください。

ちなみになんでモーパイ観に行ったのって話なんですが、滅多にアニメ観ないようにしてる(観るとハマって色々調べはじめて現実世界になかなか帰ってこなくなる)ぼくがたまたまうっかり2012年に全部観てしまったアニメがモーパイだからです。いやなんかMXとTVKで30分ずれて放送してたので、家に帰ってきてテレビつけてチャンネル回してると毎週モーパイを途中から観てしまうことがおおくて、これはもうちゃんと全部最初から最後まで観るべきだな! ということでマジメにTV版を観た感じです。

しかしなんでアニメ観ないようにしてるんですかって話なんですが、過去を遡ると14歳の多感な時期にエヴァを観てしまったせいでわりとひねた感じにサブカルに片足突っ込んだまま中学高校時代を過ごし、その後も友人に勧められたアニメをうっかり全部観てしばらく現実逃避したことが何度かありました。そりゃ防衛本能も生まれるってもんですよね! たぶんまどマギとかピングドラムとかマクロスFとかそのへん観てたらまた大分現実に帰ってこなかったのではないかと思います。そういえばエヴァもTV版は十数回観たのに新生エヴァはまったく観てないんです。たぶん完結編が出るときには観ちゃうとおもいますけどね…。

じゃ! ここから感想です。

今回は事前情報無しで観に行きました。副題もちゃんと把握してなくて「なんかINTO THE ABYSSみたいな感じだっけー」くらいだったので、新キャラの情報もなんも知らない状態でした。あ、ちなみにINTO THE ABYSSはROの原作の副題だったわ。

とりあえず主題歌から。ぼくの中ではモーパイ=ももクロっていうイメージが強くて、今日一緒に観に行った人が観る前に「主題歌がしょこたんなんですよねー今回」って言ってて「ええマジで!ももクロじゃないの!」とだいぶびっくりしてしまいました。

てか「さぁ海賊の時間だ!」に代表される茉莉香の勢いの良さにももクロはぴったりなのになーとちょっと観る前からテンション下がったのですが、そこは期待を裏切ってなくてオープニングの主題歌はいつもの無限の愛だったのでそれでめっちゃテンションあがりました。なんかこれ文章で書くとれもんさんテンション下がったり上がったりずいぶん感情の起伏が激しいようにみえますが、中のテンションが変動してるだけで外から見るといつも通りな感じです。

で、エンディングはそのしょこたんの曲でした。まぁ雰囲気壊したりはしてないから別にいいんじゃないかな…。でも、個人的にはももクロのLOST CHILDのほうが良かったとは思っています。だってLOST CHILDには歌詞に茉莉香と彼方が声を揃えて発したあのセリフも入ってるしさー。なんだかんだいってオレ無限の愛よりもLOST CHILDのほうが好きなんだよねー。あの冒険という日常がずっと続いていく感じがいいんだよねー。iTunesで再生回数観てみたけど無限の愛が235回、LOST CHILDは783回なので3倍くらいLOST CHILD聴いてた。

次は内容行きますか。内容ねー。1時間35分だからあんなもんじゃないかな! 別にこれは内容が薄かったとかそういう意味で言ってるのではなくて、やっぱ26話でトータル約10時間あるTV版があるのが前提としてあって、そこに+1時間半で追加エピソードをやるならあのぐらいが限界だなーと。

1時間半って長いような感じしますけど30分アニメの枠でいうと4話分の時間なんですよね。TV版で黄金の幽霊船編が7〜12話なので合計6話。これよりも短い時間で展開するストーリーなのでいろいろ端折られてる感じがするのはしかたない!

結果的に未知の敵が最初すごそうに見えたけど結局たいしたことのない敵だったみたいな感じになってしまっていた感じですが、それもまぁしかたないのかなと。どちらかというと強大な敵に立ち向かうというよりも味方側の登場人物が問題を解決するための引き立て役として敵の存在があるという感じでした。でもまぁいいんです。劇場版はTV版の登場人物達がほぼフルキャストで出てきてみんながそれぞれ活躍するっていう流れなので、その点が細かく描かれているおりだいぶ熱い展開でした。敵は積年のライバルとかじゃなくて新規の敵なので、別にそこを掘り下げる必要もないと思うし。

「だいぶ熱い展開でした。」ってサラッと書いてますが、ホントに観に行ってよかったわーって思ってます。具体的に何が熱かったかを書いてしまうとそれはちょっと盛大なネタバレになっちゃうのでそこまで書くのはやめておきますが、少なくとも熱くなってジーンとくるシーンが3箇所くらいはありましたね!

あとはなんかあったっけ。個々のキャラクターについての感想を書き始めるとキリがないのでそういうのは書かないとすると、書いておきたかったことはこんなもんかな。おねショタの話とかはまぁ別にぼくがしなくてもいいよね…。まぁけしからんと思う人もそれなりにいると思う。けしからん。

そんなわけで、モーパイ劇場版の感想の話はこれで終わり! とにかく満足度高かった。結局ぼくはスペースオペラが好きなんだなぁというのが再確認できた感じです。高校の頃その時やってたスタートレック(VOY)とかも起きてれば大体観てたので、そういうのを好む土壌はあるんだなぁという感じですね。スタートレック全部観たかったりするけどすごい時間を消費しそうなのでそれはあきらめております。

…とまぁ最近たまにポツポツとテクニカルなことを書くサイトに成り下がってましたが、なんか久々に自己紹介乙みたいな感じを交えつついろいろ最近観たものについて書くっていうのをやってみると自分も結構楽しめたので、また久々にこういうの書いていくかーと思いました。

Comment