VOYAGE GROUP エンジニアブログ

voyagegroup_techのブログ
VOYAGE GROUPエンジニアブログです。

ネタ

私男だけどタイポするECナビの中の人達って・・・

二度目まして。中村(おみ) @tomomihoge と申します。
VOYAGE GROUP 社内ではECナビ事業本部にてエンジニアをしたり、
他人の日報にアスキーアートを貼り付けたりしています。

Advent Calendar 的なモノをやるぜ? と言う話にうっかり手を挙げてしまったので、
日曜日にふさわしい脱力系のどうでもいい話をしようと思います。
こんなタイポで盛り上がった、と言う話題。

次回はもう少しテクニカルなものを書くと言ったな。アレはウソだ。

■EcanviController.class.php

去年の5月頃の事です。
Fuga 機能を実装するために、既存コードを参考にしようとHogeController のコードを読んでいた私。
EcnaviController から継承してるようなので、まずはそちらを読みに行きます。

$ls -l
EcanviController.class.php
こいつか。
$ vi EcnaviController.class.php
~
~
~
"EcnaviController.class.php" [新ファイル]

新ファイル・・・ だと? そう言えば bash の入力補完が効かなかった。

実際の所は EcnaviController.class.php ではなく EcanviController.class.php だったのですが、
気がつくのに相当時間がかかりました。

この罠は今も新入りのエンジニア達に情け容赦なく襲い掛かります。

「おみさん、この EcnaviController.class.php ってファイルあるじゃないすか。」
「あるね(ないけどな)。」
「何故か開けないんすよ。」
「そうだね(名前違うしな)。」
「どうしてっすかね。なんか権限足りないとか。」
「落ち着いて良くファイル名を確認するんだ。」
「え?いーしーな・・」
「いーしー、その次はエヌか?」
「いーし・・・・えー。いーしーきゃんびー!?」
「そこに気がつくとは・・・ 大したやつだ」

・・・的な会話が繰り広げられてるわけです。
配属直後からエンジニア間のコミュニケーションを促進する、まさに神タイポと言えましょう。

■Heler


今年の8月頃の事です。
とある機能をアレする為に、ハイパーメディアエンジニアの某氏が何かを作成しました。
事業部エンジニアで集まってのレビュー会での事。

「・・・と、言う感じ。」
「good job!」
「神!あるいはゴッド!」
「エクセレント!」
「ところで、ヘラーって何?」

当該機能の肝の一つ、なんちゃらヘルパーさんが、 NancharaHeler になってたのです。
(なんちゃらな処理を手助けしてくれる何かです。)

「ほんまや。ヘラーて。」
「ヘラーwww」
「これは良いタイポですね。」
「これは修正しておきm」
「このままでいいよ。」
「むしろ今のままのヘラーでいて!」
「もうヘラーしか愛せない。」

その日の日報は heler が席巻しました。
今日からアレをアレする作業に取り掛かりました。
山口さん(仮)の例のなんちゃらができあがったようです。
Helerフレームワーク、いい名前がついて、
今から伝説臭がします。
なんていうか、もう許してやれよ。

※ その後、修正されてしまった。泣ける。

■まとめ

タイプミスもまとめて楽しんでしまうのがECナビ流です。
すべてに楽しさを、みたいな?
でもまぁ、コード読む時に困るから結局直すんですけどね。

明日は @saya_223n さんが諸事情により不明な話を皆さんにお届けする模様!

※ 記事の最後で紹介したいから内容聞かせてって言ったのにスルーされました。(実話)

滅びの言葉をテストする

こんばんは。VOYAGE GROUPの野良クルー、@katzchangです。

ところでみなさん、バルスしてますか?

バルスとは滅びの言葉、つまりおまいらに解かりやすく言うと、異常系処理をキックするコマンドなわけです。で、やはり、異常系処理も含めてテストされるべきですよ。当然ですね。

