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

Endo Tech Blog

Techブログと言う名のただのブログです。

ちょっと言わせてくれ

Endo Tech Blog(PC)が重すぎなので近々リニューアルします。

【翻訳】"手段"は"本質"よりも早く廃れる。

翻訳

この記事は“How” ages faster than “Why”の著者であるAbdul Nimeri氏の許可を頂いて翻訳しています。

gist.github.com

橋本からの年賀状がこなくなった。

日記

 

 

f:id:kikuchi1201:20170119121601j:plain

 

橋本は僕が高校時代3年間を共にした友人である。

ここでの友人の定義とは

知り合い ノートを借りる関係<ゲームが貸せる関係<  友人(橋本) < ゲームが返ってこなくなる関係 < 親族

とする。

 

つまりは、橋本はゲームを返してくれる程度には礼儀が正しく、友人であったといいたい。だからと言ってゲームを貸しあった事は一度もない。なので「それでは余り仲が良くないのでは?」と言われると、実は疑わしいのだが。

 

まぁでも、少なくとも3年間は一緒にクラスに居て、共に同じ教室で時間を過ごしたのは変わりようがない。彼は室長(クラスのまとめ役)と言う、あだ名があった。

実際、もし世の中で「室長グランプリ大会 in 千葉」とかあったら、決勝に残ってもおかしくない程に室長であった。しかし、恐らくそこで勝ち進んでも、関東予選で敗退してしまう程に、やる気はなかった。真面目だが、変な所でやる気がない。それが橋本だ。

 

僕は橋本から遠藤と呼ばれていた。当時それが違和感があった...というのは、今では信じられないのだが小中高では下の名前で呼ばれるのが当たり前であったので、何故橋本だけ名字で呼ぶの??と疑問だったのだ。そんな訳で僕は彼の事を「室長ー、橋本ー」と読んでいて、彼からは「遠藤」と呼ばれていた。

 

橋本は3年間一緒のクラスであったが、実は遊んだのは片手で数える程度だ。それ以外にあった気がするのだが、記憶に靄がかかってよく思い出せない。その遊んだ時期が、高校1年生の時なのか、はては2年生の時なのかもわからない。

 

でも確実に覚えているのが、橋本は東京のマンションに住んでいて、そこまで千葉の僕の家から、自転車を漕いで3時間かけて遊びにいった事がある。遊びと言っても、肝心の「何をしたのか?」が一切覚えてなく、橋本の住んでたマンションの下にあったセブンイレブンで腹が減ったから、「アメリカンドッグ」と「肉まん」を食べて談笑したぐらいだ。部屋に上がった記憶はない。

 

その後タンパク質とか、脂質とか、塩分やらをカロリーに変換した後は、また3時間かけてか自転車で東京から千葉の家に返った。この頃は疲れという概念がなかったのだろう。そんな訳では僕と橋本との、そこまで深くなく寧ろ浅すぎるエピソードを話した所で本題である。

 

橋本からの年賀状がこなくなった。

 

いや、この話の流れから言うと「実際、お前そこまで橋本と関係深くないやん」と思われてもしょうがないのだが....。

 

実は橋本とは高校卒業以降一回もあってない。

僕が1年浪人した為、もう4年以上も会っていない。しかし、前述した通り橋本はゲームを返してくれる程度には礼儀が正しい男と言われるだけあって、年賀状を毎年送ってくれていた。

 

高校の時は勿論、浪人時代も年賀状を送ってくれて、その時は年賀状に確か「大学入試に合格したら一度飯を食べに行こう」と返した。

そして大学生1年、2年、3年...年賀状はきた。

しかし、僕は、浪人時代に返した以降、一度も、橋本に、お返しの年賀状を、返してなかった。....返してなかったのである。

 

そして今年ついに年賀状が来なくなってしまった。

何故返さなかったと言うと、大学入学以降、SNS上でのメッセージで済ませていて、紙媒体を使って書いて郵便ポストへ向かう行為が単純に面倒くさくて、なぁなぁに済ましてしまったのだ。

 

橋本以外にも年賀状で「あけましておめでとう。今年もよろしくお願いします!」と書いて送りあっていた友人はいたが、大学以降はそれも一斉にSNS上のメッセージに置き換わってしまった。

いや、それが別に悪いとか良いとかの話ではないのだが、中高の友人でSNSで繋りだしてから、「あけおめ」すらやらない関係になってしまった友人はたくさんいる。

しかし橋本はSNS上で繋がっていなくても、毎年一回は年賀状を送ってくれて、唯一それが高校卒業以降の彼と僕との接点だったのだ。その接点が今年でついに途切れてしまった。

 

途切れた途端に「何故年賀状をちゃんと返さなかったのだろうか? 」と反省する。大分もう手遅れなのだが。FacebookGoogle で高校名とかで検索をかけても、彼のアカウントは一切でてこない。そうなってくると、過去の送られた年賀状を頼ればいいと考えるが、肝心の橋本からの年賀状も保存してないので、行方がわからない。

 

そうなると唯一残るのは、年賀状1つで友人を失ってしまった情けない事実だけである。

 

実際の所もうわからない。

何せ4年以上も経ってしまっているから。

