「エンジニアなのに書道が趣味って変わっている」とか時々言われるので、きっかけとか書道歴を晒す

f:id:nyamadori:20161029053051j:plain

概要

「エンジニアなのに書道が趣味って変わっている」とか「きっかけは何だったの?」とか、自己紹介すると時々聞かれるのでここに残す次第。

内容は、書道を始めるきっかけから今に至るまで。書道歴とか言いながら段位も賞も何もないけど*1、小さいながらも個展は開いた (後述)

段位とか賞だけが書道じゃないんだ!!!!!!*2

変遷

小学生時代 (高学年ぐらい)

何かの課題でポスターを作ったときのこと。ポスターの文字は、みんな雑にしがちで、絵は良くても文字はヘボいことが多い。それを見て、文字に関しては他の人より絶対うまくやれると思ったのだと思う。だからパソコンのフォントを参考にして誰よりも綺麗に書いた。

結局、文字を綺麗に書いたからといって、課題が評価されることはなかった。だけど、それが「レタリング」だということを、図画工作の先生が教えてくれた。

それ以来、レタリングに興味を持ち、広告や雑誌、街の看板などの書体に目を向けることが多くなった。決して目立たない存在だけど、テキストが持つ空気感や意味合いを変えてしまう書体の面白さに気づいた。

でも、書写 (習字) *3は好きじゃなかった。毛筆で文字を書くなんて今の時代はやらないし、整った字ならパソコンで出力すればいい、と思っていた*4

中学生時代

書き初めの練習中に先生から書道の素質があると褒められる。ホントかよって思ったけど、書道は今も続けられているので、先生の目は間違っていなかったと思う*5。先生の言葉がきっかけで、高校に入ってから書写教室に通い始める。これが書道を始めた直接のきっかけ。

高校生時代

中学校の先生に言われた言葉を胸に、近くの書写教室に通い始める。教室には2年通っていたけど、整った文字を書くことを目的とする書写よりも、芸術表現としての書道がやりたいと思うようになった。

これは蛇足。行っていた書写教室は公文の教室。実は公文は書写もやっている。ビジネス手広い。

公文書写 - お子さまから大人の方まで、くもんの書写は、選べる4教科

公文の回し者じゃないけど、公文書写のお手本は変な癖がなく、原理・原則からちゃんと教えてくれるので良い。先生との相性はあるにせよ、手本に関しては安心できると思う。

大学生時代

芸術表現としての書道がやりたかったので、入学後すぐ書道部に入った。

とはいえ、大学に書道の先生がいないので独学する以外なかった。当時は目標もなくダラダラやっていたので、あんまり上手くなった実感がなかった。ゆるーい部活はそれはそれで楽しかったけど、もっとうまくなりたいという気持ちはいつも持っていた。

道教

学部4年のとき、先輩のつてで先生につくことができた。それから、書の技術が飛躍的に上達したし、以前に増して書道にのめり込んでいった。

週一回の教室では、黙々と臨書*6している。ただひたすら、競書誌の臨書課題を納得行くまで書き込む。「よし、これだ!」と思ったら先生に見せてツッコミを入れてもらう。

小さな個展

そのまま大学院に進み、書道教室に通いながら気楽に書道を楽しんでいたが、修士1年の冬、就活ついでに見に行った独立書展で衝撃を受けた。そこには、今まで見たことのないくらい生き生きとした作品が並んであった。国立新美術館の公募展スペース3階分をすべて使うほどの作品数に圧倒されたし、そのどれもが輝いていた。これほどの規模感、作品レベルは東京以外ではなかなか見られないと思う。

そういう生き生きとした作品群を見て、自分も何か書きたいという気持ちになった。ずっと臨書ばかりして頭が凝り固まっていたけど、自由な創作について考えるきっかけにもなった。独立書展が個展を開くきっかけだった。

大学の図書館で開いた小さな個展だったけど、やってみてよかったと思う。作品の雰囲気がどれも同じにならないように題材を選定して、書きぶりを変えて作品を揃えるのは、とてもクリエイティビティの高い仕事だったし、何より楽しかった。