ということで、テスト駆動開発、いわゆるTDD"風味"で、バルスのJava実装を作ってみました。とはいえ、要するに System.exit(1) すればよいので、実装は大したことがない。でも、実際にどのような動作になるか、あまり試したことがないのは僕だけじゃないはず。試す価値はありそうです。

方針としては、balseメソッドを実装したBalsableクラスを用意し、システムが無事に異常終了することを確認すればよいということにします。

さて、いきましょう。
package balse; import static org.junit.Assert.*; import org.junit.Test; public class BalsableTest { @Test public void test() { new Balsable().balse(); fail(); } }
テストコードはこんな感じ、new Balsable().balse();を実行すると、次のfail();が実行されないはずです。そうです、このときはそう信じていました………。alt + shift + x, t。

first_test_gray

よし、Gre……………y……?

なんと、JUnit test runnerがバルスしてしまいました。バルスマジバルス。

仕方がないから、外部プロセスとして実行し、結果を確認することにします。方針転換ってやつです。

こんな感じにテスト用のランナーを用意し、
package balse;

public class BalsableRunner { public static void main(String...args) { new Balsable().balse(); } }
外部プロセスとして実行させます。
@Test
public void testBalsableProcess() throws Exception { ProcessBuilder pb = new ProcessBuilder("java", "-classpath", "./target/test-classes;./target/classes", "balse.BalsableRunner"); Process p = pb.start(); assertThat(p.waitFor(), is(1)); }
green

今度はGreen。ちゃんとバルスできています。

ところが、ここで心配になりました。このバルスは、ちゃんとプロセス全体をバルスしているのでしょうか?マルチスレッドでも問題なくバルスるのでしょうか?

そう、不安があったらテストしましょう。

