IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

6 年間の起業を終えて

スマートニュースの社員になりました

皆様、お久しぶりです!約 7 年振りにこのブログを書いています。 元気にしてましたか?僕は元気です。

実はこの 6 年間 id:mizzusano とカクテル株式会社という会社をやっておりまして、先日のプレスリリースにもあったようにこの度会社ごとスマートニュースにジョインすることになりました。

f:id:amachang:20180529140842p:plain
UUUM に遊びに(?)行ってはしゃぐ僕と id:mizzusano

そこで今日は振り返りも兼ねて、以下の 3 点について、この 6 年間考えていたことを書いて見たいと思います。

少しでもこれから起業したい人のお役に立てればと思っております。

事業アイデアより大切なこと

6 年間の事業を振り返えると失敗の連続でした。その中で、事業そのもののアイデアより共に起業するメンバーが大切だと思ったので、その理由を書いておきます。

事業は失敗の連続

カクテル社が 6 年間で取り組んだ事業は 8 事業、作ったアプリは Android/iOS 合わせて 10 アプリ(そのうちリリースしたのは 7 アプリ)。とにかく失敗失敗の連続でした。

本当に酷いものです><

f:id:amachang:20180529154600p:plain
色んなアプリを作ったもんだなあ。一つ一つの事業に対して「笑い話」や「泣ける話」があるのですが、まあ色々とアレなのでここでは書かないでおきます。

事業に失敗しても会社は潰れない

でも逆にですね。これは声を大にして言いたいのですが「事業に失敗しても会社が潰れるわけではない」ということなのですよ。

なので、「やりたい事業がないのに会社を作るとか無いわー」などと言う人もいますが、そこは「やりたい事業がなくても起業して良いのでは?」って思います。だって、最初の事業アイデアは失敗するかもしれないし、それでも会社は続くんですから。

事業アイデアよりもメンバーが大事

「失敗」するにしても、遅すぎる段階で「失敗」するとそれは会社にとっての致命傷になることはあると思います。なので、そういう意味でも「実装のスピード」は大切です。

あと、「失敗」したときに次にいける判断力や精神的な余裕が必要だと思います。

僕なりの結論としては、結局人なのだと思います。もちろん事業アイデアも大事だとは思うのですが、「実装のスピード」と「失敗しても次を挑戦する気持ち」を持ったメンバーを集めることが大切なんだと思っています。

起業家が健康的に働く方法

この話はブログに書こうかだいぶ迷ったことなのですが、この機会を逃すとなかなか告げるタイミングがないと思いますので、書かせてください。

友人の死について

会社を作って約 8 ヶ月経った時、代表取締役だった友人が亡くなりました。一緒に起業した仲間です。

プライベートなこともあるので詳細は具体的に書けないことはご了承ください。当たり前ですが当時はだいぶ落ち込みもしたのですが、その出来事を乗り越えて、学べたこともありました。この経験から、起業家がもっと健康的に働ける方法をずっと考えていたのでここに残しておきます。

起業家が健康的に力を発揮していれば、たとえ事業が失敗し続けても、きっと良い成果が生まれると信じています。なので、これから起業したい人に少しでもお役に立てればと思います。

起業家が健康的に働く 4 つの方法

起業家が健康的に働く方法として、僕が感じたのは

  • 約束を自分で厳しくしすぎない
  • 期待値調整を上手にする
  • 不確実なことはなるべく早く終わらせる
  • 責任は分散させる

この 4 つです。

約束を自分で厳しくしすぎない

起業家には上司はいませんので、基本約束する相手は投資家や取引先になると思います。上司だったら叱ってくれるかもしれませんが、投資家や取引先はそんな優しくないので、どうしても起業家からしてみると「投資家や取引先との約束は確実に守りたい!」と思ってしまうと思います。

約束を守りたいという気持ちはあるべきです。しかし一方で、約束を自分で厳しく設定しすぎると、自分も現場も辛くなってしまうこともありますよね。起業家は自分の責任でやっているわけなので、この責任感がマイナスに働いてしまってはもったいないと思います。

そこで、約束をする時は、自分たちにとって少し甘めにするのをおすすめしています。例えば、「1 ヶ月でリリースできる」と思ったなら、「3 ヶ月でリリースできる」と言いましょう。

これは心理的にはすごく難しいことだし、勇気がいることだし、相手によっては失望されることかもしれません。それでも、出来ない約束をするより絶対に絶対に良いです。ここは頑張ってください。

あと、 3 ヶ月で出来ることを前提に事業の計画を立てた方が、その期間に様々なリスクを内包して確実に事業を進めることができます。

誰に急かされることも無く、結果的に当初の想定より早く進むとさえあると思います。突発的なトラブルで心を痛める機会もかなり少なくなると思われます。

「人と約束する時、 3 倍で言う」この法則は思えておいた方がいいと思います。

期待値調整を上手にする

これは起業家に限らずですが、あまり人の期待値を上げない方が良いです。あまり自分自身にも期待しない方がいいです。プライドはなるべく低い方がいいです。人に対しては、下から目線、低みの見物を決め込みましょう。

ただ、会社を経営していると期待されないことは実際には難しく、期待されないと資金が集まらなかったり、人材採用ができなかったりします。

なので、大事なのは「期待値調整」です。期待値を上げすぎたなと思ったらちょっと下げる、下がりすぎたなと思ったらちょっと上げる、と状況に応じて使い分けちゃいましょう。期待から得られるメリットとリスクを考えながら対外的なコミュニケーションをしていった方が良いのかなと思います。

期待されてなければ、一度や二度の失敗なんてことはないさ!

不確実なことはなるべく早く終わらせる

不確実なことがあると、人間そこに期待してしまうものです。不確実なことはなるべく早く答えを出しましょう。 例えば、「〇〇層から 100 万 DAU が見込める」みたいな話は、さっさとリリースして「〇〇層から 1 万 DAU を得ており、月ベースで 10% 成長している」というような話にしてしまうと良いと思います。

一番まずいのは、楽観的な予測を残したままリリースもせずプロジェクトが半年とか過ぎてしまうケースです。 半年もリリースされなかったらどう思いますか?きっとリリースの時に「ついについに、半年かけた大作がリリースされる!!」みたいに思われちゃうのではないでしょうか?

前項でも書いたように人から実態以上に期待されると、失敗に対する心理的コストが上がってしまうので、期待の余地もないくらい早く可能性に答えを見出しましょう。。

責任は分散させる

責任重大な仕事を一人で背負いこまないことも大切です。特に、以下のような

  • メールや文章を書く仕事(特に謝罪文)
  • 人前での発表やプレゼンの準備
  • 株主総会の議事録などを作る仕事

やろうと思えば何時間でも改善出来るような「作業者の誠意に依存したような仕事」は、特に二人でやった方が良いと思います。

例えば、いろいろ送り難いメールとかあるじゃないですか?そういう時は一人が荒く文章を書いて、もう一人がレビューして送信ボタンを押す(文章を書いた人と、送信した人が別になるようにする)みたいに「作業の責任」と「確認&決定の責任」を分離すると良いと思います。

ソフトウェア開発でいうと Pull Request を使ったコードのマージを想像すると良いかもしれません。あれも「コードを書いた責任」と「レビュー&マージした責任」を分けるようなものだと思ってます。

その後の会社経営について

彼の死後、もう一人のメンバーである id:mizzusano と手探りしながら会社経営を行ってきたのですが、分からないことだらけで本当に大変でした。投資家の方や友人に本当に助けられてここまでやってこれたのだと思います。

途中何度かお金が本当に無くなった時、事業に行き詰まった時、様々な場面で助けてくれた方々、本当に心から感謝しております。ありがとうございます。

この経験から思ったこととして「一度起業している人は優しい」というのがありました。起業家で成功してキラキラして見える人でも本当はめちゃくちゃ苦労していて、様々な部分で同情的に接してくれたのかなと思います。自分もこれからもし人に頼られたことがあったら、その人には出来る限りのことをしようと思っています。

あと時々、起業家の人が炎上しているのを見るといたたまれない気持ちになるので、みんな優しくしてあげて欲しいです。

f:id:amachang:20171010162730j:plain
写真はお金が無くて落ち込んでいた時に id:kensuu が撮影してくれました!

プログラマーが起業するということ

これから起業したいプログラマーの人に向けて、以下のことを助言したいです。

  • スタートアップの仕事はほとんど「コードを書く」こと
  • 流行りの技術をキャッチアップする時間がない
  • 大企業では使えないプログラマーになるかもしれない問題

プログラマーと一緒に起業しようと思っている人も、相手の気持ちになって読んでいただけるとありがたいです。

スタートアップの仕事はほとんど「コードを書く」こと

これはカクテル社(営業やマーケティングがほとんどいらないサービスを作っていた会社)特有のことなのかもしれませんが、会社のほとんどの作業は「コードを書く」時間でした。

なので、これからコンシューマー向けのサービスで起業する人は、プログラマーじゃないメンバーも「いざとなったらコードを書く覚悟」を持っていた方が良いかもしれません。

最近はどの会社もエンジニア採用に苦戦していて、「エンジニアの採用費を考えたら会社を買収した方がお得だよね!」という状況はあるので、会社のエンジニア率が高いと会社の EXIT の選択肢の幅も広がると思います。

(このあたりの細かいことは以前会社のブログに書いたことがあるので興味があればご覧ください)

流行りの技術をキャッチアップする時間がない

スタートアップをやっていると全くと言っていいほど自分のためのコードを書く時間が無いです。なので、流行りの技術を勉強する時間もほとんどありませんでした。

これは覚悟した方が良いかもしれません。

まあ「ライブラリ」「フレームワーク」「ツール」「プログラミング言語」などは、後からでもキャッチアップできるかもしれません。しかし、「機械学習」などの分野は、毎日のように新しいモデルが提案されるなど「分野が成長する速度」が「学習速度」に比べて非常に速いと感じます。今、一生懸命勉強してますが、いつか追いつけるかは謎です。