先生にアドバイスを頂きながらだったで、本当の意味での個展ではなかったかもしれないけど、そうできる経験ではないと思う。知名度も賞も何も持っていないのに多くの方に見てもらえたのは嬉しかった。見に来てくれた方々との出会いは、書道をする上でとても励みになったし、自信を持つことが出来た。

まとめ

  • 小学生時代
    • ポスター作りでみんなが雑にしがちなレタリングに凝る。文字に興味を持った
  • 中学生時代
    • 書道の素質があると先生に褒められる。調子に乗った
  • 高校生時代
    • 書写教室に通い始める。やってみて分かったけど、書写よりも芸術表現としての書道がやりたいことに気づいた
  • 大学生時代
    • 学部4年にして先生に巡り会う。飛躍的に上達した
    • 修士1年の冬、独立書展の作品群に衝撃を受ける。書きたい欲が出てきた
    • 修士2年の夏、小さな個展を開く。見に来てくれた方々との出会いは、書をやる上で励みになったし自信にも繋がった

振り返って

  • 書道の素質があると褒められたのが中学3年、プログラミングを始めたのは中学1年生か2年生ぐらい。中二病って言葉があるぐらい、中学生時代は多感で、その後に大きな影響を与えうる大切な時期だと思った
  • 書写教室で得た知識や技術は、書道をやるようになってからも役に立った。逆も然りであるはず
  • レタリングと書道、プログラミングと書道。デザインと芸術、エンジニアリングと芸術。両方の領域に触れられていることは良いことだと思う。そこで得た感性をどこかに活かせたらと思う。
  • エンジニア×書道の組み合わせは、あまり見かけないのでセルフブランディング的にも書道は続けたい

*1:今のところ、安芸全国書展入選ぐらいしかない

*2:「書道が好き」という話をすると、時々「何段ですか?」とか聞く人いるけど、回答に窮するからやめてほしい。段位制度は会や教室ごとに独自にあるので、所属が違うと比較にならない。だからといって「xx 展入賞」とか言ってもピンとこないし盛り上がらないだろう。やっぱり数にはインパクトがあるんだろうな。「書道八段」とか強そうだし、

*3:書写 (習字)と書道は共通部分はあるけど別物。後述する

*4:今もそう思っている節がある。とはいえ、字がきれいに書けることはまだまだ重宝されるらしい。

*5:上手という意味ではなく、続けられているという意味で

*6:書跡をお手本に練習する方法。文字の形や筆使いを身につける。野球でいう素振りでフォームを身につけるみたいなものだと思っている。野球は全然分からないけど

夏の Speee、内定者アルバイト (インターン) の振り返り

Speee 17卒内定者のやまどりです。夏休みを利用して 1 ヶ月間 Speee でアルバイトしました。入社までの期間を使って実務環境で鍛えさせてくれるとは粋です。

www.speee.jp

やったこと

  • リスティング広告のクローラを作った
    • 自社広告順位や競合広告の分析のために使用される
  • メンテナがいない既存の Java + Akka 製のクローラを Ruby でリプレイス
  • 4 つの出稿媒体に対して設定した数千個のキーワードを一日一回検索にかける
  • 夜 9 時にクロールを開始して朝 6 時までに終えるようにしたい

チーム

  • メインの開発は自分 1 人
  • レビュワーエンジニア 3 人
  • ディレクター 1 人

2 人のエンジニアの方に細かくツッコミ (レビュー) を入れてもらいながら開発していました。主な要件は既存ツールと同じだったため、ディレクターの方と関わることは少なかったものの、仕様や目的について不明点があれば随時聞きに行っていました。

技術選定

紆余曲折あったものの最終的に以下でまとまりました。

振り返り

Good / Keep

  • 既存のクローラでクロールできていなかったところが、正しくクロールできるようになった
  • DB 設計に工数を割くこと
  • Faraday

Problem

  • 思ったより本番環境のメモリ容量が小さく、アルバイト期間終了までに指定のハードウェアでクローラが動かなかった

Try

  • 本番環境の要件を事前に調べる
  • 技術選定時にプロファイラを使う
  • リプレイス案件のときは KPI を設定して、既存のツールからの改善具合を計る

詳しく

[Good / Keep] DB 設計に工数を割くこと

https://gyazo.com/3645df4f7e564a485b2272ab1c4006dd