橋本にとってもう僕はそういう関係ではないと思われて、僕がここで使う「友人」と、彼が使う「友人」の定義は大分変わってしまったかもしれない。

いやそもそも同じはずがないのだが、少なくとも知り合いではない。知り合いでは済ませてはいけない関係だったのは確かだった。 

 

この話はオチとかない。

なぜなら現在進行系の話だからだ。

 

でももし、どうにか彼の現在住所でも近況を知っている人を見つけだして、メールでも年賀状でもいい。とにかく連絡が取れるのなら

 

「返事を今まで返せずに本当にすまなかった。

あけましておめでとう。今後共よろしく」

 

とだけ書いて僕は橋本に送るだろう。

その後は多分、どこかで飯を食べながら「なんであの時部屋に上がらせてくれなかったんだ!」と、問い質すつもりである。

 

 

おわり

2017年の抱負。

日記

f:id:kikuchi1201:20170101092605j:plain

あけましておめでとうございます。
2016年の総括は前半の50%就活と、後半の40%アルバイト、残り10%は大学関連の受業や試験で総括できてしまうほどにひたすらに走ってました。 特に後期の平日は日中働いて夜は大学で受業を受ける生活リズムで、家では「お風呂にする?ご飯にする?オフトォン?」を繰り返す場所でしかなかったと思います。

走りながら、途中で京都に勝手に行ったり、初めてフェスに参加してみたり等、余裕があるのか、ないのかよくわからないですが、今年からはいよいよ社会人になり、webエンジニアとして新人研修が始まります。より一層忙しくなると思いますが、「忙しい時にこそ勉強をする」を念頭に外部勉強会の参加やカンファレンスに参加し、Qiitaや Blog等で積極的にアウトプットを増やして行こうと思います。

僕は毎年、新年を迎えると必ず手帳を新調します。
そしてまず先にやる事は、裏表紙に使われている最期のページに「今年になりたい像」をたくさん書きこむ事です。言わば抱負です。

例えば去年だと...名前を覚えるようにする(これは毎年)、相手を尊敬するように接する、PHPを書けるようにする、と言った感じで毎年、歳の終わりには自分がこうなって欲しい未来像をそこに、無我夢中で書き込みます。書き込みながら、「これが出来たら素敵だなぁ」、「あれも出来たらかっこいいなぁ」と想像しながら、2017年の自分像を考えるのです。

これを僕が高校1年のときからやっているので、浪人時代も合わせるともう今年で8年になりました。僕は大変飽きっぽい性格なのですが、何故かこの未来像を手帳に書き込む癖は、不思議とずっと続いています。

そんな訳で今年2017年の自分像(抱負)をこんな感じにリストアップしました。

  • 名前を覚えるようにする。
  • 言葉遣いを社会人らしく丁寧にする。
  • 誤字、脱字、typoをなんとしても治す!←これ重要。
  • タッチタイピングの習得。
  • 調子に乗らず、丁寧に落ち着いた社会人を目指しつつ、やる時はやるようにする。
  • 真剣に学ぶ。丁寧に学ぶ。
  • 真摯な態度で何事にも真面目に取り込む。
  • 50万円を貯金する。
  • 言語に依存しないソートアルゴリズムの習得と実践。
  • webサービスを勝手にリリースしやがれ。
  • PHPRubyを人並み以上に書けるようにする。
  • LaravelとRuby on Railsの習得とサービス開発に特化するエンジニアになる。
  • JavaScriptに慣れる。
  • デザインの「デ」ぐらい理解するようにする。
  • SupremeとExtremeの違いがわかるぐらいに 服と靴にお金をかける。
  • はてなBlog(Endo Tech Blog)が重いので、軽くする。
  • オブジェクト指向プログラミングの習得と、解説記事の公開。
  • PHP7の文法を書けるようにする。
  • 正しいテストを書けるように、テストを書いていく。
  • ツイ消ししない。
  • Fallout4を最高画質でプレイが出来るように、GTX1080搭載のゲーミングPCをなんとしても調達する。←これ大事。
  • ジャンル問わず本を沢山よむ、映画を見る、音楽を聴く。
  • 23:30就寝、6:30起床の生活リズムを付ける。
  • DuPoMarkdown記法の追加,画像投稿,Like&Reply機能の追加,ログイン認証の修正,スマホからの投稿。

個人的にはFallout4がプレイできたら、大分満足して人間止めそうで怖いので、steamのライブラリに積みゲーとして寝かしとく事にします。

所でこのタイミングで言うのもあれですが、2016年は色んな人に助けられた年でした。

進路で散々お世話になった研究室の教授や
就職活動で相談やお世話して頂いたエンジニアの先輩方
何よりGMOペパボでアルバイトをするに当たって助けて頂いたMさんやアルバイト中にお世話になったチームの方々、そして技術指導をしてくださったエンジニアの先輩方、本当にありがとうございました。

特にペパボでのアルバイトは本当に恵まれていて、後にも先にもあれほど濃密で楽しい時間を過ごせたのはなかったです。
アルバイトに関しての詳細記事はまた後程どこかで上げればと思います。

そんな訳でまだまだ未熟者でありますが2017年は2016年にお世話になった人々に恩返しする気持ちで精進したいと思います。 また1年どうぞよろしくお願い致します。

