YADOKARI

スプレッドシートでプログラミングを効率化する

複雑な条件分岐などをコーディングする時は、スプレッドシートを使って効率化しましょうというお話です。また、10年以上のExcel派だった私が、Googleスプレッドシートにやられてしまったということも書いています。
アドサイクルでは、様々、複雑な条件を使って、プログラムを書かなければならないことがあります。
しかも、結構頻繁にその内容が変わるのです。
こういうコーディングが必要な場合、よくExcelやスプレッドシートを使って、コーディングをしています。(たまにですが)

具体的には、こんなイメージです。
これはサンプルですが、実際もこんなイメージです。SQLや条件式などで使う場合に、こんな感じで整理すると、漏れなく、可視化しながら、正確なコーディングができると思っています。
If文を書きながら考えていくと、漏れたり、見落としたり、同じ条件をコピペで作ってしまっていたりして、バグが多発しますが、スプレッドシートを使う方法は結構おすすめです。
こういうのをたくさん作って、ちょっと分析用にSQLを色々叩けたり、コードを整理したりしています。

そのツールとして、普段はいつもExcelを使っています。私自身が、Excel VBAの開発も行ってきたので、色んなことができるからと思っていたのです。
Googleスプレッドシートが出てきても、便利なところはあるにはあったのですが(共有や共同編集は最強だと思いましたが)、これまでの作ってきたパーツもありますし、スプレッドシートをメインで使うことはなかったのです。スプレッドシートでできてExcelでできないことがないと思っていたからです。

しかし、最近、ちょっと触っていて、Googleスプレッドシートでしかできないことを2つも立て続けに発見してしまったのです。
(1)関数による正規表現置換
ただ、少し前からWindowsをやめ、MacをメインPCで仕事をするようになってからというもの、VBAは重すぎて、そして使い勝手が悪すぎて、ほとんど新しく作ることは無くなっていました。最近更新されて、少し使いやすくなったようだったので、また必要があれば使おうかな、と思っていたのです。
そして、その機会が訪れました。先ほどのような計算式を使っていた時に、どうしても正規表現置換をしたくなったのです。Excelではできなさそう・・・、と思ったら案の定できなかったのですが、じゃあ、書いてみよう、と思ってネットで調べて見ました。
アドインで置換するといのはあるみたいだったのですが、今回は毎回変わるようなものなので、関数でやりたいです。
早速以下のサイトを見つけ、書いて見ました。
Sub macro1() 'RegExpオブジェクトの作成 Dim reg As Object Set reg = CreateObject("VBScript.RegExp") '正規表現の指定 With reg .Pattern = "[0-9]" 'パターンを指定 .IgnoreCase = False '大文字と小文字を区別するか(False)、しないか(True) .Global = True '文字列全体を検索するか(True)、しないか(False) End With Dim str1 As String, str2 As String str1 = "東京1大阪2名古屋3" str2 = reg.Replace(str1, ",") '指定した正規表現を第2引数の区切り文字に置換 MsgBox str2 End Sub
このように書けばいいとのことで、「5分で終わりそうだな」と思っていたのです。
そして、途中でExcelが落ちることとかも、想定通りでなんとも思わなかったのです。
しかしコードが動かない。。。なぜだろう・・・。

よくよく見ると、 "VBScript"を呼んでいる・・・。今、Macを使っているんだった!!と衝撃が走ります。動かないのは当然でした。
Windowsを辞めた瞬間、Excelからも見放されていたことに気づきました。

他にも方法がないか少し探して見るものの、見つからない。
そこで登場したのが、Googleスプレッドシートです。Googleスプレッドシートならもしかしたら、と。思ったのですが、検索すると数秒で見つかりました。
「REGEXREPLACE」
速攻解決しました。

(2)大量翻訳作業
2つ目は大量翻訳作業です。アドサイクルは2言語対応しているため、ちょくちょく細かいものを翻訳しなければなりません。これ、結構面倒なのです。時間もかかります。
この作業については、以前にもGoogleスプレッドシートにアドインがあったので、それを思い出して、探そうとしていました。
しかし、検索すると見つかったのは、「GOOGLETRANSLATE」という関数。アドインもなく、しかもGoogle翻訳は結構綺麗に訳してくれるので、非常に便利です。

Excelではできないなと思うことが2つも出てきました。

そして、もはやMacユーザーであり、Windowsにはもう戻れないので、Excelと離別せよということなのかな、と後付けで考えてしまいました・・・

何れにしても、まだまだExcelも便利ではあります。コーディングにはぜひ役立てましょう!
2018/04/19 22:58
村上 和也

村上 和也

株式会社エフォートサイエンスの代表。
新卒でエンジニア、その後、インターネットの広告代理店へ入社し、約10年ほど運用型広告の運用管理、仕組みづくり、R&Dの業務経験などを経て、2016年より独立・起業。元運用者として、主に「アドサイクル」の開発を設計、企画、開発、販売を行う業務に従事。

「アドサイクル」開発ブログ 〜運用型広告のクリエイティブ改善を〜

「アドサイクル」開発ブログ 〜運用型広告のクリエイティブ改善を〜

広告クエリエイティブ改善ツール「アドサイクル」を開発している視点から、様々な気づきや想いを記載しております。なぜアドサイクルが生まれたのか、なぜ進化を続けようとするのか、なぜアドサイクルなのかなどを少しでもお伝えできれば幸いです。