大企業では使えないプログラマーになるかもしれない問題

スタートアップを終えて、自分が市場から求められる人材か?ということに関して思ったことを書きます。

スタートアップで求められるエンジニア

基本的にスタートアップのエンジニアは以下のようなことが求められます。

  • とにかく早く実装する
  • シンプルに必要な機能だけ実装する
  • サーバもアプリもウェブも全部自分で書く
  • 基本はライブラリを使う

要は「拙速でフルスタックで、ライブラリを上手く使える人」というのが感じです。

しかし、こういうエンジニアは大企業ではあまり求められないかもしれません。

大企業で求められるエンジニア

大企業は、以下のようにスタートアップとは置かれる状況が全然違います。

  • 失敗に対するリスクが大きい(速度ばかりを重視できない)
  • プロダクトもそのマーケットも成熟している(シンプルな機能だけではダメかもしれない)
  • 資金があるので、専門性の高いメンバーを揃えられる(全部ひとりがやらなくても良い)
  • 資金があるので、ライブラリ自体を自社で作れる。コミッタを雇ったりもできる

要は「よくテストを書き、専門性が高く、品質の高いコードを書く人」というのが求められるのではないでしょうか?

自分は何が得意なエンジニアなのか?

カクテルを終えた今、この問いにどう答えて良いかわからない自分がいたりします。

ちゃんと自分の方向性を持ち、いざとなった時に潰しの効くエンジニアでいるということも常に意識していた方が良いかもしれません。

スマートニュースとこれからのこと

スマートニュースで働き始めて早 3 ヶ月が立ちました。

前々職のオーマから数えるともう約 9 年ぶりに会社員になったわけで、浦島太郎のような日々を過ごしております。そのあたりの感想、スマニューについて思ったこと、今後のことなどについても書いておきたいと思います。

めっちゃ人見知りになってた

6 年間ほとんど外出しなかったということもあって、ほとんど id:mizzusano としか会わない日々を過ごしていました。なので、今めっちゃ人見知りしてます><

まんじゅうこわい

必要なくても、適度に人と会っておくのは大切なことだと思いました。

「異能なエンジニア」を活かす環境作り

スマニューは非常にエンジニア駆動な会社で、いわゆる「異能なエンジニア」がビジネスに対して最大限に実力を発揮している会社だなあと感じています。

鍵は「お互いの特性の理解」「部署を超えた連携」にあると思っています

会社って社員が増えると、部署ごとに「価値観村」のようなものが出来てしまっている例とかよく見かけませんか?(近寄り難い開発部とか) スマニューにはそういう分断が全然無いんですよね。

あと、社内にコーヒースタンドのような人が混ざり合う空間があったり、 Slack でパブリックに会話する文化が根付いていることがそういう雰囲気作りに影響しているのかもしれません。

f:id:amachang:20180529144900j:plain
執務スペースの脇にあるコーヒースタンド。バリスタさんが美味しいコーヒーを作ってくれます😋

こういった社内異文化コミュニケーションが成立しているところは、新参者としてもスマニューに入っていく中で非常に有り難く感じました。

会社の雰囲気作りに悩んでいる経営者の人は、ぜひ「社員の憩いの場」と言いますか「タバコの無い喫煙所」のような空間を設けてみるといかがでしょうか?

世界への挑戦

国内では有数のアプリになってきているスマニューですが、みんな現状にまだまだ満足しておらず「ようやく世界での挑戦権を手に入れた」というのが社内の雰囲気です。

僕もこれからスマニューの世界展開の中で少しでも貢献していけたらいいなと思っています。

今現在の僕の仕事は、グロースハックといいいますか、マーケティングをエンジニアリングの力で自動化、最適化していくみたいなことをやっています。 海外では Marketing Technology などと呼ばれる領域で、グローバル進出を目指すスマニューにおいて今後力を入れていく領域になるんだと思っています。

こういうこと一緒にやりたい人がいたら是非連絡ください!

エンジニアが足りない

スマニューでは今新しいプロジェクトが次々と始まっていて、エンジニアがまだまだ足りません!

id:mizzusano が今温めている企画もかなり面白そうだし、今めちゃくちゃ面白い仕事がたくさんあるので、面白いことやりたいエンジニアの人ぜひ一緒に仕事しませんか?

最後に

長々と書いて来ましたが、僕は元気に楽しく働いています。

エンジニアの人は、ぜひスマニューの社食で一緒にランチでもしませんか?

ツイッターか、フェイスブックで気軽に連絡してくださいねー!

f:id:amachang:20180425193021j:plain
スマニュー入社後のカクテル社員 @kazzumaxid:mizzusanoid:amachang (kazzumax は最後の 1 年カクテルにジョインしてくれました)

(おまけ) ピクトリーはこれからも続きます!

色々と事業の失敗についても書きましたが、ピクトリー自体は順調に運営されており、これからもサービスは継続していきます。

ただ、今後はよりピクトリーを発展させるためにも僕らよりも適したプレーヤーにピクトリーを譲渡することを検討しています

僕自身非常に思い入れのあるサービスですので、みなさまこれからもピクトリーのことをよろしくお願いいたします!

Windows7 搭載マシンを買ってきてやったことまとめ

はじめに

みなさま、こんにちは!年末の忙しい時期ですが、お元気ですか?
僕はなんとか元気です><
使っていた PC を壊してしまったので Windows7 搭載マシンを買ってきましたので、購入から初期設定、便利なアプリのインストールまでここにメモしておきたいと思います!

購入まで

と言うことでまず購入までにやったことをまとめてみたいと思います

価格.com で調べる

まずは、価格.comを使って、以下の条件で良さそうなパソコンを探してみます。

  • 8 万円以下の価格
  • それなりのグラフィックボード(最近 Minecraft っていうゲームをやってるので)
  • それなりのメモリ(メモリ安いので)
  • それなりの CPU
  • USB 3.0 (データ移行のときにハードディスクを USB 3.0 でつなぎたいので)
  • ディスクアクセス速度は、ある程度遅くても良い(RAM ディスクで頑張る戦略)
買うパソコンを決める

と、いうわけで以下のパソコンを購入することにしました

製品名 Aspire AS5750G-A78D/K
CPU Core i7-2670QM
メモリ 8GB
メインストレージ HDD 500 GB
グラフィックボード GeForce GT 540M 1GB
USB 3.0 有り
現時点での価格帯 75000 〜 80000 円くらい

公式ページ
価格.com のページ

パソコンを買いにいく

パソコンはその場ですぐに買いに行きたい派なので、価格.com のページから、「最安値に近い価格」で「地域が東京」で「店頭同価」なお店を調べてみます。
すると、以下のお店が良さそうだったので、そこに行ってきた
アキバ流通
で、実際に店頭に行ってみると倉庫みたいにパソコンが並んでいて、びっくり。ギーク心をくすぐられますね!

あと、このお店のすごく良いなと思ったところは、まったく接客されないところですね!めちゃめちゃ気楽に買うことができました!
棚の中に、お目当てのパソコンがありました!

実際に購入した価格は 75150 円でした。

せっかく秋葉原に行ったので

いろいろ衝動買いしちゃいました☆(ゝω・)vキャピ

開封の儀

無事、購入することが出来たのでさっそく開封してみましょう!

さっそく開けてみます!
じゃじゃーん!まさかの箱 in 箱!

最終的な中身は、バッテリー、 AC アダプタ、ケーブル、本体となんか紙類。

とりあえず
最近は CD-ROM とか付いてないんですな

最初の起動

開封したら、さっそく起動します

Windows の初期設定
  • ポチっとな
  • 以下のような画面が出てくるので、「次へ」をクリック
  • ユーザー名を「amachang」、コンピュータ名を「amandows」にして、「次へ」をクリック
  • パスワードを入力して、「次へ」をクリック
  • 「同意します」のチェックボックスをチェックして、「次へ」をクリック
  • 「推奨設定を使用します」をクリック
  • 日時をあわせて、「次へ」をクリック
  • 「ワイヤレスネットワークへの接続」の画面で、無線ネットワークを一つ選択して、「次へ」をクリック
  • 「コンピュータの場所」を選んでクリック(わからない場合はパブリックネットワークにしとけば良いと思う)

これで、 Windows の初期設定が終了します!

さて、使い始めるかと思ったら

なんか、 Acer の登録画面が出てきました><

めんどくさいので「省略」をクリック

さて、こんどこそ

と、思ったら今度はマカフィー><

めんどくさいよう><
(まあ、このおかげで多少安く買えるんでしょうね)
とりあえず、マカフィーを使う気はないので「後でアクティベート」するを選択する

最初のデスクトップ

一番最初のデスクトップはこんな感じ。

割とすっきりしてますね!わくわく!

性能を見てみる

では、さっそく性能を確認してみましょう

  • デスクトップ左下の丸いボタン(以後、「スタートメニュー」)をクリック
  • 「コントロールパネル」をクリック
  • 「システムとセキュリティ」をクリック
  • 「RAM の量とプロセッサ速度の表示」をクリック
  • おおおお!ちゃんと 8GB 認識されてますね!
  • 次に、さきほどの「システムとセキュリティ」の画面に戻り、「Windows エクスペリエンスインデックスの確認」をクリック
  • むむむ。やはりハードディスクのアクセス速度がボトルネックになっていますね!後でちゃんと作戦を考えましょう

Windows Update

正常に起動したことを確認したあとは、何はともあれ Windows を最新の状態に更新します

  • 「スタートメニュー」をクリックして、「すべてのプログラム」をクリック
  • Windows Update」をクリック
  • 「更新プログラムのインストール」をクリック
  • 暗転して、「ユーザーアクセス制御」のウィンドウが表示されるので「はい」をクリック(以下、ところどころでこれが起こるがすべて「はい」)
  • 同意確認などが表示された場合は、同意しつつ進める
  • 処理が終了し、再起動が必要な場合は「今すぐ再起動」をクリック
  • 再起動後、もう一度「スタートメニュー」→「すべてのプログラム」→「Windows Update」をクリックし
  • 「更新プログラムは正常にインストールされました」が表示されるまで、「更新プログラムのインストール」と「今すぐ再起動」を繰り返す