おわり。

日報サービス「DuPo」を作った話

日記 webサービス

日付をまたいでしまいましたが、この記事はpepabo Advent Calendar 2016 - Qiita 13日目の記事です。 昨日はzipperさんよく使うpuppetモジュールの紹介でした! 


始めに

始めまして。 現在、GMOペパボ株式会社でアルバイトで働いているid:kikuchi1201です。
idはkikuchiですが、本名はendoです。
よろしくお願いします。

そもそもDuPoって何?

f:id:kikuchi1201:20161214080442p:plain

http://dupo-fendo1201.sqale.jp/

DuPoは簡単な日報サービスです。 使用言語はPHPで、フレームワークにLaravel 5.3を使っています。元々の土台は以前ドットインストールのLaravelの講義 を基に作ったwebアプリケーションがあったので、その時に作成したコードを再利用して開発しました。

github.com

当時はLaravelのverが5.1で、route.phpがweb.phpになったり、ディレクトリ先が変わったり等ありましたが、それ以外は殆ど同じコードを流用しています。

DuPoページ

f:id:kikuchi1201:20161214081014p:plain

DuPoページでは記事の投稿一覧の表示と、記事の作成、記事の消去、編集の一連のCRUDを実装しています。これらの処理を今回はDupoControllerで統一して管理しています。例えば新規投稿記事を作るとすと以下の手順でLaravelでは新規投稿記事を作成する事が可能です。

(1) ユーザが新規投稿にアクセスする。
↓
(2)ルーティング(web.php)にgetで`/dupo/create`をリクエストする。
↓
(3)Route::get('/dupo/create','DupoController@create');が実行され、次にDupoControllerのcreateメソッドが呼びだされ処理を実行する。
↓
(4)DupoControllerのcreateメソッドを実行
↓
(5)create メソッドが呼び出される。
↓
(6)新規投稿ページへ飛ぶ。記事を記述する。
↓
(8)記事を投稿する。
↓
(9)ルーティング(web.php)にPOSTで`dupo/store`をリクエストする。
↓
(10)Route::post('/dupo/store','DupoController@store');が実行され、次にDupoControllerのstoreメソッドが呼びだされ処理を実行する。
↓
(11)DupoControllerのstoreメソッドを実行
↓
(12)storeメソッドが呼び出される。
↓
(13)新規投稿記事をDBに登録する。
↓
(14)投稿画面一覧に戻る。

大分詳細を省いてしまっていますが、基本的に最初にルーティングから動作を考え、どのコントローラを使って処理を実装していくかを考えながら書いていきます。 従って今回作成したDupoControllerでは以下の7つのメソッド作成しました。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests\NipoRequest;
use App\Http\Controllers\Controller;
use App\Nipo;


class DupoController extends Controller
{

        public function top()
{
            $nipos = Nipo::latest('created_at')->get();
            return view('dupos.dupo')->with('nipos',$nipos);

        }
        
        public function create(){
           return view('dupos.create');
        }

        public function show($id){
            $nipo = Nipo::findOrFail($id);
            return view('dupos.show')->with('nipo',$nipo);
        }

        public function edit($id){
            $nipo = Nipo::findOrFail($id);
            return view('dupos.edit')->with('nipo',$nipo);
        }


        public function store(NipoRequest $request){
            $nipo = new Nipo();
            $nipo->title =$request->title;
            $nipo->body  =$request->body;
            $nipo->save();
            return redirect('/dupo')->with('flash_message', '新規記事を作成しました!');
        }

        public function update(NipoRequest $request,$id){
            //記事を取得
            $nipo = Nipo::findOrFail($id);
            $nipo->title =$request->title;
            $nipo->body  =$request->body;
            $nipo->save();
            return redirect('/dupo')->with('flash_message', '記事を更新しました。');
        }
        public function destroy($id){
           $nipo = Nipo::findOrFail($id);
           $nipo -> delete();
           return redirect('/dupo')->with('flash_message', '記事を消去しました。');
       }
}

それぞれのメッソッドが具体的に何をしているのかを簡単に解説すると

  • DupoController
    • top();
      • 記事一覧を最新順で取得してviewファイル(dupos.dupo)に渡す。
    • create();
      • 新規記事作成画面のviewファイルを返す。
    • show();
      • 受け取った$idに該当する記事があったら、記事を取得してviewファイル(dupos.show)に渡す。そうでなければ例外を発生させる。
    • edit();
      • 受け取った$idに該当する記事があったら、記事を取得してviewファイル(dupos.edit)に渡す。そうでなければ例外を発生させる。
    • store();
      • 受け取ったtitleとbodyの値を DB に保存して、/dupoflashメッセージ(新規記事を作成しました!)付きでリダイレクトさせる。
    • update();
      • 受け取った$idに該当する記事があったら、記事を取得して、新しく受け取ったtitleとbodyの値をDBに保存すして、/dupoflashメッセージ(記事を更新しました。!)付きでリダイレクトさせる。
    • destroy();
      • 受け取った$idに該当する記事があったら、記事を取得して削除して、そのまま/dupoflashメッセージ(記事を更新しました。!)付きでリダイレクトさせる。