マルチスレッドを使ったテスト用ランナーを用意し、それをテストします。今度はリターンコードだけではなく、スレッドが実行されていることを確かめるべく、標準出力の内容も検査することにします。
@Test public void testBalsableThread() throws Exception { ProcessBuilder pb = new ProcessBuilder("java", "-classpath", "./target/test-classes;./target/classes", "balse.BalsableThreadRunner"); Process p = pb.start(); assertThat(p.waitFor(), is(1));
// TODO: helperを作るべき InputStream is = p.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line; List<String> lines = new ArrayList<String>(); while ((line = br.readLine()) != null) lines.add(line); is.close(); assertThat(lines.size(), is(2)); assertThat(lines.get(0), is("時間だ!!答えを聞こう!!")); assertThat(lines.get(1), is("バルス!")); }
バルス!

はい、Green。標準出力の内容も意図通りのようです。

他のコードも含めて https://github.com/katzchang/balse にコミットしていますので、煮るなり焼くなり好きにしてください。

これを他のプロダクトに組み込む場合、直接System.exit(1)を呼ぶより、Balsableを通して呼ぶように変えることができます。そのときのテストとしては、MockBalsableを用意し、モックのbalse()メソッドが呼ばれたことを確認すれば、プロダクトへのバルス実装は完了です(Balsableにももう少し手を加える必要はあります)。そして、end-to-endテストとして実際にBalsableを組み込んだ上でバルスしていることを確認できれば、出荷可能です。

さて、この記事はTDD Advent Calendar jp: 2011の10日目の記事でした。

9日目の記事は@yujioramaC言語でもレガシーでも、TDD をやってやれないことはない(レガシーコード改善成分90%、TDD成分10%)、明日は大学でテスト駆動開発プロセスを研究してる@pocketberserkerです。きっと読み応えのある記事を書いてくれることでしょう……!!

純粋なTDDではないけど、まぁこんな感じで進めてますということで…。

VOYAGE WiMAXボーイ(36才)をぷにょっとさせた

こんにちは、VOYAGE GROUPの水越(@Akiyah)です。

前回ECナビBlogグレートナビック風を取り上げましたが、ECナビブログライターのからあげ氏からまたしても魅力的なキャラクターが登場しました。イケてる彼の名はVOYAGE WiMAXボーイ(36才)!!!

揚げたて◆VOYAGE WiMAXでクールで素敵なインターネット生活を! << ECナビBlog

なんというイケてさでしょう!
というわけで、また加工してみました。
ぷにょっとさせました。

ぷよっとしたVOYAGE WiMAXボーイ(36才) - wonderfl build flash online


どうですか、ぷにょっとしていますか?
(前回もそうなのですが)この作品はFlashを作って共有するSNS、wonderflを利用して作りました。
フォーク元はNosuke_lkSsvOhBさんのPuyoDotで、フォークボタンを押して画像を取り替えることで今回の作品を手軽に作ることができました。
フォークってステキ!

グレートナビック風を動くようにした

こんにちは、VOYAGE GROUPの水越(@Akiyah)です。

みなさんはECナビBlogを知っているでしょうか?
私がエンジニアとして働いている価格比較サイト「ECナビBlog」公式のブログで、いのサンデー、ホンノムシ、揚げたて伝説、モヤモヤ家電、ハコシのFRIDAY★、といった魅力的なコンテンツがあります。 

先日そのECナビBlogに『揚げたて◆ナビックが超カッコよく思えてきた « ECナビBlog 』というエントリーが公開されました。そしてそのエントリーには、からあげ氏作のグレートナビックという超カッコいい画像がありました!!!
great_navic
※画像は妄想の中のイメージであり、出てくるのはナビック風のキャラクターです。
 実際のナビックとは異なりますのでご注意ください。


これは動いているところを見て見たい!!!
という訳で、がんばって動くようにしてみました。

グレートナビック風 - wonderfl build flash online


マウスでつかんで動かすことができます。手や足には関節があってぶらぶらさせることができます。すこし力強くないのは見逃してください。

wonderflというサイトを利用して、ActionScriptで書いてFlashにしました。QuickBox2Dというライブラリを使って物理演算をしています。一番大変だったのは画像をGIMPで頭、体、手(二種類×左右)、足(二種類×左右)に分けることでした。

次の機会があったら、今度は変形に挑戦してみます!

参考
揚げたて◆ナビックが超カッコよく思えてきた « ECナビBlog 
グレートナビック風 - wonderfl build flash online
QuickBox2D

MacのGrapherでアンパンマン

こんにちは、VOYAGE GROUPの水越(@Akiyah)です。

最近、会社で使うPCがMacBook Proになったので、Mac OS X v10.7 Lionに付属しているソフトを眺めていたら面白いものを見つけました。それはグラフ描画ソフトのGrapherです。

Grapherとは、Mac OS X付属のグラフ描画ソフトです。Grapherを使うと分数やn乗、絶対値、括弧などの数式を簡単にかっこよく書くことができて、その上その数式をグラフにしてくれます。数式を書いてグラフにする、という点に関してはここで何度か紹介しているRよりもお手軽にできます。

というわけで、アンパンマンを書いてみました。
14
アンパンマン方程式は前回Rで書いたものと同じです。Grapherを使って方程式の解を描画させました。こんな複雑な数式でもそのまま簡単に編集できて、とってもステキです。
 
Grapherは2次元だけでなく3次元のグラフも書くことができます。
z=アンパンマン方程式
と書き直してグラフにすると、簡単に3次元アンパンマングラフを書くことができます。
05
Grapherの中ではマウスで向きをぐりぐりかえることもできますよ。

こんなにすばらしいGrapherですが、検索してもあんまり情報が出てこなくて、世間ではあまり使われていないようです。これからも面白い使い方を見つけたらここで紹介していきますね。

参考
Grapher - Wikipedia
Grapherで遊ぼう
VOYAGE GROUP エンジニアブログ : Rを使ってお絵描き(アンパンマン方程式)

記事検索
QRコード
QRコード