1 ヶ月間のうち 8 営業日を DB 設計に費やしました。きっちり議論した甲斐があり、その後は設計を修正せずとも開発を進められました。DB 設計がアプリケーションの地盤を固めてくれるということを実感しました。

早くコード書き始めたいのに 1 ヶ月のうち 1 週間も issue で議論し続けていて、開発が進まない (ように見えた) ので本当に大丈夫か? という焦りもありましたが、やっておいてよかった作業でした。おかげでその後は設計を修正せずとも開発を進められました。

設計 issue が完了し喜んでいる図

https://gyazo.com/306b5c526edadffbfcf66dba7d142084

[Good / Keep] Faraday

検索結果ページの取得・パースの実装に Faraday を使いました。また Faraday に切り替えるついで、コードを綺麗にリファクタリングしました。アルバイト期間終了 3 日前になって既存のコードを捨ててリファクタリングするのは勇気がいりましたが、綺麗なコードを残してから帰ることができたのは良かったと思います。

プルリクコメントでこう言ってもらえたのが嬉しかったです。

https://gyazo.com/588446ee220867c6bf4e7c4df02cb81f

Faraday は、リクエスト・レスポンスの間にミドルウェアを差し込み、それぞれの処理をフックできます。これを利用して、広告をパースして結果 (Hash) をレスポンスボディとして書き換えるミドルウェアを作りました。ミドルウェアによって、「リクエスト→レスポンス→HTMLパース→広告データ」の変換処理を綺麗にワンストップで実装できました。

また、Faraday は HTTP クライアントのバックエンドに共通のインタフェースを持っていて、アダプタとしてバックエンドを差し替えることが出来ます。なので、例えば「Net::HTTP じゃパフォーマンスでないから Typhoues に乗り換えたい」となったとき、リクエスト・レスポンス周りをほとんど書き換えることなく、別のバックエンドに乗り換えることができます。今回は、本番環境のメモリが少なかったので、必要に応じてバックエンドを切り替えてチューニングできる Faraday を選びました。

github.com

[Problem] 思ったより本番環境のメモリ容量が小さく、アルバイト期間終了までに指定のハードウェアでクローラが動かなかった

社内ツールなので僕の手を離れたあとも開発が続けられるわけですが、これが今回のアルバイトで一番の心残りです。

メモリ使用量を削減するために、Capybara → Mechanize → Faraday + Nokogiri と何度も技術選定を変えており、そのたびに発生するコードの書き直しやプロファイルに時間がかかりました。

[Try] 本番環境の要件を事前に調べる、技術選定時にプロファイラを使う

確証もないのにちゃんと動くと思い込んで、本番環境を考慮した技術選定を行わなかったのが原因だと思います。本番環境のメモリ容量を事前に調べ、それを基準に技術選定をしていれば技術選定にここまで右往左往することはなかった気がします。

[Try] リプレイス案件のときは KPI を設定して、既存のツールからの改善具合を計る

今回は、リプレイスにあたって具体的な目標値を設定出来ていませんでした。クロールの速度やメモリ消費量などの目標を設定できていれば、それを考慮に入れた早めの施策を実行できただろうし、単なるリプレイス以上の価値を出すことができたように思います。目標を設定していれば、例えば「既存クローラの性能がxxで、新しいクローラの性能がyyだから 2 倍の高速化を実現した」ということを言えたのになと。


まとめ

学んだこと

  • DB 設計に工数をかけしっかり固めることで、後の開発がスムーズになる
  • 本番環境を考慮に入れて技術選定をすること、確証なく動くだろうと思わないこと
  • レビューは励みになる
  • Faraday

感想

初めてやることが多く、とてもワクワクする開発で、多くの経験値を増やすことができました。処理時間短縮のために Sidekiq で並列にクロール処理させたり、検索エンジンに負荷をかけないようにリクエストを投げたり、DB 設計に一週間かけたり… とどれも初めての経験でした。開発中は細かくレビューを頂くことができ、経験値不足の自分にとって大変有益でした。レビューがあったからここまで何とかやってこれたと思うし、思う存分暴れ自走させてもらうことができて楽しかったです。

Speee の方々へ: 1 ヶ月間ありがとうございました。入社後またよろしくお願いします!


あとは研究だ。