はい!これで、 Windows が最新になりました!やったね!

リカバリディスクの作成

プリインストール版の Windows7 の場合、OS のインストールディスクが付いていないので、出荷時の状態に戻すための「リカバリディスク」を作成する必要があります

  • 「スタートメニュー」をクリックして、「すべてのプログラム」をクリック
  • Acer」をクリックし、「Acer eRecovery Management」をクリック
  • 「デフォルトイメージディスクの作成」をクリック(このデフォルトイメージディスクっていうのが、俗に言う「リカバリディスク」ですね)
  • 「開始」をクリック
  • DVD-R メディアをドライブに入れて「はい」をクリック
  • 「デフォルトイメージバックアップの作成」が始まるので、しばらく待つ
  • ディスクを交換しつつしばらく待つと、計 3 枚のリカバリディスクが完成しますので、大事に保管しておきます。

これで、パソコンが壊れたときは出荷時の状態に戻せますね。えっとどこに保管しよう><
リカバリディスクができたら、ウィンドウを閉じます。

ディレクトリの構成を考える

次に、ディレクトリ(フォルダ)をどういう風に使っていくかという方針を考えます

まとめると

C:\Program Files … インストーラ付きアプリ
C:\Proguram Files (x86) … インストーラ付きアプリ
C:\Users\amachang\
  - bin … CUI 系アプリ
  - tools … GUI 系アプリ
  - archives … インストーラとか配布ファイル
  - dev … 開発時のソースファイルや、リソースファイルを置く
  - data … 雑多なデータ

不要なアプリやファイルの削除

さて、いろいろな設定やアプリをインストールする前に、不要なプリインストールされたアプリやファイルを削除しましょう。
基本的に 500GB のハードディスクなので、ファイルの容量が邪魔になることはありませんなので、以下ようなプリインストールされたアプリやファイルを削除する方針でいきたいと思います。

  • よく使うディレクトリや、なんらかのリストに表示され、一覧性をそこなうファイルやアプリ
  • 不必要なのに起動するアプリ
不要なアプリを探すため Process Explorer をインストール

不要なアプリを探すために、 Windows に元々入っている「タスクマネージャ」を使ってもいいのですが、更に便利な「Process Explorer」というアプリをインストールします。

これで Process Explorer が使える状態なので、さっそく起動してみましょう

  • 解凍された procexp.exe をダブルクリック
  • 「Process Explorer License Agreement」ウィンドウが表示されるので、「Agree」をクリック
  • すると、以下のようなプロセス(アプリの実行単位)の一覧が表示される

おおお!これは便利ですね!
また、以下のようにユーザーアクセス制御を介すと、すべてのプロセスの詳細が見られるようになります

また、以下の手順で実行ファイルの位置を表示するようにしておきます

  • カラムのところを右クリックして「Select Columns...」をクリック
  • 「Select Columns」ウィンドウで「Image Path」のチェックをオンにして「OK」をクリック


そうすると、以下のように「Path」というカラムに実行ファイルの位置が表示されるようになります。
これで、どこにインストールされたアプリが要らないかを検討することが出来ますね!

一般的なアプリのアンインストール方法

不要なプロセスの概要が分かってきたら、まずは以下の手順でアンインストールを試みます。

  • 「スタートメニュー」から「コントロールパネル」をクリック
  • 「コントロールパネル」ウィンドウから、「プログラムのアンインストール」クリック
  • 「プログラムのアンインストールまたは変更」ウィンドウにアプリ一覧が表示されるので
  • 不要なアプリを選んで右クリックし「アンインストール」をクリック

このようにして、一般的なアプリではアンインストールを行うことができます。
このとき、「Process Explorer」の「Company Name」を覚えておいて、「プログラムのアンインストールまたは変更」での「発行元」を調べると見つけやすいです
アプリによってはコントロールパネルで削除できないアプリもあります。
そのときの削除方法は以下のようになります

  • 方法の調べ方
    • アンインストール方法をネットで検索する
    • 「Process Explorer」の「Company Name」で表示される会社に問い合わせる
  • 方法は以下の処理をやる可能性がある
    • 個別にアンインストール用のプログラムがある場合はそれを使う
    • 実行ファイルやディレクトリを削除する
    • レジストリを削除する
Aspire 5750G にプリインストールされているアプリのアンインストール

では、今回買ったパソコンでプリインストールされている不要なアプリをどんどん消していきましょう。
明らかに必要そうなアプリはここには乗せていません。

アプリ名 常駐プロセスの実行パス 要不要 備考
Norton Online Backup C:\Program Files (x86)\Symantec\Norton Online Backup\NOBuAgent.exe 不要 「30 日間だけ無料のオンラインバックアップシステム」のためのプロセスは要らない
Renesas Electronics USB 3.0 Host Controller Driver C:\Program Files (x86)\Renesas Electronics\USB 3.0 Host Controller Driver\Application\nusb3mon.exe USB 3.0 を制御するためのプロセスと思われる
Realtek High Definition Audio Driver C:\Program Files\Realtek\Audio\HDA\RAVCpl64.exe, C:\Program Files\Realtek\Audio\HDA\RAVBg64.exe オーディオドライバを管理するためのプロセスと思われる
よくわからないけど NVIDIA 関係 C:\Program Files\NVIDIA Corporation\Display\NvXDSync.exe, C:\Windows\System32\nvvsvc.exe, C:\Program Files (x86)\NVIDIA Corporation\NVIDIA Updatus\daemonu.exe グラフィックドライバ関連と思われる
NTI Media Maker 9 なし? 不要 CD とか DVD オーサリングツールは要らないかなー
Acer Backup Manager C:\Program Files (x86)\NTI\Acer Backup Manager\IScheduleSvc.exe, C:\Program Files (x86)\NTI\Acer Backup Manager\BackupManagerTray.exe 不要 バックアップは自分でやるし、プロセスを常駐させるほど必要と思えない
Bing Bar なし? 不要 ブラウザのバーは要らない
Windows Live Essentials 2011 なし? 不要 まあ、便利なものもあると思うけど全部は要らないので消す
Microsoft SQL Server 2005 Compact Edition [ENU] なし? 不要 ちょっと悩んだけど、 Windows Live Essentials も使わないので、消してみる。必要だったらまた入れればいいや
Microsoft Silverlight なし? ときどき必要な場合もあるので、入れとこうかな
.NET Framework 系、 Visual Studio のランタイム系 なし? まあ、いつか入りそうな気もするし
マカフィー インターネットセキュリティ スイート C:\Windows\System32\mfevtps.exe, C:\Program Files\Common Files\mcafee\SystemCore\\mfefire.exe, C:\Program Files\Common Files\mcafee\McSvcHost\McSvHost.exe, C:\Program Files\Common Files\mcafee\SystemCore\\mcshield.exe, C:\Program Files\mcafee.com\agent\mcagent.exe 不要 試用版は要らない
newsXpresso なし? 不要 ニュースはウェブブラウザで見るので
ETDWare PS/2-X64 8.0.6.3_WHQL C:\Program Files\Elantech\ETDCtrlHelper.exe, C:\Program Files\Elantech\ETDCtrl.exe タッチパッド関連。普段は外付けのトラックボール使ってて要らないんだけど、外出時に要るから
MyWinLocker Suite C:\Program Files\EgisTec IPS\PMMUpdate.exe 不要 よく分からない暗号化ツールは要らない。もし必要になったら OpenSSL のユーティリティとかで暗号化するかな
Dolby Advanced Audio v2 C:\Dolby PCEE4\pcee4.exe ちょっと悩んだけど、音がよくなるらしいので入れておく
clear.fi, clear.fi Client C:\Program Files (x86)\Acer\clear.fi\Movie\clear.fiMovieService.exe, C:\Program Files (x86)\Acer\clear.fi\MVP\clear.fiAgent.exe 不要 ホームシアターアプリは不要。変にファイルの関連付けするし常駐プロセスまである><
Acer Crystal Eye Webcam なし? 不要 まあ、ノート PC からそんなに写真とらないかな
Broadcom NetLink Controller, Broadcom Card Reader Driver Installer なし? なんか、ネットワークドライバ関連っぽいので
Acer Updater C:\Program Files\Acer\Acer Updater\UpdaterService.exe ドライバのアップデートとかをやってくれるらしいので
Acer eRecovery Management なし? 不要 もうリカバリディスク作ったので
Acer ePower Management C:\Program Files\Acer\Acer ePower Management\ePowerTray.exe, C:\Program Files\Acer\Acer ePower Management\ePowerSvc.exe, C:\Program Files\Acer\Acer ePower Management\ePowerEvent.exe 不要 Windows Vista のデフォルトのコントロールパネルで同じことが出来るから
Identity Card なし? パソコンのシリアル番号を表示するためだけのファイル。要らないと思うけど、特に常駐プロセスもないので入れといてもいいかな
Welcome Center なし? 不要 名前からしていらない
Acer ScreenSaver なし? 不要 スクリーンセーバーってそんなにたくさん要らない
Acer Registration C:\Program Files (x86)\Acer\Registration\GREGsvc.exe 不要 ユーザー登録とかは要らないかな
Launch Manager 不要 ショートカットキー管理は AutoHotkey でやるので要らない

ふー!要らないものを削除して、だいぶすっきりしました!

アンチウィルスソフトウェアのインストール