about,aboutme,error,indexページ

f:id:kikuchi1201:20161214080541p:plain

今回この様な単純な表示するだけのページはIndexControllerで制御しています。理由は単純に1つのコントローラーにやりたい事と関係の無いメソッドが含まれると混乱する為、このように静的なページを表示するだけのControllerとなっています。IndexControllerの処理は以下の通りになっています。

  • IndexController
    • index();
      • 最初のtop画面
    • error();
      • エラーページ
    • about();
    • aboutme();
      • Guest用のaboutmeページ
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class IndexController extends Controller
{

    public function index(){
        return view('dupos.index');
    }

    // about ページ
    public function about(){
        return view('dupos.about');
    }

    // about meページ
    public function aboutme(){
        return view('dupos.aboutme');
    }

    // errorページ
    public function error(){
       return view('dupos.error');
    }

}

Guestページ

f:id:kikuchi1201:20161214042723p:plain

http://dupo-fendo1201.sqale.jp/guest_dupo

Guestページでは、DuPoページと違って記事の一覧表示閲覧のみしか利用できないようにします。具体的な実装方法としては先程作成したDupoControllerから、記事の作成と消去する機能を省きます。また、それに加えてGuest専用の、aboutページとaboutmeページを表示する処理を加えるので、今回Guestページを制御する為に作成する GuestControllerは以下の様に

  • GuestController
    • top();
    • show();
    • about();
    • aboutme();

実際に書かれているGuestControllerは以下の様な内容になります。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Nipo;

class GuestController extends Controller
{
    //

    public function show($id){
        $nipo = Nipo::findOrFail($id);
        return view('guest.show')->with('nipo',$nipo);
    }

    public function top(){
        $nipos = Nipo::latest('created_at')->get();
        return view('guest.dupo')->with('nipos',$nipos);
    }

    public function about(){
        return view('guest.about');
    }

    // about meページ
    public function aboutme(){
        return view('guest.aboutme');
    }

}

裏DuPoページ

現在DuPoにはLaravelで標準で用意されている認証機能(ログイン画面)を実装しています。ですが、実装しているものの、ユーザの個別ページが用意できていな....つまりはログインに成功した所で、全員が同じDBの同じtableを操作する処置となっている為、誰でも記事を自由に書けたり、遠藤が書いた記事を勝手に編集、消去ができる無法地帯なページとなっています。なので、実質ログインしてなくても、ログインが出来てしまっている状態になっているので、セキュリティ的には 完全にアウトな状態ですが、せっかくなんで触ってもらおうと思い、裏DuPoページを開設した考えです。 暫くの内にDuPoがバージョンアップして僕の技術力が向上した際に、ちゃんと実装する予定ですが、昨日Laravelの認証機能を触ってみて、コマンド1発でログインページを実装できるのは、大変嬉しいのは嬉しいのですが、肝心の裏側の処理がどうなっているのかさっぱり理解できてないので、それが理解出来次第、ちゃんと真面目に実装します。なので、それまでは自由に使ってみて下さい。

まとめ

今回、DuPoが作られた背景としては、アルバイト期間中の日報を管理していたGithubのissueが伸びに伸びに、伸びてしまったので、いちいちレビューする人が下までスクロールするのは大変だし、面倒だという事で何か解決策はないかと考え出した末の「DuPo」だった。 でも、今思うと....日付毎に新しくissue立てればそれで終わりだった話が、いつのまにか「作るか!」となり、最後の方は「やるしかねぇ」に変わっていた。今となっては、やって良かったとか思いたいが、残念ながらちゃんと実装できてない部分があるので悔しい気持ちと、昨日から一睡もせずにこの文章を書いてる眠気で、今は凄まじく布団の中で寝たい。 24時間布団の中で寝たいという気持ちしか湧いてこない。

実際CRUD操作の部分までは早かったが、そこからデザインやらログイン認証の実装など、本気で実装しだしたら、全然終わりが見えなかった。終わりが見えないというのは、変な表現かもしれないのだが、デザインにしろ、機能にしろ、ハマリ出した途端に視野が狭くなってしまい、ずぅーとそればっかり考えてしまう。 今日も全然期限が過ぎているのにAdvent Calendarの記事を書いては、DuPoを弄って、書いては、弄って、気づいたら3時になって、そして現在に至る。結論、楽しいのだ。...いやもしかすると、今ハイな状態なので、そんな事をいってるだけかもしれないが1から自分でwebサービスを作れるのは、純粋にいい勉強になったし、終わりがないからやはり楽しい。

そんな感じで全然まとめになってはないかもしれないが、webサービスを1から自分で作ってみるのは否応が勉強せざる環境になる為、かなり力がつくのと、公開をするプレッシャーで気を使ったりするので、大変学びが多く、良い経験になった。

おわり。

生産的になれない理由。

日記

生産的になろう。
この言葉を口から吐きだす度に、「はて?果たして生産的とは何のことだ?」と自問自答を繰り返すわけだ。

