読者です 読者をやめる 読者になる 読者になる

twitterのテキストデータからurl、メンション、改行を抜くShell Script

twitterのテキストデータからurl、メンション、改行を抜くShell Scriptを書きました。

#!/bin/bash 
sed -e 's/\(RT \)*@.\+[ :]//g' -e 's/\/*[http|t].*//g' -e 's/\\n//g' -e '/^ *$/d' $1

大量のデータから雑に消すことを想定しているので、urlが含まれているツイートのurl後の文章を全消ししたりしています。不便があったら改良するかもしれません。

行を指定してファイルを二つに分割するShell Script

ファイルを分割するunixコマンドとしてsplitがあります。が、ある行を境に分割するというものが無さそうだったので書きました。

#!/bin/bash

if [ $# -ne 2 ]; then
echo "Usage: this FILENAME LINE"
exit 1
fi

FILENAME=$1
LINE_1=$2

head -n ${LINE_1} ${FILENAME} > ${FILENAME}.1

LINE_FILE=$(wc -l ${FILENAME} | awk '{print $1}')
echo ${LINE_FILE}
LINE_2=`expr ${LINE_FILE} - ${LINE_1}`
tail -n ${LINE_2} ${FILENAME} > ${FILENAME}.2

 ||<

投票でコ●ル一位にして消防ども泣かそうぜwww 公開

投票パズルLv1

エンジニア向けのパズルを作った。
ほとんどのエンジニアには解けるパズルシリーズにインスパイヤされて作ったのでサイトの構成などかなり参考にさせてもらっている。

エンジニア向けというよりクラッカーやスクリプトキディが喜びそうな内容だが、テーマとしては人気ランキング投票である。

このパズルのバックグラウンドにはコイル祭りという事件がある。2008年、yahooきっずでポケモンの映画の企画で人気投票が行われたが、候補のポケモンピカチュウシェイミギラティナといった映画の主役級キャラに加えてなぜかコイルやタテトプスといった場違いなポケモンが含まれていた。そこにVIPPERが目をつけ、ツールで大量の多重投票を行い、コイルに圧倒的な票数が集まった。運営もVIPPERの投票速度を上回る速度でピカチュウの票数を伸ばすなどの工作で対抗し戦いは熾烈を極めたが、最終的に投票は中止になり、票数は捏造のもとシェイミが1位、コイルは2位という結果にされた。

そのような状況を擬似的に再現したものが今回のパズルである。Lv1なのでほとんど何の対策もしていない。そのため速ければ5分程度で解けてしまうだろう。

[投票パズルLv1]投票でコ●ル一位にして消防ども泣かそうぜwww
https://hackers-puzzle-1.herokuapp.com/ f:id:mikkabouzubrowse:20160318120615p:plain

Wantedly Spring Internship 2016に参加してきた。

Wantedly Spring Internship 2016に参加してきました。

3/2〜3/4に行われた3日間のエンジニア向け短期インターンです。
このインターンに参加した皆さんと、次回以降でこのようなインターンに参加する予定のある学生を読者と想定して書きます。

f:id:mikkabouzubrowse:20160312203341j:plain:h300

Wantedlyって何?

「シゴトでココロオドル人をふやす」という理念のもとに、社名と同じWantedlyという就職支援サービスや、Syncというビジネスチャットツールを開発しているネットベンチャーです(宣伝)。

f:id:mikkabouzubrowse:20160312203052j:plain:h300

最近は学生向けにもアプリが出ていますが、元々は、会社に入ったけど入社前のイメージと実際のギャップに悩んでいる人への転職サービスでした。仕事の流動性がちょうど今増している現在の日本では将来性のある領域だと思います。

僕もいつのまにかfacebook連携されていて、facebookで友達になっている会社の方から採用カモンメールがどんどん飛んできます。でもfacebook連携が前提っていうのは転職サービスとしてどうなんだろう…上司や同僚に転職活動していることは知られたくないんじゃないのかな?少なくともその会社の出世コースには乗れなさそうな…

インターンレビュー

3日間という短い期間には珍しく、全く別のことを二つやりました。このインターンの企画責任者っぽいエンジニア曰く、「実践は無理なので、イメトレと筋トレ」

①「ココロオドル」サービスのプロトタイプを考えて発表

つまりアイデアソンです。最初にCEO仲さんからの考え方の講義があり、それを元にサービスを考えてみましょうというやつでした。
一日目〜二日目の午前にかけて行われました。

このときに特に重要とされたのがwantedly wayZoosという概念。

wantedly way

サービスを作る際に満たしている条件のようなもの。

  1. User First
    ユーザーを最優先に考えましょう
    これはどの企業に行っても必ず言われる、サービスの基本的な事項です。
    利用者の立場に立って考えましょう、という当たり前のやつですが、エンジニアリングを重視しすぎるとけっこう疎かになっていきます。
    僕が以前作ったパズルゲームLabylia」も、本当はチュートリアルを作って、基本的な解き方を学ばせるようなステージをいくつか作ってから解かせるようにした方が本当は良いのですが、面倒くさくてそうしていません。

  2. Simple is not easy
    シンプルに機能を制限したままにするのはUXに重要です。
    え、これしかできないの、くらいがちょうどいい。
    講義ではfacebookiPodを例に出しシンプルさを強調していました。
    最初のfacebookの機能はプロフィール表示と友達申請のみ(メッセージや投稿の機能はない)
    iPodは、音楽を聴くことしかできない。(スピーカーや録音機能など当時のポータブルオーディオ機器の機能を省いた)
    シンプルにすることによって、無駄のないデザインと低コストを実現しています。
    基本的には賛成ですが、ユーザーが受動的な場合は逆にいろんな選択肢を示してあげたほうが良い場合もあるでしょう。たとえばYahooJAPANのトップページにはたくさんの情報、サービスへのリンクがあります。はてなfc2ブログのトップページにはいろんな角度からブログがピックアップされています。これらによって ユーザーが能動的に情報を探すことなく目に止まった記事にアクセスできることになります。
    ハッカソンに短期に成果をあげる必要があるときにはこの要素を特に重視するといいかもね。

  3. Code wins arguments
    コードは議論に勝る。まず作ってみろ、話はそれからだ。
    素晴らしいアイデアを思いついた際、そのまま人に伝えようとするのではなく、プロトタイプを作ったりユーザーテストして結果で語れということです。 議論するのは楽しいし楽ですが実装となるとサボりがちになる僕には耳が痛い話ですね。

Zoos

Zero to One Objective Settingの略で、サービスに価値があるかを測る項目シートです。
実際のものが↓こちら

f:id:mikkabouzubrowse:20160312203835p:plain:h300

サービスの必要性をこのような質問形式で問われると伝えやすくなります。
書いてみると重複する項目が多くて苦労しました。項目をいくつか減らした方がいいでしょう。

  • Experience of User内のAcquisition、Retentionは上のMotivationと被るので統合し、「最初の動機」「継続の動機」のように分類
  • AttensionとReferralもかぶってるので「認知方法」に統一

しちゃっていいんじゃないかな。

これの説明で印象に残っていたのが、「自分より格下の奴がこのサービスを売り込んできたとしてもいいと思えるサービスを作る」という言葉です。発言者を信用していないことによって批判的に見ることができ、改善点問題点を洗い出すことができます。

f:id:mikkabouzubrowse:20160312205023g:plain:h300

これらを踏まえて我々のチームは「wantedly lunch」というサービスを提案しました。
wantedlyのサービスに学生にランチをおごるボタンを追加し、メッセージのやり取りなく気軽にランチでマッチングできるようなサービスです。

優勝しました。
勝因は実装された際の効果が最もイメージしやすかった点でした。
↓発表の様子

f:id:mikkabouzubrowse:20160312203501j:plain:h300

②Wantedly新卒向けトップページ改善

Wantedlyの新卒向けトップページを新技術で改善してみよう、という企画です。
二日目〜三日目にかけて行われました。
2016年3月12日現在の時点でのデザインは1カラムでレスポンシブ。一番上に動画、次に特集記事、その次からいろいろな条件で会社の情報が載っているという感じです。詳しくはリンク先参照。「いろんな切り口で募集が見れる」というコンセプトで作りましたが、短期間で作成したこともあり最適なUIが実現できているか確証が持てていないらしいです(もしくはそういう設定)。これをチームで改修してみましょう、という企画でした。

企画は二日目の午後から始まりましたが、その日はJavascriptフレームワークの一つReact.jsの講義で終わりました。ReactはViewのためのフレームワークで、コンポーネントをたくさん作り、それらを組み合わせて画面を構成していこうというものです。(僕はちゃんと理解できてないです。)

僕のチームはページに情報量が多すぎると考え、いらない要素を削り、クリックした時に詳細な情報をポップアップで表示する、ようなものを理想とし開発を進めました。しかし実際には技術力、努力不足で全く完成せず、苦しい成果発表となりました。僕の担当したポップアップの部分は統合ミスで無かったことになりました笑。プロダクトを発表でごまかすレベルにすら持って行けなかったことは悔しいですね。

メモを取り忘れて覚えていませんが優勝したチームは半日程度の短期間のうちに自分たちのコンセプトを高いレベルで実装していた記憶があります(適当)。

感想考察分析

ゆるかったのに学ぶことが多かったのはとても良かったです。短期間のハッカソンでは徹夜前提開発が当然みたいな風潮がありますが、それを良しとするのはスケジューリングに問題があります。また、そういうことをさせる企業への印象は明らかに下がります。今回も覚悟はしていましたが寝れたのはかなりありがたいです。また、アイデアの面、開発の面、技術の面と様々な観点から講義があり、たくさん学ぶことができました。活動時間の半分くらいはインプットでした。至れり尽くせりって感じですね。

改善するとすれば②の開発の時間がもう少し多くても良かったですね。僕の班は言うに及ばず、他の班も完成してる風な発表ができているチームは少なく、開発時間が足りなかったのかなと感じました。開発の時間を延ばす、課題の難易度を下げる、選考を厳しくする、いろいろあると思います。「学生側はWantedlyが求めるコミットができたのか」という点には疑問が残りました。

とはいえ、全体的にはとても良いイベントでした。今後開催されたときにはエンジニア志望の学生なら迷わず参加してみてください!

自作ゲームLabylia

昔公開したゲームを紹介しておく。

Labylia(mogera)

 

ゲームのジャンルはルート探索パズルゲーム

道に落ちているアイテムを拾い、最適な場所で使いゴールを目指す。

ペンシルパズル系が好きな人は楽しめると思います。