今まで、アンチウィルスソフトウェアと言えば長年 Avast! というソフトを使ってきたのですが
今回は MicrosoftMicrosoft Security Essentials をインストールしてみたいと思います。
無料ですし、動作が軽くて良いらしいので

  • まず、 http://windows.microsoft.com/ja-JP/windows/products/security-essentials へ行く
  • 「無料でダウンロード」をクリック
  • ダウンロードされた mseinstall.exe というファイルをダブルクリックして実行
  • 「ユーザーアカウント制御」ウィンドウで「はい」をクリック
  • 「ようこそ」と表示されるので、「次へ」をクリック
  • 「ライセンス条項」が表示されるので、「同意します」をクリック
  • 「プログラムに参加する」が表示されるので、「今はこのプログラムに参加しない」を選択して「次へ」をクリック
  • 「セキュリティを最適化する」が表示されるので、そのまま「次へ」をクリック
  • 「準備完了」と表示されるので、「インストール」をクリック
  • しばらく待つ
  • 「完了」と表示されるので、「スキャンして潜在的な脅威を検出します」のチェックボックスをチェックしたまま「完了」をクリック
  • しばらく待つ
  • スキャンが終わりました!これで、安心!

入力関係の設定

ようやく、最低限パソコンが使える状態になったので、個人的にまずやらなければならない設定として文字入力やショートカットの設定をしていきます。
おおまかに言うとここでは、以下の二つを目的にしています。

  • Dvorak 配列にする
  • 右手小指の酷使を避けるため Enter, Backspace, 矢印キーをすべてショートカットに割り当てる

この設定が毎回めんどくさいんですよねえ><

Dvorak の設定

普通のキーボードは Qwerty というキー配列なのですが、僕は Dvorak 配列でしかタッチタイプできないので配列を入れ替えます。
Dvorak キーにするには様々な方法があるのですが、僕は一番安定しているレジストリを書き換えて DLL を入れ替える方法を使っています。

  • 「スタートメニュー」をクリックして、「プログラムとファイルの検索」のところに「regedit」と打ち込みエンターキーを押す
  • 「ユーザーアカウント制御」ウィンドウが表示されるので、「はい」をクリック
  • 左側のペインで「HKEY_LOCAL_MACHINE」→「SYSTEM」→「CurrentControlSet」→「Control」→「Keyboard Layouts」とダブルクリックで開いていく
  • 「Keyboard Layouts」を開いたあと、「00000411」を選択する
  • 右側のペインの中の「Layout File」という箇所をダブルクリックする
  • KBDJPN.DLL を KBDDV.DLL を書き換える

これで、次回起動した段階で Dvorak 配列になっているので、さっそくパソコンを再起動します!
やった!これでまともに入力が出来るようになりました><!

IME のショートカットの設定

次に IME のショートカットの設定をします。

  • IME のバーの工具箱みたいなボタンをクリックし、メニューから「プロパティ」をクリック
  • 「編集操作」タブを選択して、「キー設定」のタブを「変更」をクリック
  • 開かれた「詳細プロパティ」ウィンドウで、「キー追加」、「削除」、動作の「変更」を行うことができる

今回は、「矢印キー」や「半角/全角」を使わないように、以下のように Ctrl+Space, Ctrl+B, Ctrl+Shift+B, Ctrl+F, Ctrl+Shift+F, Ctrl+P, Ctrl+N を追加します。

  • Ctrl+Space
  • Ctrl+Shift+B
  • Ctrl+Shift+F
  • Ctrl+B
  • Ctrl+F
  • Ctrl+N
  • Ctrl+P
AutoHotkey_L のインストール

次は、各キーに対して様々な挙動をプログラムできる AutoHotkey_L をインストールします。

  • http://www.autohotkey.com/download/ へ行く
  • 「Installer for AutoHotkey_L」をクリックしてファイルを保存する
  • 保存したファイルをダブルクリックで実行
  • ウィンドウが開くので「Next」をクリック
  • 「Lincense Agreement」と表示されるので、「Next」を押す
  • 「Choose Version」が表示されるので、「Unicode (64-bit): Faster, but compiled scirpt won't run on 32-bit systems.」を選択して「Next」をクリック
  • 「Choose Components」が表示されるので、そのまま「Next」をクリック
  • 「Choose Install Location」が表示されるので、インストール先がそれでよければ「Next」をクリック
  • 「Choose Start Menu Folder」が表示されるので、「Install」をクリック
  • インストールが完了したら「Finish」を押す

これで、自由にショートカットキーをカスタマイズするスクリプトを記述することができるようになります。

AutoHotkey スクリプトを書く

AutoHotkey_L をインストールしたら、さっそくスクリプト(このキーが押されたらこう動くという設定が書かかれたテキストファイル)を書きます
スクリプトはどこに置いてもいいのですが、今回はとりあえず僕は C:\Users\<ユーザー名>\bin に置くことにします

  • C:\Users\<ユーザー名>\bin をエクスプローラで開いて右クリックして、メニューから「新規作成」をクリックし、「AutoHotkey Script」をクリックする
  • ファイルをメモ帳で開くとゴチャゴチャと最初から書いてあるので、それを全部消して以下のように書き換える
^h::Send, {BS}
^m::Send, {Enter}

^p::Send, {Up}
^n::Send, {Down}
^e::Send, {End}
^a::Send, {Home}

!h::Send, {Left}
!l::Send, {Right}
!j::Send, {Down}
!k::Send, {Up}

!+h::Send, +{Left}
!+l::Send, +{Right}
!+j::Send, +{Down}
!+k::Send, +{Up}

このファイルをダブルクリックで実行することで、ショートカットキーの設定が読み込まれます
今回のファイルの設定では、 Alt キーを押すと vimキーバインドで移動できて、一部 emacs 風のキーバインドも取り入れています。

AutoHotkey がパソコン起動時の自動起動設定

さっそく AutoHotkey スクリプトをパソコン起動時に読み込むようにしましょう。

  • まず、「スタートメニュー」をクリックし、「すべてのプログラム」をクリック
  • で、「スタートアップ」で右クリックし、メニューで「開く」をクリック
  • 開いたウィンドウに、先ほど書いた AutoHotkey スクリプトのショートカットを作成する

これで、次回からパソコンを起動したら自動で AutoHotkey スクリプトが読み込まれるようになりました!
やったね!

フォントの設定

次に、プログラムを書くときに綺麗な等幅フォントを表示できる環境があるのとないのとでは大違いですね!
フォントがあるとないとではやる気もだいぶ変わってきます><
と、いうわけでフォントの設定をしていきたいと思います。

メイリオ等幅フォントを作る

まず、今 PC にインストールされているメイリオから等幅版のメイリオ「MeiryoKe_Console」を作成します。
手順は

  • http://okrchicagob.blog4.fc2.com/blog-entry-169.html へ行く
  • メイリオメイリオ改・meiryoKe・ttfname3」をクリック
  • 「meiryoKe_gen_6.02rev1.zip」をクリックしてダウンロード
  • ダウンロードした「meiryoKe_gen_6.02rev1.zip」を解凍
  • 次に、「C:\Windows\Fonts」ディレクトリから「メイリオ」を右クリックして、メニューの「コピー」をクリック
  • 「meiryoKe_gen_6.02rev1.zip」を解凍したディレクトリに貼り付ける
  • ファイルがそろったら、実行ファイル「meiryoKe_gen_6.02rev1.exe」をダブルクリック
  • 「生成します」と書かれたウィンドウが表示されるので、「OK」をクリック
  • 「正常終了」と表示されるので、「OK」をクリック
  • 以下のように新しいフォントファイル「meiryoKe_602r1」と「meiryoKeB_602r1」が生成されるので
  • それぞれのファイルをダブルクリックし、開いたウィンドウで「インストール」をクリック

インストールが終了すると、「MeiryoKe_Console」などのフォントが追加されます!

Consolas と MeiryoKe_Console をフォントリンク

個人的に Consolas という等幅フォントが一番開発をやりやすいと感じています。
しかし、困ったことに Consolas で日本語を表示するとデフォルトの設定では、 MS ゴシックで表示されてしまうのです。
MS ゴシックでは、あまり見た目が綺麗ではないので Consolas で日本語を書いたときに MeiryoKe_Console が使われるように設定したいと思います。
この設定を行うには、 Windows のフォントリンクという機能を使います。
まず、レジストリエディタを開きます

  • 「スタートメニュー」をクリックして、「プログラムとファイルの検索」のところに「regedit」と打ち込みエンターキーを押す
  • 「ユーザーアカウント制御」ウィンドウが表示されるので、「はい」をクリック

次に、フォントリンクの設定をするための値を開きます

  • 右側のペインで「HKEY_LOCAL_MACHINE」→「SOFTWARE」→「Microsoft」→「Windows NT」→「CurrentVersion」→「FontLink」とダブルクリックで開いていく
  • 「FontLink」を開いたあと、「SystemLink」を選択する
  • 「SystemLink」を選択した状態で、メニューから「編集」→「新規」→「複数行文字列値」とクリック
  • 右側のペインに一行挿入されるので、「名前」を「Consolas」と入力する
  • 名前を確定したあと、名前をダブルクリックし、表示されたウィンドウに「meiryoKe_602r1.ttc,MeiryoKe_Console」と入力し、「OK」をクリック

これで、次回起動した段階で Consals と MeiryoKe_Console がフォントリンクされた状態になるので、さっそく再起動して確認してみましょう!
ちゃんと、 Consolas で日本語はメイリオのフォントが見えてますね!
こんな感じ

ちなみに、フォントリンク前は以下のような感じでした…

微妙な違いだけど、ここが重要なんです!
これでガンガン Consolas でコードが書けるよ!やったね!

CUI 開発環環境の整備

僕も開発は、基本的に CUI でやりたい人なので、次は CUI の環境を整えたいと思います!

Console をインストール