それで言うと僕がこうして、休日に必死に馴れないキーボードを打って、誤字も気にしないでがぁーと勢いでブログ記事を書いている事は果たして「生産的」とは、程遠い気がすし、もっと言うとSteamのgameプレイ時間をみたら、ついにSkyrimNew Vegasだけで合計1100時間超えてるのを見て、生産的、生産的と言うにはあまりに難しい状況だ。やばい。

f:id:kikuchi1201:20161204081714p:plain

所で「生産的」と言えばアーロン・スワーツが書いた「生産的になろう」が最高に素晴らしい秘訣を書いてくれていて、これこそまさに「生産的」に相応しい内容だと自信を持っていえるだろう。

f:id:kikuchi1201:20161204134737j:plain

この「生産的になろう」は僕がインターネット上で最も好きな文章の一つだ。

何度も読んで、その度に何度も励まされてきた。
今でも時々読み返すし、そこらへんのタイトルだけのビジネス書やライフハック記事よりも何倍も役に経つ。この文章に出会ってすぐに、僕はアーロン・スワーツを自分のメンターにした。メンターと言っても、もうこの世にはいないんだけど。

だから今は心のメンターとして、たまに深夜2時にSkyrimをプレイしていると「そろそろSteamをアンインストールした方がいいんじゃない?時間を有効活用してさ、ペンとノートを取り出して、生産的になろうよ」っと言ってくれる。流石だ。そして僕は「ok!よし!」と言って、Steamをアンインストールして、その3日語の夜にSteamをおもむろに再インストールしてスカイリムの地にドラゴンボーンとして君臨するわけだ。

f:id:kikuchi1201:20130109150742j:plain
人は、過ちを繰り返す。

そんな訳でアーロン・スワーツを知りたかったら是非「生産的になろう」を一読して欲しいし、アーロン・スワーツが何を大事にして生きた人間なのかを知りたかったら、以下の記事を眺めるといい。

mojix.org

www.wikiwand.com

最近だとエッセイも出たらしい。読みたい。

www.versobooks.com

少し話が脱線するがこのブログを始める前の個人的な日記で今年の1月1日、僕はこんな記事を書いた。

あけおめことよろ 2015年は素晴らしく良い年だったので今年もそんな良い年にしたい。
所で新年早々で悪いニュースがあった。
Debianの製作者Ian Murdockが警察による虐待(?)で自殺したことで、同じく若い年でこの世を去ったアアーロン・スワーツを思いだした。アーロン・スワーツは私のメンターの一人であり、素晴らしいプログラマーの一人である。今書いているこのファイルも彼が考案に協力したMarkDown記法で書かれている。彼も法を犯したという疑いをかけられ、最後まで抵抗したものの、2013年の1月11日に自宅で息を引き取った。今日から10日で3年になる。
私はこの知らせを聞いた時それこそ、ニュースで有名人や芸能人、歌手、スポーツ選手が交通事故や突然の死に世間が驚くような形で私も驚いた。ただ違うのは報道もされず、そこまで大々的には取りあげられる事もなく26歳の一人の男性が去った事実のみであった。IT業界には若き天才が去ったことで話題になったが、その日のニュースや学校の会話にはアーロン・スワーツRSSのRの字もでてこなった。だから、私は所詮プログラマーという職業は裏方で生き、裏方で終わるものと確信している。日々の社会を支えるITの世界はそう言った"裏方"のとてつもない、情熱と努力によって支えられ守られている事を私はしっている。
だから、私もそういった意味ではこれから"裏方"として情熱と真摯な態度で技術に取り込み、社会を支える技術者になりたい。改めて両二方のご冥福を心から祈りたい。
アーロン・スワーツの”もっと生産的になろう”は名文なので是非一読を進める。
生産的になろう | http://emptypage.jp/translations/aaron/productivity.html

こんな話題を2016年になっても盛り返すようで申し訳ないが個人的に、このアーロン・スワーツの事と、同じく天才プログラマーであった金子勇さんの事を嫌でも重ねてしまう。

d.hatena.ne.jp

別に「警察が全て悪い!」とかそういう事をいいたい事ではなく、優秀なプログラマーが去るというのは、国が違うであれ純粋に寂しいし、後ろをあまり見ないIT業界でもこういう事件は嫌でも振り返るというのが、なんだか苦手である...難しい。

なんか暗くなってきたので、話戻そう。

生産的になろうリスト

以下に上げているのが、アーロン・スワーツの記事に書かれていた、生産的になろうリストだ。

  • 効率的に時間を使う
    • よい問題設定を
    • いろいろやれ
    • リストを作れ
    • リストを生活に統合する
  • 時間の質を高める
    • 物理的制約を解消する。
      • ペンと紙を取れ
      • 割り込まれないようにする。
    • 精神的制約を解消する
      • 食事、睡眠、運動
      • 愉快な人たちと話す
      • 苦労を共有する
      • 先延ばしと精神の障壁
  • 困難な問題
    • こまかく砕く
    • 単純にする
    • 割りあてられた問題
    • 自分をだます
    • 自分で自分に課さない
    • 楽しめるようにする

生産的な人ならこれを見て「素晴らしい!是非このリスト1つ1つ実践して、今すぐ私の生産性を2倍、3倍にあげよう!」と、意気込むだろう。

一方でこのリストを以前から知っている僕が、今出来ている事項はたったこれだけだ。

  • 食事、睡眠、運動

