karashi39とはいったい

夢と希望と明日と正義を讃える

ひさびさに技術の話

最近、WEBサイトを作っている。一人で、しかも一日数時間だけの作業でできる、シンプルな仕事。ベースもWordPress。お客さんがWordPressつかいの猛者なので、正直WEBっぽいことは何一つやっていない。

あ、これは技術的に参考になることを主張する記事ではなくて、日記的なものです。*1

やっていること

何を作っているかと言うと、WEBスクレイピングで情報を集めてDBに入れて、それをお客さんによる人力厳選チョイスをした後、WordPressに表示するというもの。こじんまりしたものだし、何よりお客さんの性格が私に似ているので、いわゆる"危険キュレーション"みたいなことにはならないだろうと思ってお手伝いを引き受けることにした。

とはいえ、スクレイピングって結構ソースサイトに負荷も掛けそうだし、迷惑行為だよなって思っている。可能な部分はソースサイトが公開しているAPIでやったほうが良い、という提案もお客さんは同意してくれた。

なので、私が作るのはスクレイピングする機能、お客さんの厳選作業を補助する機能、WordPressに表示する機能、です。目新しいことは特にない。私にとってはじめてのことはもちろんありますが...

やってよかったこと

テストをバリバリ書く

お客さんはシンプルなサイトしか経験がないので、裏側で何かが動いている、というものに馴染みがなかった。そのため、僕がよしなにやらなければいけないのだけど、これはお客さんが大まかにも仕様を決められないという話であり、きちんとしていない変更がたくさん生じる、ということです。

DBのカラム程度ならバンバン追加される感じで、結構大変。なのでテストコードだけはしっかり書いて、ちょっとした変更で全体が壊れてしまわないように進めました。正直テストを書いたり、テストの対応をしたり、リファクタリングをしたり...という時間のほうが多いので、お客さんからすれば何をやっているかわからないだろうし、本当にこいつ働いているのか?という疑問も生じそうですが、そのへんは話がわかるお客さんなので、問題なく進められた。

フレームワークを微妙に使う

テストをするためにいい感じの設計にするというのが、WEBの経験が少ない私には大変そうだったので、素直にベストプラクティスっぽい、uzullaさんの入門用サンプルで使われているフレームワークをチョイスしました(バージョンは上げた)。ViewはTwig、ModelはEloquent。

特にEloquentは、ORM初体験という感じでいろいろ大変でしたが、テストを書きまくるのにはORMは便利だなって思いました。DB出身の私はSQLを書くほうが35億倍はやいと思っていたんですが、クエリスコープみたいな文化に初めて触れて、感動しました。

また、でっかいフレームワークにがっつり乗らないのも便利で、フレームワークWordPressを上手くくっつけるみたいな作業が不要で、ラクラク作業が進められました。一人でやっているからそもそも集団で使うときに発動する"フレームワークのメリット"みたいなものは最初からなかった。

微妙にOOPを使う

たとえば、継承とかは便利だから使う。でもそこまでガッツリOOPせずに、ものによってはいちいちインスタンスは作らずに関数として使う...みたいな感じです。ソースサイトが複数あったので、同じ動きを違うDOMに対してやることになり、結果のテストを統一したりすることが出来て楽でした。あまり変更されなさそうな場所と、正直これで決まりで良いのかよくわからない場所を分けるのが、便利なんだなって思いました。

CIを使わない

正直ちゃんとしたCIは未経験なので、やれるチャンスがあったらやりたい...と思っていたんですが、環境を用意できなかったのでやりませんでした。結果的にはそれでよくて、スクレイピングのテストとかは膨大な時間がかかるので、毎回全部のテストを通してたら大変だったろうなって思います。これも、一人でやっているからできるようなことだろうな、と思う。

ひとりでもちゃんとGitHubを使う

嘘です。本当はBitbucketです。ちゃんとISSUEを立てて、スケジュールはTrelloに補助してもらって、Wikiを書いたり、プルリクエストを書いたり...というあたりが、一日数時間、場合によっては飛び飛びで作業するのに非常に役立ちました。私の個人的な事情ですが、わりと質素な生活をするために、生活作業に時間をさかないといけないので、細かいことどころか重要なこともすぐ忘れちゃうんですよね。

会議場はappear.inにした

お客さんとはFacebookメッセンジャーでやりとりしているので通話もできるのですが、appear.inにすれば着信がないんですね。これが便利。お客さんがいろいろ忙しくて少しだけ遅れてくるときも、こちらが電話をかけてしまって微妙に迷惑をかけるみたいなことがないです。時間になったらappear.inを開いて、お客さんが来るまでぼーっとタバコを吸っていればいいのです。便利。

今後の課題

生きる、ということです。私はどうやら、仕事という行為自体が性分にあっていないみたいで、最初に転職してからというもの、コロコロと所属を変えて、そのたびに社会への不満をつのらせていったわけですね。悪いのは社会じゃなくて、社会があっていない私の方なんですが。今回のお客さんとの話は、最初は「仕事をしたくないから無償なら手伝う」と言い出したくらいです。

いまは一人でやっているので、不満を感じずに楽しくやれているのですが、社会と断絶した場所にいるという自覚があり、これからも断絶したままやっていくでしょうから、あんまり生きている意味を感じていないです。なにか起きたら簡単に飛び降りられるくらいの気軽さで生きております。

だからですね、飲みに行くのは重要だということだ!!!!

最後に宣伝

最近の曲の中では自信作なのですが、いまいち誰にも聴いてもらえていない...それがこれです。頼むから聴いて欲しい。

soundcloud.com

*1:なので、コメントとかで宗教的な主張をされても困るし、便利なことは教えてほしいけど、喧嘩を売るのはやめてね、という気持ちでいます。