Windows7 には、デフォルトで「コマンドプロンプト」という CUI の環境が付いているのですが、この「コマンドプロンプト」は使わずに「Console」というアプリをインストールしたいと思います。
正確には「コマンドプロンプト」 のフロントエンドとして、「Console」という UI を使うといった感じです。
「Console」を使う主な理由は、先ほど作った「Consolas + MeiryoKe_Console」のフォントが綺麗に表示できるからです><

  • http://sourceforge.net/projects/console/files/console-devel/2.00/ へ行き、「Console-2.00b148-Beta_64bit.zip」をクリック
  • しばらくするとダウンロードが開始されるので「Console-2.00b148-Beta_64bit.zip」を保存する
  • ダウンロードした「Console-2.00b148-Beta_64bit.zip」を解凍
  • 解凍して出来た「Console2」ディレクトリをどこかに置く(僕の場合は、C:\Users\<ユーザー名>\tools に置く)

次は起動しましょう

  • 解凍された「Console.exe」を起動する
  • 起動した状態だと日本語の表示がおかしくなってしまうので、メニューから「Edit」から「Settings...」をクリック
  • 左側のペインから「Appearance」をクリックし、「Font」→「Name」を先ほどフォントリンクの設定をした「Consolas」を選択し、「OK」をクリック
  • 次にメニューから「View」→「Console Window」をクリック
  • 「Console2 command window」というウィンドウが開くので、そのタイトルバーを右クリックして、メニューの「プロパティ」をクリック
  • 「"Console2 command window"のプロパティ」というウィンドウが開くので、「フォント」タブをクリックして、「MSゴシック」を選択して、「OK」をクリック
  • 「Console2 command window」はもう必要ないので閉じる
  • もう一度、「Console.exe」を起動すると、日本語が表示できるようになっている

しかし、実はこの Console では、日本語表示できるようになっても、まだ IME での入力ができません。
これに関しては、有志の方がパッチを当てたバージョンを公開されていますので、そのバージョンを使わせていただくことにします。

これで、日本語入力も出来るようになります!
やった!

Vim のインストール

次は、 CUI でテキストが書けるように Vim をインストールします。
このパソコンは 64bit 版の Windows7 が搭載されているので、 64bit 版のものをインストールします。

  • http://code.google.com/p/vim-win3264/downloads/list へ行く
  • 「vim73-x64.zip」をクリック
  • もう一回、「vim73-x64.zip」をクリックして、「vim73-x64.zip」をダウンロード
  • ダウンロードした「vim73-x64.zip」を解凍
  • 解凍すると「vim73」というディレクトリが入っているので、そのディレクトリをどこかに配置する(僕の場合は C:\Users\amachang\bin\vim73 に置く)
  • 「スタートメニュー」から「コントロールパネル」をクリック
  • 「コントロールパネル」を開いたら「システムとセキュリティ」をクリック
  • 「システムとセキュリティ」を開いたら「システム」をクリック
  • 「システム」を開いたら「システムの詳細設定」をクリック
  • 「システムのプロパティ」の「詳細設定」が開くので、「環境変数」をクリック
  • 環境変数」の設定ウィンドウが表示されるので、「ユーザー環境変数」の欄を見る
  • 「ユーザー環境変数」の欄に
    • 「PATH」という「変数」の行が無ければ「新規」をクリックして、変数名「PATH」変数値「C:\Users\amachang\bin\vim73」を入力して「OK」をクリック
    • 「PATH」という「変数」の行があれば「変更」をクリックして、変数値の末尾に「;C:\Users\amachang\bin\vim73」を追記し、「OK」をクリック
  • 環境変数」ウィンドウと「システムのプロパティ」ウィンドウを「OK」をクリックして閉じる

さて、これで「Vim」のインストールが終わりました!
これで、 Console を起動して vim と打つことで vim を起動することができるようになりました!
次は、設定をやっていきたいと思います。基本的にテキストは、 UTF-8 で書くという設定でいきたいと思います。
ユーザーディレクトリ直下に以下のような内容のテキストファイルを作って、「.vimrc」という名前で保存します

syntax on

set number
set fileencodings=utf-8,cp932
set encoding=cp932
set termencoding=cp932

set backspace=2

set expandtab
set tabstop=2
set shiftwidth=2
set softtabstop=0
set smartindent

set incsearch

とりあえずこれで内部エンコーディングは CP932 (Shift_JIS)ですが、ファイルエンコーディングUTF-8 がデフォルトの設定になります!

Strawberry Perl のインストール

  • http://strawberryperl.com/releases.html へ行く
  • 「strawberry-perl-5.12.3.0-64-bit.msi」をクリックして、インストーラ「strawberry-perl-5.12.3.0-64-bit.msi」をダウンロード
  • ダウンロードした「strawberry-perl-5.12.3.0-64-bit.msi」を実行する
  • 「Strawberry Perl Setup」というウィンドウが開くので、「Next」をクリック
  • 「End-User License Agreement」が表示されるので、「I accept the terms in the License Agreement」を選択して、Nextをクリック
  • Destination Folder」が表示されるので、「C:\strawberry\」のまま、「Next」をクリック
  • 準備が出来たので、「Install」をクリック
  • 終了したら、「README」のチェックを外して、「Finish」をクリック

次は、環境変数「PATH」を設定しましょう

  • Vim のときと同様に「スタートメニュー」から「コントロールパネル」→「システムとセキュリティ」→「システム」→「システムの詳細設定」→「環境変数」へと進む
  • 環境変数」の設定ウィンドウが表示されるので、「ユーザー環境変数」の欄を見て
    • 「PATH」という「変数」の行が無ければ「新規」をクリックして、変数名「PATH」変数値「C:\strawberry\perl\bin;C:\strawberry\c\bin」を入力して「OK」をクリック
    • 「PATH」という「変数」の行があれば「変更」をクリックして、変数値の末尾に「;C:\strawberry\perl\bin;C:\strawberry\c\bin」を追記し、「OK」をクリック
  • 環境変数」ウィンドウと「システムのプロパティ」ウィンドウを「OK」をクリックして閉じる

これで、 perl コマンドと、 cpan コマンドが使えるようになりました!

CPAN モジュールをインストール

Perl がインストールされたので、 Console を開いて以下のように、便利なモジュールをインストールする

C:\Users\amachang\dev>cpan

cpan shell -- CPAN exploration and modules installation (v1.9600)
Enter 'h' for help.

cpan> install Bundle::CPAN

...

cpan> install App::Ack

...

cpan> install Win32::Console::ANSI

...

とりあえず、ここでは Bundle::CPAN と App::Ack と Win32::Console::ANSI だけをインストールすることにします。
これで、コンソールで便利なソースコード検索機能を使うことが出来るようになりました!

あと、これで何か自動化したいときは、 Perl を使うことが出来ますね!

その他インストールしたもの

  • Putty
    • 普段は SSH で繋いで Linux で開発をするので Putty を入れる
    • Window → Apperance でフォントを Consolas に設定する(この記事の前のほうに Consolas の設定をしているので、日本語も綺麗に表示される)
    • Window → Translation で文字コードUTF-8 に設定する
  • WinShot
    • キャプチャソフト
  • iTunes
    • iPhone との連携と、音楽を聴くために
  • Google Chrome
    • 普段使うブラウザ
  • Firefox
    • 拡張機能には、 Multifox, Firebug をインストール
    • マルチログインが簡単に出来る Multifox が超絶便利なブラウザ
  • IETester
    • 古い IE での動作確認用

RAM ディスクの設定

最後に、このマシンではディスクアクセスがボトルネックになるのは間違いないので、 RAM ディスクを導入します。

RAM ディスクの作成

特に難しくないと思うので省略しますが ソフトウェア ダウンロードサービス | BUFFALO バッファロー を使い、 R: に 1GB の RAM ディスクを作成しました

(こんな感じの簡単なアプリでポチポチ設定できます。)
とりあえず、 RAM ディスクが出来たら再起動します

RAM ディスクの自動保存機能(バックアップモードについて)

バッファローの RAM ディスクには以下のことを行ってくれる自動保存機能(バックアップモード)という便利な機能があるのですが。

  • シャットダウン前にデータを退避
  • マシン起動時にデータを読み込み

これに関してはとりあえず使わない方針でやっています><
理由としては、バックアップすべきファイルが肥大化してしまっては、容量に制限のある RAM ディスクを生かしきれないと考えたからです。
基本的に

  • バックアップしたいものは手動で保存
  • スタートアップ時に読み込みたいものはスタートアップ時に bat ファイルか何かで読み込む

という方針でいきたいと思います><

Process Explorer と Process Monitor でディスクアクセスを調べる

次に、どのプロセスがディスクアクセスしてるかを探ります
具体的には

  • まず Process Explorer でだいたいディスクアクセスの多いプロセスを調べます。
  • 次に、 Process Monitor をインストールして、そのプロセスのディスクアクセスをトレースします。
  • Process Monitor を起動すると、以下のような画面で Win32 API の呼び出しをトレースすることが出来るので、どのディレクトリを RAM ディスクにすれば良いか一目瞭然です。


(この例では、 Operation contains "File" and Process Name contains "Chrome" で調べてます)

具体的にディレクトリが分かったら

具体的にどのディレクトリにアクセスが集中しているか分かったら、そこのディレクトリへのアクセスを RAM ディスクへ向けるようにします。
その方法は、ジャンクションという方法を使います。
ジャンクションは、「ソフトウェアがあるディレクトリにアクセスしようとしたら、実際には別のディレクトリにアクセスさせる」みたいなことが出来るものです。
具体的にはコマンドで、以下のように打ちます。

mklink /j "C:\このディレクトリにアクセスしたら" "R:\このディレクトリにアクセスしたことにする"

こんな感じで C ドライブから R ドライブにジャンクションを張っていきます。

ジャンクション先のケア

今回の場合、ジャンクションを張っている先は RAM ディスクなのでマシンを再起動すると、そのディレクトリ構造もろとも真っ白になってしまいます。
ですので、マシンが起動するたびにスクリプトで RAM ディスクを作りなおしてやる必要があります。
具体的には、「スタートアップ」に bat ファイルを突っ込んでおくことになると思います。