マジで。 更に言うとこうなる。

  • 食事、睡眠、運動

つまりは、僕が実際実践できている生産的な事は

  • 食事。
  • 睡眠。

たったこの2つだけだ。
凄い。圧倒的に生産的じゃないね。
こんな事を書いたらアーロン・スワーツに怒られるかもしれないが、僕は生産的になれない。

生産的になれない。

生産的になろう。生産的になろう。
そう考えてきたが、そもそも、何故「生産的になろう」と言うのか?
それは、現状、今やっている事があまりに社会に何も貢献してなく、或いはそれが何の役に経つのか、わからない為に非生産的な行為の反対語で「生産的になろう」と言ってるだけの言い訳かもしれない。

つまる所、「生産的」な事なんて言葉は、非生産的な行為の上でしか生まれてこない訳で、僕で言うSkyrimや、学業や仕事とは関係ない事をしている時にこそ、「生産的になろう」がどこからともなく襲ってくるわけだ。

で、苦しむ。
とくに土日の2日間を何もしないで、ずっーとSkyrimやって月曜日を迎えると、マジで鬱になる 。 でも、月、火、水、木、金と、働いて勉強して、ある程度の「今週は生産的になったよ!メータ」が貯まると、それを一気に消費するごとく土日は非生産的な行為に走る。これの繰り返しだ。

これが所謂、「休みの日だけゲーム」が以上に楽しい理由で、「休みの日もゲーム」がそこまで、余り乗り気がしない原理かもしれない。

それで、正直「生産的になろう!」っと言っても、自分が現状こうなっているので、これ以上の生産的な行動というのが、自分は余り向いてないなぁと、なっている。

もちろん、業務ではwebエンジニアである為、常に技術を学び、コードを書いて、アウトプットするのは当然だけど、ここに関しては僕は、生産的や非生産的についてあんまり気にしていない。問題解決の為のツールや、自動化はいくらでもする、なぜならその方が「楽である」としっているからだ。

問題は私生活だ。 私生活をこれ以上生産的にさせる事は難しい。
正直僕の私生活なんて、大半がプログラミングをしているか、本を読むか、ドラゴンボーンとしてノルドの地で戦うぐらいだろう。たまに友人と映画を見たり、買い物をするけど、優先順位的には現状

Skyrim >プログラミング>友人とのイベント>Steamのセール情報

っとなっている。ここまで来て気づいた人がいるかもしれないが、さっきから僕がグダグダと何か言ってるけど、結論「お前が休日にSkyrimをやっているから、その言い訳で『僕は生産的になれない』って言ってるだけじゃねーの?」と。

確かに。
でもそれを言われると、本当に何も言い返せないので、ここではその事を考えるのはやめて欲しい。
お願いだ。一旦その設定は置いてくれ。
よし。

じゃ、話を続けよう。

Skyrimの話がしたい。

f:id:kikuchi1201:20161204151851j:plain

もうどうでもよくなってきた。
ここまでの流れをぶち壊すようで申し訳ないが勝手に今からSkyrimについて語るので、勝手に聞いてくれ。
だからと言ってブコメで「はぁ?」ってコメントするのは止めてくれ。マジで凹むから。
ってかさっきから言ってるSkyrimっ何やねん?て、なってる人に説明するとですね。

全ての元凶です。
壮大なオープンワールドでジャンルはRPGですね。
最初に主人公がいきなり帝国の反乱軍(ストーム・クローク)として捕らえられていて、馬にドナドナ載せられながら関所に向かうんですよ。で、着いたらどうやら主人公が、帝国の反乱軍として間違われていて処刑されそうになるんですね。えぇー...終わりじゃん。Skyrim終わりじゃん。

えっ?ってなったら、急にドラゴンが現れて、「ちょタイミング良すぎ-ドラゴンでけぇー」って言ってる間に、帝国軍とドラゴンが戦うので、反乱軍にまぎれて主人公が逃げます。で、主人公達が逃げた村でもまた、ドラゴンがしつこくやってきたから、村人や兵士と協力して「ノルドの為にー!しねぇ!」って叫びながら、ドラゴンを退治します。

「しゃぁぁあぁドラゴン倒したぁー!」って皆で喜んだら、ドラゴンが急に燃えだして、その燃えた後にでてきた魂(ソウル)的なものが主人公に凄まじい吸引力で吸収されます。ダイソンもびっくりな吸引力で吸収します。

「えっ..なにこれ...こわっ」てなってる内に、村人が「ドラゴンボーンだ!ドラゴンボーンだ!」って騒ぎ出して、よくわらないお姉さんから「悪いドラゴンが復活したから、ドラゴンボーンとして、シャウト(ドラゴンの言葉)を覚えて、退治して!お願い!」ってあからさまな事を言われるので、選択肢の「いいよ」を選びます。