今回は何を RAM ディスクに置いたの?

TEMP 環境変数と TMP 環境変数を設定して R:\Temp へ

mkdir R:\Temp

Chrome はディスクキャッシュの保存先を R:GoogleChromeCache にする

  • Google Chrome が起動中に以下のように、タスクバーを右クリックして、「タスクバーにこのプログラムを表示する」をクリック
  • もう一度、タスクバーを右クリックして、「Google Chrome」を右クリックしてメニューを開いて、「プロパティ」をクリック
  • プロパティウィンドウが開いたら、以下のように「リンク先」の末尾に「 --disk-cache-dir=R:\GoogleChromeCache」を追記し、「OK」をクリック

Flash Player

mkdir R:\FlashPlayerData
rd /s "C:\Users\amachang\AppData\Roaming\Macromedia\Flash Player"
mklink /j "C:\Users\amachang\AppData\Roaming\Macromedia\Flash Player" R:\FlashPlayerData

ダウンロードディレクトリも RAM ディスクの中に入れてしまう

mkdir R:\Downloads
rd /s "C:\Users\amachang\Downloads"
mklink /j "C:\Users\amachang\Downloads" R:\Downloads

IE のキャッシュはインターネットオプションから設定できるので、 R:\IECache とかにしておく

mkdir R:\IECache


スタートアップスクリプト

で、スタートアップ時に以下のプログラムで、 R: ドライブの初期構成を作るようにしておきます!

mkdir R:\Downloads
mkdir R:\Temp
mkdir R:\IECache
mkdir R:\FlashPlayerData
RAM ディスクのログ機能を切る

バッファローの RAM ディスクは、かなり頻繁にログを吐いてディスクにアクセスします。
これでは本末転倒なので、バッファローの RAM ディスクのインストール先(デフォルトでは C:\Program Files\BUFFALO\BFRD4G)を開いて、以下のファイルの Level=9 という記述を Level=0 にします。

  • BRDUtilTray.ini
  • BRDUtil.ini
  • BRDUninst.ini

というわけで

やっと PC のセットアップが終わりました><
ふー、疲れましたわー><
でも、新しいパソコンってなんかワクワクしますね!
みなさんも年末年始、パソコンの整理なのどしてみてはいかがでしょうか
ではではーヽ(´ー`)ノ

ドワンゴの社内ハッカソンに行ってきた!

はじめに

みなさん、こんにちはあまちゃんです。
さて、今日は先日ドワンゴの社内ハッカソンに UT Startup Gym のメンバーとおじゃましてきましたので、ちょっとそのことについて書いてみたいと思います。

ドワンゴのエンジニアがほとんど参加してるらしいです!すごい人数ですね!
こんな人数でハッカソンをやるなんて、すげえ!
ちなみに、入り口はこんな感じ

僕もなんかサービス作ろう!

せっかくハッカソンに参加したんだから僕もなんか作ろうと思って、
事前にライブラリ作っておいて「あとは組み立てるだけ!」みたいな状態にしてたんですけど、
残念ながら完成せず…。
こんど機会があったら、どこかの開発合宿で仕上げたいなと思います。

ドワンゴの人が作ってたものがすごかった

最後に各々が作ったものを発表する LT があって、その発表が凄かったです。

(チラッ)
技術的にも尖っていて、ユーザー視点としても面白いものが多く、さすがニコニコ動画を生んだ会社だなあと思いました!
そのうち、製品の一部として生かされるものもあるかもしれませんね!
乞うご期待です!

ちょっと、会場の様子


(ニコニコ動画の @ 部長。同い年です。きゃー><しんちゃんかっこよす)

(いつになく、真面目風な id:Yoshiori。きっと、エッチなことを考えてるに違いない…。というのは嘘で)

(なんか、真面目風に話してます。後ろにいるのが、髪型でおなじみの右京さんこと id:yaakaito さん。)

(右京さん(id:yaakaito)、単体でパシャ。ハッカソンで彼の作ったものがめちゃめちゃ凄かった)

(java-ja の@さん、ステキな笑顔♥ 左後ろに写り込んでる人が…)

(http://mobilehackerz.jp/ の人!)

(mobilehackerz さんの名刺はなんと基盤!すげー!)

(id:con_mame さんと id:kusigahama さんを発見!なんか、はてなダイアラーからすると、すごい安心感ある二人組!)
f:id:amachang:20111219184858j:image
(左から、景虎さん、 id:Yoshiori 、みゆっき (現役高校生!!) こと id:toriimiyukki さん、そして、@:] さん!!このショットは貴重やー!)

(本部長@さんの手から凍てつく波動がー!)

(node.js の meso さん、こと id:t_43z さん!ハッカソンでは、さくっと node.js でウェブサービスを作っちゃうところがすげーと思った!)

(安定の id:hogelog さん、久しぶりに会ったらなんか、さわやかっこよくなってた!会社では id:Yoshiori とお仕事してるらしいお)

(@ さん、@ さん。 PS Vita のニコニコアプリを作ったチームらしいです!触って見たんですけど、ゲーム機でニコニコ出来るっていいですねー!)

まあ、そんなこんなで

ハッカソン楽しかったです!

(最後にちょっとみんなでピザを食べて)

(id:Yoshioriid:con_mame ちゃんと一緒に飲みにいってー)

(歌ってー)
帰るころには、すっかり終電でした。
最近 id:Yoshiori は、ニコニコ静画電子書籍アプリをやってるみたいで、今いちおし!らしいです!
iPhone アプリで週刊のマンガがタダで読めるのでなかなか良いですね!

最後に

三つ印象的だったことを話したいと思います。
一つ目は、ピザパーティのとき本部長の @ さんが「ドワンゴのエンジニアであることを、ある程度誇っても良いと思っている」と言っていたことです。
二つ目は、「ドワンゴではクリエイターにしっかりとお金が落ちるような、コンテンツの提供を目指している」という id:coji さんのお話です。
そして、三つ目は、「もの作り」に関して @ さんと話したときの、「ニコニコ動画では様々な機能を実装し検討してはそれをお蔵入りすることが多い」というお話です。
優秀なエンジニアを抱えていながら、技術だけに頼ることなく、常にユーザーとクリエイターの方に目を向け続けている、そしてそれを誇りと思っている。改めてドワンゴという会社の底力を感じた一日でした
ドワンゴのみなさん、昨日はありがとうございましたーヽ(´ー`)ノまた遊びにいきますね!

Facebook 向けウェブサービスは IE6 に対応すべきか ( 2011年12月の Facebook のブラウザシェア )

はじめに

みなさん、お元気ですか><リリースも終わって、一息ついたあまちゃんです!
ヽ(´ー`)ノわー
さて今日は、最近「お花サプライズ!」というサービスをリリースしたのですが、そのときにちょっと面白いデータを見つけたのでそのいきさつも含めて紹介したいと思います。

(今日のテーマはこの円グラフ)

フェイスブック系のサービスはどのブラウザに対応すれば良い?

よく、ウェブサービスを開発するときの悩みとして「古いブラウザでのデザインをどのくらいケアするか?」というものがあります。
「お花サプライズ!」でも、割と短い期間で実装することを目標としていたり、本番の HTML を書いた経験があまりないメンバーが多くいたことで「IE6 や IE7 への対応が鬼門なんじゃないか?」という心配が常にありました。
そこでよぎる甘い誘惑

このご時世、 IE6 とか IE7 に特別対応する必要なんてないんじゃね?

で、調べてみると大概の場合は「やっぱり IE6 や IE7 は無視できない… orz」となるのですが、「お花サプライズ」は、ターゲットユーザをフェイスブックだけに限定しています。
フェイスブック自体が「IE6 を非推奨にしていたりする」ということもあるので

ひょっとしたら IE6 や IE7 をそこまでケアしなくても大丈夫なんじゃないだろうか?

そう思って、ちょっと調べてみました。

ウェルカムページメーカーのデータをもとに調べる

実は、お花サプライズ!を作る前にちょっと作ったプチサービスがありまして、それがフェイスブックページのウェルカムページを作るサービス「ウェルカムページメーカー」です。
作ってからずっと放置してるんですけど、何げにずっと伸びてて、今は 3100 ページ以上のフェイスブックページに導入されていて、月間ユニークユーザーベースで 110,000 人からのアクセスがあります。

(9月〜今日までの訪問数、にょきにょき〜)
使われているページも、アナウンサーのページや、 歌手のページ、アニメのページ、EC サイト、企業のページ、個人のページと色々なページに使われていて、そこまで偏りはないと思うので、このサービスの統計をもとにフェイスブックでのブラウザシェアを考えてみたいと思います。
また、フェイスブックのウェルカムページを見れるのは基本的には PC なので、モバイルはこの統計には含みません。

昨日から 30 日前までのデータを使う

まずは、バージョンを問わないブラウザのシェアを見てみると以下のようになりました。
訪問数ベース↓

PV ベース↓

やはり、 IE を使っている人が多いですね!
では、次に IE をバージョンごとに分割したグラフを作ってみます。
訪問数ベース↓

IE6: 3.15%、 IE7: 5.09%
PV ベース↓

IE6: 3.78%、 IE7: 5.87%
表にまとめると以下のようになりました

ブラウザ 訪問数(%) PV(%)
IE6 3.15 3.78
IE7 5.09 5.87
IE8 27.92 32.81
IE9 14.86 19.04
IE10 0.00 0.00
Chrome 23.04 16.36
Firefox 14.34 13.77
Safari 8.68 6.16
Android Browser 1.52 0.98
Opera 0.51 0.52
0.89 0.71

やはり、フェイスブックユーザに限定すると IE6 や IE7 のユーザが少ないことが分かりますね。

各ブラウザに対応するために必要なコスト

次に、各ブラウザに対応するコストを僕の主観で数値化してみる
以下の数値は、プロジェクト全体でかかる時間のうち、特定ブラウザへの対応時間以外にかかる時間を 1000 としたときに、どのくらい時間を費やす必要があるかを数値化したもの

ブラウザ JavaScript で同じ挙動を実現するのに必要な時間 CSS で文言が見えないなどの大きな崩れを解消するのに必要な時間 CSS で見た目の崩れをすべて解消するのに必要な時間
IE6 10 20 60
IE7 10 10 30
IE8 2 1 5
IE9 2 1 3
IE10 2 1 2
Chrome 1 1 1
Firefox 1 1 1
Safari 1 1 1
Opera 5 1 2

単位訪問あたりの作業時間を計算してみる

サービスへの訪問数 1% あたりのコストを計算してみる

ブラウザ 1% の訪問に対して JavaScript で同じ挙動を実現するのに必要な時間 1% の訪問に対して CSS で文言が見えないなどの大きな崩れを解消するのに必要な時間 1% の訪問に対して CSS で見た目の崩れをすべて解消するのに必要な時間
IE6 3.17 6.35 15.87
IE7 1.96 1.96 5.08
IE8 0.07 0.04 0.18
IE9 0.13 0.07 0.20
Chrome 0.04 0.04 0.04
Firefox 0.07 0.07 0.07
Safari 0.11 0.11 0.11
Opera 9.80 1.96 3.92

このように見ると IE6 の CSS のくずれを直すこと、また、 Opera の JavaScirpt に対する修正があまり生産的でないことが分かりますね><

というわけで「お花サプライズ!」では

以下のようなポリシーでブラウザ対応することにしました

  • IE6
    • JavaScript はちゃんと動くように
    • 大きく崩れてても気にしない。ただし、押せないリンクやボタン、隠れて読めない文字があるのは許さない
  • IE7
    • JavaScript はちゃんと動くように
    • レイアウトが大きく崩れてるようなのは修正。多少の崩れは気にしない。押せないリンクやボタン、隠れて読めない文字があるのは許さない
  • Opera
    • 試さない(運任せ)
    • きっと、 Opera さんならやってくれる…!!!
  • 全般的に
    • ブラウザのバグに依存したコードは書かない

まあ、そもそも

特定ブラウザに「対応する」って言い方はあまりよくないですね(><ごめんさない
こういう場合は、「なるべく多くの人が使ってるブラウザが実装してない仕様を使わないようにする」というのが正しいのかもしれません。
まあ、何にせよ。
これだけ色々な種類のブラウザが出てくると一つ一つのブラウザへの対応というものの重要性は薄れつつあるのかもしれませんね。
それなりに多くのブラウザでそれなりに動くのがちょうどいいと思うのですよヽ(´ー`)ノ

最後に

みなさんも、フェイスブックユーザをターゲットとしたサービスを作ることがあれば参考にしてみてくださいー
ではではーヽ(´ー`)ノ

ソーシャルギフトサービス「お花サプライズ!」をリリースしました!

僕たちのウェブサービスはまだはじまったばかりだ…ビシッ!! m9( ・`ω・´)

はじめに

お久しぶりです。三度の飯よりも、パイナップルが好きなあまちゃんです><
みなさん寒い季節ですが風邪とかひいてないでしょうか><
さてさて、今日、お花サプライズ!というウェブサービスをリリースしましたのでちょっと紹介したいと思います><

どんなサービスなの?

お花サプライズ!とは簡単に言うと「友達の誕生日にみんなで花束を贈るサービス」です。
今、流行りのソーシャルギフトってやつですね><!

何で、お花なの?

名前でも分かるように、このサービスではプレゼントは花束に限定しています。
それは、花束が「みんなが好きのものを選んで、最終的に一つの大きなプレゼントに出来る」というコンセプトに最も近い素材だったからです。
みんなが好きな花を選んで、それが一つの大きな花束になってプレゼントされる。
そんなサービスを目指しています><

簡単なサービスの使いかた

説明ばかりでもアレなので、画面を見せながら簡単に使い方を紹介したいと思います。

1. まず、フェイスブックでログインします。

ポチっとな

2. 次に、花束を贈りたい人を選びます

フェイスブックでログインすると、あなたの友達の一覧が表示されます。ぜひ、仲良しの友達を選んでみてください!

友達を選ぶと以下のような画面が表示されます。

この画面は本人からは見ることが出来ないページで、こっそりと誕生日に花束を贈る企画を進めることになります。

3. 自分が贈りたい花を選ぶ

さっそく花を選んでみましょう

花は誕生日の時期によって種類が変わります。
友達に似合う花を選んでみてくださいね。

4. メッセージを書き込む

花を選ぶと、誕生日のメッセージを書くことが出来るようになります

その人に普段は言えない感謝の気持ちを伝えてみましょう。

5. 渡しに行く人を決める

お花サプライズ!の重要なコンセプトの一つに「手渡し」というものがあります。
このサービスでは普通のソーシャルギフトと違い、花を選んだ誰かが、誕生日の友達に直接花を渡しに行くのです。

何故手渡しなの?

それは、最高のサプライズを演出するために、手で渡すというコストは絶対に省いてはいけないと考えたからです。
花束を贈られた人は、みんなからのメッセージと、みんなが一本一本選んでくれた花束を直接受け取って、
はじめて「みんな、自分のために頑張ってくれたんだ。ありがとう」という感情が生まれてくると考えました。
だから、やっぱり「手渡し」じゃなきゃダメなのです。
ぜひ、みなさんも直接花束を渡しに行く「お届け係」に立候補して花束を渡しに行ってみませんか^^?

開発秘話

実は、この「お花サプライズ!」は、以前に紹介した UT Startup Gym という勉強会のメンバーで作ったサービスです。
開発期間は 2 ヶ月半くらいで、かなりスピーディーにリリースにこぎ着けることができました。
開発メンバーは、僕と 4 人の学生でその 4 人は、半年前までプログラムをほとんど書いたことがないという状況でした。
そんな中、どうやってこのサービスがリリースに向かっていったか。
UT Startup Gym の紹介もかねて、開発秘話をお話したいと思います。

4月 勉強会スタート、プログラミングを学ぶ


4 月に今の開発メンバーが、初めてプログラムの勉強を始めました。
開発のノウハウを毎週土曜日に 3 〜 6 時間みっちり叩き込みました。

9月13日 〜 9月15日 開発合宿

だいぶメンバーが成長してきた 9 月中旬、このサービスの開発が始まりました。
企画は 飯塚 修平 の持ち込んだものでした。

(お花サプライズが生まれた瞬間)
この開発合宿の 3 日間で、このサイトのほとんどのフローが完成します。
しかし、まだ、花をどうやって実際に送る?課金はどうするの?などたくさんの問題はありました。
ただ、この時期に動くものを完成させたということが後々に良い方向に働きます。

9月26日 〜 10 月 中旬 花贈りを出来るように走り回る

合宿が終わってから、様々な人に紹介を頂き、花を扱う仕事の人に「お花サプライズ!」のデモを見せて回りました。
バラ農園に行って、生産者様の声を聞き、花業界の勉強をしたり、花市場に突撃したり、花の通販業者様にアドバイスを頂いたり、あっちこっちに飛び回ります。

そして、花の通販サイトを運営しているブラウズ様と無事契約にこぎ着けることができました。
ここで、開発合宿で作ったデモが活躍します。
様々な場で、実際に動くものを見て頂いたことで、生産的な意見や提案をたくさんいただくことができました。
やっぱり、「机上の空論ではなく、実際に動くものを見せにいくというスタンスが重要なのだな」とあらためて思いました。

9月28日 〜 10月末 決済周りの仕様確定

こういうサービスを作るときに、小額決済をどうするかというのは、ちょっとした悩みどころですね。
このあたりもいろんな人と交渉したり、相談したりして決済を行ってくれる会社と契約することができました。
ここでも、実際に動くものを見せることが出来るので、とてもスムーズに交渉は進みます。

11月頭 〜 11月末 仕上げ

そして、すべてが整って怒濤の仕上げが始まります。

(開発合宿で仕上げ作業中の画像)
この作業が一番長く感じ、そして地味で、辛い作業ですね。
ここでも開発合宿を幾度も重ね、少しでもサービスを良いものにするために頑張りました。
そして、ついに

12 月 1 日リリース

今日、ウェブサービスをリリースすることが出来ました!
なんとも言えない瞬間ですね。

(なかなか割れないくす玉…)

(パカーン)

開発メンバーへ

お花サプライズ!は、以下の勉強会メンバーで作りました。

開発中は、辛いこともあったでしょうし、いろいろと厳しいことを言ったりしたこともあったけど、最後までこのメンバーで作りあげることが出来て本当に良かったなと思います。
リリースおめでとう!そして、ありがとう!
これからは、このサイトをどうやって成長させていくかというフェーズに入っていきます。
また乗り越えなければならないことはたくさん出てくると思いますが、一緒に乗り越えていきましょう。

UT Startup Gym に興味を持ってくださっている方へ

みなさんもよかったら勉強会に参加して、自分の実現したいサービスを一緒に作ってみませんか?
興味があるかたは、以下のページをご覧ください!
https://www.facebook.com/utgym

最後に

今日は、ソーシャルギフトサービス「お花サプライズ!」について紹介しました!
みなさんも大切な人の誕生日、忘れていませんか?
そんなときは、みんなで自分たちだけの花束をプレゼントしてみませんか?

ウェブサービスをスタートアップするための勉強会に参加しませんか?