こうして主人公はスカイリムの地にドラゴンボーンとして誕生し、帝国軍とストーム・クロークの熱い領地争いから、各地で起きている紛争や混乱を、また現代の様な醜い人間争いを巧みな話術で解決し、それ以外は剣と魔法と弓と言うオーソドックスなRPG形式に乗っ取り、徹底的に物理で攻撃します。で、この時に「キルムーブ」というシステムがめっちゃ格好良くてですね、映画のアクションシーンみたいに、敵の悪漢を倒すのが最高にいいし、かっこいい。後、さっきいったドラゴンボーンのシャウトを使う事で、時間をゆっくり出来たり、武器に魔法をつけて早くしたり、見えない圧力で敵を吹っ飛ぶしたり、これで色んな戦略が生まれて、レベルアップで防具や弓や剣とか、それ以外にも話術をスキルアップさせる事で、装備屋で書う武器の値段を安くしたりとか、剣のダメージを上げたり出来る等、やばいんですよ。

今こうして、話をして、大分引かれてるのも大分やばいんですけど、とにかく、無限の戦略生が生まれて、キャラクラーも人間模様濃くて、ストーリも重圧で、BGMも壮大で深くて、言い出すとキリがない。

で、更にここでmodの話をすると、本当に止まらないので止めます。
「えぇー」ってなってる人や「いや、modってそもそも何やねん」ってなっている人がいると思うので、
下の動画をみて下さい。

www.youtube.com
日本語字幕もあります。

上の動画を見ればmodがどれほどの可能性に満ちていて、更に戦略性があがり、僕の生産性を落としているのかが理解できるでしょう。
因みにmodはボタンひとつで導入できるので、大変楽に改造が出来て、最近(?)だとMod Organizerという仮想技術をつかったツールがあり、これは本体のファイルを弄らないで、あくまでも仮想環境側でmodを入れて、ゲームを起動する際に反映させるやり方があったり等、web界隈同様に、mod界隈の技術も進歩しているんですね。中にはgithubにソースが上がってるツールもあって、必要なファイルがないと教えてくれたり、読み込みを順を適切にソートして並べてくれるLOOTとか。

このmodの話で避けて通れないのが競合バグで、例えば顔パーツに反映させたいmodが2つあるとして、競合が起きる。それをツールを使って、独自にパッチを作って解消するのが個人的に大好きだったんですよ。

f:id:kikuchi1201:20121020201618j:plain

NewVegasの時は、ゲームよりもこのパッチを作ってる時の方が楽しい時もあって、上限数(135)を超えたmodを導入しても、CTD(いきなり、ゲームが終了する現象)を何時間も起こさないようにするとかいった、めっちゃマニアックな遊び方もしていたなぁ。

結論

Skyrimが楽しすぎて生産的になれないです。
この一行を言うが為にめっちゃ壮大な言い訳を遠回しに言った気がする。正直すまなかった。
だからこそ、生産的になれない自分を解消する為のHow to記事を書こうとしたが、PCかHDDを物理的に破壊する方法しかないと改めて気がついた。なんか最期の方は余計にSkyrimへの熱い気持ちをぶつけてしまってので、こんな記事を書いてアレですが、ノルドの地に旅立って絶賛生産性を下げていこうと思います。

それと先月のSteamのセールでFallout4を購入したので、来年このブログが更新されてなかったら、その時は察して下さい。

おわり。

Fallout 3: Game of The Year Edition (輸入版)

Fallout 3: Game of The Year Edition (輸入版)

Fallout: New Vegas Ultimate Edition (輸入版)

Fallout: New Vegas Ultimate Edition (輸入版)

【翻訳】 2016年にJavaScriptを学んでどう感じたか

翻訳

f:id:kikuchi1201:20161026171751p:plain

※何度投稿しようとしてもBad Requestが出てしまったのでgistで投稿します。ご了承下さい。

gist.github.com

Forkwell Meetup ~この先 生きのこるエンジニアとは~に参加してきました。

勉強会

秋も近くなり気温も下がってきたので熱い炎上話を聞いて暖を取ろう!という理由ではないですが、参加してきました 。Forwell Meetup

 

 

forkwell.connpass.com

 エンジニアの生存戦略

 

スタートアップ企業の若手CTOが集まり、炎上案件で死にそうになった話、炎上案件をどのようにして乗り越えた話、なぜ炎上案件になってしまったのか話等々、末端のエンジニアでは聞けない現場のリアルな話が聞けて大変面白かったです。

 

 

 

特に「CTO経験者が語る若手時代の炎上乗り越えトーク」での、ソーシャルゲームでは企画者の思いが強すぎて仕様がバンバン変わると言うのは、炎上話兼、業界あるある話のようで、そう言う時にこそ企画者と作る側の距離を大切にすべきというのは、個人的に「なるほどなぁ」と思って聞いてました。

 

それからCtoCでのサービスでは普段からユーザ同士での問題が絶えない為、カスタマサポートが重要であると言う話もCTOならではの話で興味深かったです。

 

 

 

午後のパネルディスカッションでの「エンジニアの生存戦略」では、今まさに盛り上がっているスタートアップでサービス開発を行っている現場エンジニア3人が登壇し、それぞれが、どんなキャリアを踏んでエンジニアになった紹介話から始まり、転職話や、エンジニアのスキルについて、お酒も入ってたか午前中より幾分和やかな雰囲気で話をされてました。

 