僕たちの勉強会は、まだ始まったばかりだ…ビシッ!! m9( ・`ω・´)

はじめに

皆様、最近ちょっとずつ寒かったり暑かったりしますがお元気でしょうか?
僕は秋の花粉症でぐだぐだですが、元気です。

突然ですが

最近、「UT Startup Gym」(UT スタートアップジム)という「ウェブサービスの企画、開発」の勉強会をやっています。
ずっと知り合いの中だけでやっていたのですが。
最近、一区切りつき、もっとこの勉強会に多くの人に参加して欲しいなと思いブログを書くことにしました><

みなさんは

ウェブサービスを作りたいなって思ったことありませんか?

僕はよくあります。
「なんで、〇〇みたいなサービスってないんだろーなー」とか、「もっと、こういうサービスを作ってみたいなー」とか
そういうとき、自分ですぐにそのウェブサービスを作り上げることが出来たらなあと思います

でも

そうは言っても、なかなか作りきれないものなんですよねウェブサービスって><
作り始めるのがおっくうだったり、作り始めても、モチベーションが保てなかったり、モチベーションがあっても、技術的に行き詰ったり、
まあ、人間ですからね。なかなか作りきれないものですよね><

もっと、ウェブサービスを作りきれるようなモチベーションと知識を共有できる環境があったらいいのになあ。

そこで

半年前に立ち上げたのが、今日紹介する「UT Startup Gym」(UT スタートアップジム)です。

どういう勉強会なの?

では、少し具体的にこの勉強会がどういう勉強会なのかを紹介したいと思います。

勉強会の概要

この勉強会では、半年を「一期」として一期ごとに全員がなんらかのウェブサービスをリリースすることを目標にしています
メンバーは、その期間内でアイデアを出し合い、何人かでチームを組み、リリースに向けて頑張る、ということをやります。
もちろん、すでに作っているウェブサービスがある人はそのサービスを持ち込んで参加するというのも可能です。

いつやってるの?

現在は、毎週土曜日の 18:00 〜 22:00 くらいまでの時間でやっています。

勉強会の内容はどんな感じなの?

勉強会自体は、毎回 4 時間くらいで、 1 時間目が「座学」、残りの 3 時間が「プロジェクトの時間」となっています。
そして、たまに不定期に「開発合宿」をやったりもします。

今までの勉強会の資料

ちなみに、今までやってきた勉強会の資料が Slideshare に上がっていたりもするので、そちらもご覧いただければなあと思います><
ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)

この半年の終わりに

もうすぐ UT Startup Gym も一期目(半年)を終えて二期目を迎えようとしています。
この半年、本当にいろいろあったなあと思います。
今月、無事に二つのウェブサービスと、幾つかのウェブサービスの卵を立ち上げることができそうです。
これは、自分では結構すごいことなんじゃないかなあと思っています。
勉強会の中で、仲間やライバルを見つけて、技術や企画を磨くことを無くしては絶対に作り上げることができなかっただろうなと思っています。

というわけで

この勉強会の発表会イベントを 10/29 (土) に行いたいと思います!
勉強会に参加したい人
勉強会に興味がある人
立ち上がったウェブサービスに興味がある人はぜひぜひご参加ください!
Facebook
UT Startup Gym - 第1期発表会+第2期参加者募集
誰でも参加可能なので、少しでも興味がある人は上の Facebook イベントの「参加ボタン」をポチっとしてみてください><

最後に

勉強会を初めたときは、 PHP のインストールが出来ないメンバーや、ほとんどプログラムを書いたことがないメンバーも多くいましたが、今では、全員が企画から開発までを行いウェブサービスを立ち上げることが出来るようになりました。
自分自身も、様々なウェブサービスのアイデアや技術の中でこの半年を過ごすことが出来てとても楽しかったなあと思います。
ぜひぜひ、10/29 (土) のイベントにみなさんも参加して、自分のウェブサービスを立ち上げる一歩を踏み出してみませんか?

(写真は開発合宿にて)
ではではーヽ(´ー`)ノ

Facebookページの顔、「Welcomeページ」のとことん簡単な作り方

はじめに

みなさんこんにちはヽ(´ー`)ノ
本日、Facebook ページにウェルカムページを簡単に追加できるサービス「ウェルカムページメーカー」をリリースいたしました!
20110905103756

どんなサービスなの?

Facebook ページを持っている人なら、誰でも「とことん簡単に」ウェルカムページを作れるサービスです!
今までも、このようなサービスはあったのですが「とことん簡単に」というところを追求したのがこのサービスです。

ウェルカムページって何?

ウェルカムページとは、 Facebook ページのトップページとなるページで簡単なメッセージや、「いいね!」を促す文言を載せたりすることができます。
有名なウェルカムページとしては レッドブルの Facebook ページ などがあります。
20110905103757
ついつい、「いいね!」をクリックしてしまいそうです!

なんで、「いいね!」されるが重要なの?

「いいね!」されることで、ユーザのニュースフィードにそのページの更新情報が流れるようになるのです。

なので、「企業」や「ブロガーさん」がユーザともっと仲良くなるために「いいね!」してもらうことは結構重要なことみたいです><

でも、ウェルカムページ作るのめんどくさい><

でも、今までウェルカムページを作るにはどうしても Facebook アプリの知識が必要だったり、 FBML という独自のマークアップ言語を使う必要があったりと何気にめんどくさい作業だったんです><

と、言うわけで

「とことん簡単」にウェルカムページ作りたい!
という要望に応えたサービスがウェルカムページメーカーです!

使い方(ウェルカムページの作り方)

と、言うわけで簡単にウェルカムページメーカーを使って、ウェルカムページを作ってみましょう。

1. 画像を 2 枚用意する

今回は、サンプルにこんな画像を用意してみました
いいね!を押して   ... - はてなちゃんセリフ - はてなセリフ べ、べつに   嬉しい... - はてなちゃんセリフ - はてなセリフ

2. ウェルカムページメーカーに行って「さっそく作る」をクリック!

http://welcome-page.jp/ へ行って
20110906194424
「さっそく作る」というボタンをクリックします

3. Facebook ページを選ぶ

f:id:amachang:20110905103800j:image
ウェルカムページメーカーを追加しますか?と表示されますので、ウェルカムページを追加したい Facebook ページを選びます。
f:id:amachang:20110905103801j:image
確認画面が出るので、「ウェルカムページメーカーを追加する」を押します。

4. 画像を設定する

追加すると、以下のような画像設定画面が表示されますので、
f:id:amachang:20110905103803j:image
画像を設定して、「変更を適用する」を押します

5. 完成したウェルカムページをデフォルトページにする

以下のような更新完了ページが表示されますので、
f:id:amachang:20110905103804j:image
Facebook ページの設定に行き、「デフォルトで表示するタブ」を「ウェルカム!」に設定します。

6. これで完成!

このページに設定してみたので見てみてください! → Amachang | Facebook
f:id:amachang:20110905103805j:image
おおおお!出来てますね!簡単!

このサービスを作ろうと思ったきっかけ

で、なんでこんなサービスを作ろうかと思ったかというと先日以下のようなやりとりがあったんです。

とある会社にて

A さん:「Facebok ページにウェルカムページみたいなの作りたいんだよねー」
僕:「じゃあ、 HTML くれればやっときますよー」
A さん:「画像のほうが楽だわ」
僕:「え、 HTML より画像のほうが楽なんすか?」
A さん:「そりゃそうよ」
僕:「じゃあ、アップロードフォームがあればいいの?」
A さん:「うん」
僕:「今、作るわ」
A さん:「じゃあ、僕画像作るわ」
僕:「フォーム作った」
A さん:「画像できた」
僕:「これ、意外と便利ね」
A さん:「だね」
僕:「明日リリースするわ」
A さん:「えっ」

って感じで

打ち合わせ中に書いたサンプルコードが便利だったのでサービスとしてリリースすることにしたって感じです。

その打ち合わせ中に書いたコード

もちろん、エスケープもしてないし、 CSRF チェックとかもしてないし、 画像のバリデーションもしてないし、 HTML も超適当なのでこのままリリースしてるわけではないですが、その場でパパっと書いたコードは以下のものです。

<?php
   require_once '/home/ubuntu/php-sdk/src/facebook.php';

  $facebook = new Facebook(array('appId' => 'XXX', 'secret' => 'XXX'));
  $req = $facebook->getSignedRequest();
  $page_id = $req['page']['id'];
  if($req['page']['admin']) {
    echo('<form action="upload.php" method="post" enctype="multipart/form-data">');
    echo('<input input type="hidden" name="id" value="' . $page_id . '" />');
    echo('<input input type="file" name="before" />');
    echo('<input input type="file" name="after" />');
    echo('<input type="submit" value="upload" />');
    echo('</form>');
  }
  else if($req['page']['liked']) {
    echo('<img src="/files/' . $page_id . '/after.jpg">');
    echo('<script>setTimeout(function() { top.location.href = "http://www.facebook.com/page/' . $page_id . '?sk=wall" }, 10000)</script>');
  }
  else {
    echo('<img src="/files/' . $page_id . '/before.jpg">');
  }
<?php
if (is_uploaded_file($_FILES["before"]["tmp_name"]) and is_uploaded_file($_FILES["after"]["tmp_name"]) and isset($_POST['id'])) {
  if(!is_dir("/home/ubuntu/simplefb/files/" . $_POST['id'])) {
    mkdir("/home/ubuntu/simplefb/files/" . $_POST['id']);
  }
  $before_file = "/home/ubuntu/simplefb/files/" . $_POST['id'] . '/before.jpg';
  $after_file = "/home/ubuntu/simplefb/files/" . $_POST['id'] . '/after.jpg';
  if (move_uploaded_file($_FILES["before"]["tmp_name"], $before_file) and
    move_uploaded_file($_FILES["after"]["tmp_name"], $after_file)) {
    chmod($before_file, 0644);
    chmod($after_file, 0644);
    echo"アップロードしました。";
  } else {
    echo "ファイルをアップロードできません。";
  }
} else {
    echo "ファイルが選択されていません。";
}
まあ、たまにはこんな開発もいいよね

(´∀`*)ウフフ

というわけで

今回リリースしたサービス、「ウェルカムページメーカー」。
ぜひ使ってみてください><
ではではーヽ(´ー`)ノ