株式会社アカツキ 島崎清山さんの、営業から新卒入社してその後エンジニアになった話も大変面白かったのですが「スキルが高すぎる人が社内や勉強会に行くと沢山いて、その人を追い越そうにも、その人も同時にもの凄いスピードで先にいくので勝てないつらい。つらい!」の話はめっちゃ同意しながら聞いてました。 

 

 

 

個人的に勝ち負けの話以前に、エンジニア自体常に新しい知識や技術を求められている職種なので、そこに優劣が出てしまうのはある意味しょうがない事だし、逆にそれが原動力で切磋琢磨して会社を跨いでの全体の技術力の向上に結びつくのではと思ってはいるんですけど、会場ではそこまで手が上がらなかったのが、少し以外でしたね。

 

後、島崎清山さんが、社内の凄く出来るエンジニアに「あなたに追いつけないからどうしたらいいんですか!」と言った質問をした際に、東京大学 情報科学科のカリキュラに含まれている本のリストを読んでこいと言われ、その本のリストを読んで基礎力を磨くと言う話も、エンジニアのスキルアップとしてかなり重要な話だなと思い、そこがあるかないかで成長スピードの差が出て来るのではないのか?と考えてはいるんですけど、どうなんでしょうか。

 

そのリストを調べたら、なんとなくこれかなぁという記事をみつけたので一応貼っときます。(違っていたらすみません)

 

leoclock.blogspot.jp

 

また、質疑応答で「ロールモデルがいない場合はどうすべきか?」っと言った質問に対しては、株式会社Properの藤村 大介さんが「バーチャルモデルを作るといい」っと返答していたのが素直に「すごいなぁ..」と思って聞きながら、VR でメンターが隣にいて分からない所を丁寧に教えてくれるサービスあればいいなぁと思ったら、「それ、サマーレッスンやん!!」っとなりました。

 

summer-lesson.bn-ent.net

(因みに今回のForkwell Meetup では懸賞でPS VRが貰える抽選会があり、見事に僕は外れてしまったので、当選した方は「サマーレッスン」の彼女をロールモデルにして業務を頑張って頂ければと思います。)

 

3人の登壇話が終了した後、1時間程度の休憩をはさみ、最期に株式会社ドワンゴ 塩谷啓さんの「ロックスターになれないエンジニアたちに贈る生存戦略」という、ロックな題目でゲストトークが始まりました。

 

 

 

niconare.nicovideo.jp

 

 

 

この話が凄く面白かったのですが、まさにこれが「エンジニアが考えるべき生存戦略」の話だなぁと思いながら僕は聞いていました。エンジニアのキャリアって会社によって異なると思うのですが、ここで塩谷さんは2つの選択肢があると言ってたんですね。

 

1 ロックスター(エキスパート職)

2 マネージャー職

 

ロックスターと言うのは要はエンジニアのエキスパート職でスターエンジニアに事を指します。塩谷さんは元々はエンジニア職からマネージャー職になった方なのですが、コードを書いている人間から今度はチームの生産性やプロダクトの方を見る側になって、リーダという仕事は何が面白くて、どの様にして生存戦略を立てるのかっと言った話が熱くて良かったんですね。

 

そもそもマネージャー自体みんなやりたがらない上に、ロールモデルがいないわけです。でも、塩谷さんはマネージャーと言う仕事がいかに重要で、やりがいがあるんだという事をスライドを使ってわかりやく丁寧に解説して頂いので「マネージャーという仕事は思った以上に面白そうだ!」という気持ちになりましたし、逆に普段マネージャーって職種が、何を意識して働いているのかを深く考えていなかったので、そこまで考えて行動してるのか!っと言う意味でも興味を持てました。

 

f:id:kikuchi1201:20161009104444p:plain

 

 

 

質疑応答で「マネージャーと言う職種はどうしてもチームの生産性やプロダクトの品質、それからサービスの提供する価値を考える人なので、その裏側である技術的負債やリファクタリングに目が向きづらくなり、そこでエンジニア側と対立が起きてしまう事があるが、この場合はどうすべきかなのか?」と言った質問に対して、以下のスライドを使って、「 それは永遠のテーマなので絶対と言った解決策はないがそうなった場合はビジネスサイドで争ってはいけない」と言い切ったのが凄く印象的でしたし、また、エンジニアはエンジニア側でリファクタリングする事による成果を数値でモデル化して納得させるデータを基に提供しなければならないと 。

 

f:id:kikuchi1201:20161009105826p:plain

 

 

 

でまぁ、これ以上のグダグダ感想を書いてもしょうがないので、総括するとスライドみて下さいって事です。

上にも張りましたけど、ロックなんで、超ロックなんで見て下さい。

 

niconare.nicovideo.jp

 

こちらの塩谷さんのブログ記事にほとんど載っていたのでこちらも一緒に紹介させて頂きます。

 

「ロックスターになれないエンジニアたちに贈る生存戦略」というお話をしてきたよ #forkwell_meetup | Kwappa研究開発室

 

会場自体は飲食が自由で、会社の紹介ブースでお酒、日本酒やドリンク、それから軽い食事も用意されて、株式会社 gifteeさんのブースでは淹れたてのコーヒの提供もされていたり等、普段あまり経験した事ない勉強会(?)で非常に良かったです。

 

改めて運営の皆さん、お疲れ様でした。