人間とは記憶なのかと考えさせられる作品 – 記憶屋

読んだ。

望んだ記憶を消すことが出来ると言われている記憶屋。最初は都市伝説の類と考えていたが主人公の周りで不可解に記憶をなくす人間が出てきたことで記憶屋を調査しだす。少しづつ明らかになる記憶屋の存在とそれにまつわるエピソードを記載した作品

角川ホラーで出版されているがホラーではない。「記憶屋」という都市伝説的な物の怪が登場するが恐怖を感じるということは無いと思う。記憶を消されることでこれから先楽に生きていけるとすればそれは良いことなのだろうか?本作で登場するトラウマを記憶を消すことで対処するという方法は生きやすくなるのかもしれない。しかし、「記憶という小さな粒の積み重ねがその人を形作っている」という本作に登場する言葉を考えるとトラウマすらもその人を形作る大事な一つのピースだと考えることが出来るかもしれない。

話の流れも綺麗で、ホラーというより感動作として出版したほうが売れたんじゃなかろうかと思う。ホラーを期待して読むとがっかりしてしまうかもしれないが、都市伝説の物の怪が出てくる感動ミステリーとして読むと非常に面白い作品だと思う。最近読んだ中では一番おすすめしたい作品。

村田沙耶香が不思議すぎて気になる

僕はラジオを聞くのが好きで色々なラジオを聞いているのだが、この間「朝井リョウと加藤千恵のオールナイトニッポン0」へ作家の村田沙耶香さんがゲストとして登場した。このラジオは加藤千恵さんの素晴らしいバランス感覚と朝井リョウさんというクレイジー枠の作家の掛け合いが面白い番組で、二人が作家であるためよくほかの作家さんのエピソードも登場する。羽田圭介さんや西かなこさんや中村航さんとかの話がよく出るのだがエピソードを聞いていると作家は変わった人が多いと感じていたわけだが、この度ゲストとして登場された村田沙耶香さんのぶっ飛び方がすごかった。

僕はこの放送を聞くまで村田沙耶香さんという作家を知らなかったのだがラジオでの話を聞いてこの人が書く本はどういうものなのか気になってしょうがなくなった。「寝るときは別人になる。村田沙耶香として寝ることはできない」とか「加藤さんの好きなところは私の優しさは計算なんだよねという言葉を発した時の顔」だとか「朝井さんの好きなところは明るい闇だ」とか会話の端々から感じられる闇の深さとそれを客観的に淡々と語る口調に興味湧いてしょうがない。

この人が書く本が気になってしょうがなく、別の本を呼んでいる最中にもかかわらず本屋へと走って買ってみた。

とりあえず売ってあったこの本を読んでみたのだが読み終わった時に何とも言えない気持ちになる。朝井リョウさんが「村田紗耶香さんの本は傑作とか話題作とかじゃなくて問題作として帯を書かれる」と言っていたがその理由がよくわかった。なにをどう考えて生きていたらこのような本をかけるようになるのか非常に気になる。

ラジオの中ではこの本が話題に上がったが中身が非常に気になる。「本の題目として性をとりあえげていることが多い」という話もしていたが読んだ感想としては性や死や恐怖など人間が潜在的に生物としてもたざるえない根源的な闇の部分を描く人なんだと思う。言い方は悪いがサイコパス的な僕では決して思いつかない疑問をもって、その答えも常人には理解できない斜め上の答えを出すのだろう。人には色々いることを再認識させてくれた村田紗耶香さんが紡ぎだす世界をもうちょっと読んでみようと思う。まだ1冊しか呼んでいないが他の本も猟奇的な中毒性がありそうで戻ってこれなくならないように気をつけたい。

ラストが驚愕すぎて正しく伝わっていない映画 – シャッターアイランド

なんか色々なところで書かれているラストに驚愕の意味が違うんじゃないのかと思って書いてみる。ネタバレを含むというか終わり方の考察なのでまだ見ていなくてどういう結末なのかを知りたくない人は読まないほうがいいと思う。



驚きの結末の「驚き」の部分が「探していた囚人が実は本人である」という部分であるように色々なところで書かれているがそうではないはずだ。引き合いにシックス・センスやアザーズが出されたりするが本作の「驚き」の部分はそこではない。本当の驚きは「主人公はラストで記憶を取り戻している」ということだ。

この話は大雑把に言うと患者が自分が患者であることを忘れて疾走した患者(自分)のことを探し続け、最終的に精神科医の先生から自分が探していた患者であると告げられるとそのショックに耐え切れずに告げられたことを忘れてまた患者(自分)を探しだすというループしている話である。さらに映画でとりあえげられたのは何度もループした後でこれで精神疾患が治らなければロボトミー手術を行うことになっていた。ロボトミー手術を行われると自我がなくなり死んだように生きることになるため、精神科医は最後まで患者の記憶が戻ることを望んでいる。その祈りも虚しく最後に自分が患者であることを忘れて患者を探しに行くという行動を行いロボトミー手術をするために何処かへ連れて行かれるところで映画は終わる。

しかし、最後に主人公は「モンスターで死ぬか、善人で死ぬか」という発言をしている。モンスターで死ぬというのは自分が自分の妻を殺したことを理解したまま死ぬということ、前任で死ぬというのはロボトミー手術を行うことで妻を殺したということを忘れて死ぬということを表していると考えられる。もし、自分がすべての記憶を思い出したということを精神科医に伝えればロボトミー手術を免れることができるが、モンスターとして死ぬことになる。認めなければロボトミー手術を受けて全てを忘れて善人として死ぬことが出来る。この選択で主人公は善人として死ぬことを選ぶためにわざと全てを忘れたふりをしたとかんがえることが出来る。ここが本作の「驚き」の部分である。最後の数分で「忘れたことを伝える言葉」の後に発されれる「忘れたことを伝える言葉は演技であるということを伝える言葉」を発するが、精神科医は本当に記憶をなくしているのかを問いただすことなく主人公と逆の方向に歩き出す。この含みが素晴らしいのである。

本作は決して「探していた患者が実は本人だった」という単純な話ではない。最後の最後の一言だけで終わりに含みをもたせ閲覧者にこの後を考えさせるこの技術こそが「驚愕のラスト」であり面白い部分なのだと思う。

ミステリーの参考書のような短篇集 – 満願

このミステリーがすごい!で話題になっていたので、文庫になるのを待てずに読んだ。短篇集ですべての話にきっちりと落ちがついており、なるほど。確かに面白いと思える。全ての話で起承転結がきっちりついていて読みやすく、ミステリーの初心者でも肩肘張らずに読むことができる本なのではなかろうか。ただ、どういう本なのか知らずに読み始めてしまった僕が悪いのだろうが、短篇集ではなく長編小説だと思っていたためちょっと拍子抜けしてしまった。短編で伏線を回収する本が好きで通勤時間に読む本を探している方であればちょうど移動時間に読み終わることができる分量だしいいんじゃなかろうか。

身体的特徴のせいで自分に自身が持てない人に薦めたい – 片眼の猿―One-eyed monkeys

「カラスの親指」を見てから道尾秀介さんの存在を知り読んでみた。話の内容は非常にざっくり言うと「盗聴専門の探偵がある会社の調査の依頼を受ける。調査のために新たに雇った女性と一緒に会社の調査を行うが、その会社の調査中に殺人事件が起こり」という話。

この話の最大の特徴は登場人物だと思う。耳が異常に大きく聴覚が発達しているがそれを隠すために大きなヘッドフォンをしている主人公。目が異常にでかく非常に視力がいいがそれを隠すために常にサングラスをしている新たに雇われる女性。なんらかの特徴を持ってスーパーマンのように活躍していくのかとおもいきや人間味を持ちながら話が進んでいく。道尾秀介さんらしく最後に全てをばらすという記述方式はさすがの一言。

読んだ後に身体的な特徴など些細な事だと思えるだろう。身体的な特徴というのは自分が気にするほど他人は気にしていないことも多く、その身体的な特徴をプラスに変えるかマイナスに変えるかはその人次第なんだろう。身体的な特徴に対して自信と誇りを持ち、堂々とその特徴と一緒に生きていく心構えがあれば身体的な特徴はプラスへと変わる。そういった励ましが本書を通して作者は語りかけているのではなかろうか。

スマホで音楽を聞くためにBluetoothスピーカーを買うぐらいならシアターバーを買ったほうがなにかと捗る

AWA、Line Musicを筆頭にApple Music、Spotifyと続々とサブスプリプション型の音楽サービスがリリースされている。ただ、スマホで音楽を聞く上で一番気になるのは音質だと思う。最近の機種だと少しづつ音も良くなってきてはいるが音量を大きくするとどうしても音が割れてしまい聞き苦しい。移動中に音楽を聞く際はイヤホンをつけて高音質で音楽を楽しむことができるが、家で音楽を聞く時までイヤホンをつけて聞きたくない。どうせなら

そこでおすすめはこいつ。我が家の音楽環境はこいつが届いてから激変したと言っても過言ではない。

なぜシアターバーなのか?という疑問も出てくるかもしれないがブルートゥーススピーカー単体で購入する値段を考えるとスマホで音楽を聞くだけのために買うのにはもったいない。どうせ買うのであればテレビから流れる音も高音質になるシアターバーを買ったほうがお得だと思う。

こいつのいいところはスタイリッシュな外観のくせに音がいい。5.2chだと場所をとるし、いつも座っている部分で音を合わせないといけないためジャストポイント以外ではあまり意味が無い。それなら省スペースかつ音がいい方がいい。サブウーハーが付いているため重低音もきっちり聞こえる。もし使っている携帯がxperiaならNFCをかざすだけでbluetoothとの接続設定が完了するという痒いところに手がとどくところも素晴らしい。こいつのお陰でDVDとブルーレイでここまで音が違うのかと再認識することができた。もし今あるテレビで音の違いがわからないという人がいるのであればぜひ買って試してみたほしい。

また、持ち運び出来てスタイリッシュなスピーカーが欲しい人はこいつがおすすめ。

これからの季節外でバーベキューをしながら音楽を聞きたくなることもあるだろう。ラジカセを担いで音楽をガンガン流しながら歩いているのはもうださい。これぐらいのコンパクトなものを持ち運んでスマホから音楽を飛ばせば省スペースかつ高音質で音楽を聞くことができる。四角い箱の形と言いソニーらしいかっこよさが溢れ出る逸品だと思う。

parseを使ってtwitterに画像付きの投稿を行う

めも

- (void)p_postTwitterMedia
{
    NSData* data = UIImageJPEGRepresentation(image, 1.0);
    AFHTTPRequestOperationManager* manager = [AFHTTPRequestOperationManager manager];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    NSMutableURLRequest *tweetRequest = [manager.requestSerializer multipartFormRequestWithMethod:@"POST"
                                                                                        URLString:@"https://upload.twitter.com/1.1/media/upload.json"
                                                                                       parameters:nil
                                                                        constructingBodyWithBlock:^(id<AFMultipartFormData> formData){
                                                                            [formData appendPartWithFormData:data name:@"media"];
                                                                        }
                                                                                            error:nil];
    
    [[PFTwitterUtils twitter] signRequest:tweetRequest];
    
    AFHTTPRequestOperation *operation = [manager HTTPRequestOperationWithRequest:tweetRequest success:^(AFHTTPRequestOperation* operation, id responseObject){
        NSLog(@"success!");
        [self p_postTwitterStatus:responseObject[@"media_id_string"]];
    }failure:^(AFHTTPRequestOperation* operation, NSError* error){
        NSLog(@"operation=%@",operation);
        NSLog(@"eror=%@",error);
    }];
    
    [manager.operationQueue addOperation:operation];
}

- (void)p_postTwitterStatus:(NSString *)mediaId
{
    NSMutableURLRequest *tweetRequest = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST"
                                                                                      URLString:@"https://api.twitter.com/1.1/statuses/update.json"
                                                                                     parameters:@{@"status":@"hogehoge", @"media_ids":mediaId}.mutableCopy
                                                                                          error:nil];

    [[PFTwitterUtils twitter] signRequest:tweetRequest];
    
    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:tweetRequest];
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject){
        NSLog(@"success!");
    }failure:^(AFHTTPRequestOperation *operation, NSError *error){
        NSLog(@"fail!");
        NSLog(@"operation=%@",operation);
        NSLog(@"error=%@",error);
        
    }];
    
    [[NSOperationQueue mainQueue] addOperation:operation];
}

まとめ

「statuses/update_with_media」を使うサンプルがよくあるけど、こいつdeprecatedになっている。なので、画像を一旦上げてから帰ってきたmediaIdを使ってつぶやきを投稿することでひも付けされる。

SwipeCardで文字サイズを変更できるオプションを付けました

要望がありましたので、以下の機能を追加しました。

  • メイン画面のメニューから文字サイズを変更できるように修正
  • 外部ファイルの文字コードをUTF-8固定からShift-jisも読めるように修正

他にも要望を頂いておりますものに関しては順次対応しておいこうと考えていますので気長に待っていただけると幸いです。機能追加等の要望に関してはメール、またはTwitterでいただけると順次対応していきます。

https://play.google.com/store/apps/details?id=com.choilabo.android.englishstudycard

プログラマにおける「知識の幅」の重要性

プログラマーの立ち位置として年齢を重ねるごとに求められるのは「知識の幅」なのかもしれない。

プログラマーになりたてに言われた「動くだけのものならだれでも作れる」という言葉の意味を最近よく考える。この言葉は僕の中で的を射ていて、今ウェブサービスを作る人は素人でも5万といるしアプリを作る人も同じようにいっぱいいる。じゃあ、アプリを作れればその人はプロなのかというとそうではなくて、「動くものが作れる」のその後がプロと素人の違いなのかと思う。

Androidに限らず古いバージョンで動くが最新のバージョンだと動かなくなっていたり非推奨になっていたりするものがネットの海には溢れかえっている。モダンな書き方は日々進化するし、便利なライブラリは日々出てくる。言語仕様も変わればIDEも変わっていく。そんな中でこれが一番いいという書き方を見つけるというのは至難の業だし、実際そんな銀の弾丸なコードの書き方なんて存在しないんだろう。使用する言語が変わればコードの書き方が変わるように、一緒にいるメンバーによってコードの書き方も変わった方がいいと思う。

どんな環境でも室の高いコードを書くためには幅の広い知識を得るしか無い。プロジェクトの開始時に記載しだしたコードというのはそのプロジェクトの大きな指針となる。後から加わった人間はその指針にそったコードを書いていく可能性が高く、最初の指針が曲がっていればそのプロジェクトのコードはとんでもない方向へと進んでいくだろう。後から加わった人間の知識の幅が最初にコードを書いた人の知識の幅よりも狭い場合、とんでもない方向に進んでいることすら気づかずにプロジェクトは進んでいき、最終的には挫傷することになるんだろう。

新しいことをやろうとした時も同じだ。

「なにをやりたい」と言われたことに対して、それを実現できるかできないかを判断するのはプログラマーの仕事だ。プロジェクトの核となる「実現すべきこと」であれば調査するのに時間をさいて、実現方法・実現時間を出すのは許されるだろうが、日々の改修での見積もりや実現出来るかの判定はその人間の知識の幅で精度が決まる。知っていれば3分でできることでもプログラマーが無理だと判断すれば、実現すれば有効な施策が実現されないこともあるだろう。出来るかできないかの判定は知識がなければできないのだからここでも知識の幅というのは非常に重要だ。

手を動かしてできることはぶっちゃければだれでも出来る。実現するスピードは違うだろうしメンテナンス性も違うだろう。しかし、「動くだけで良いもの」であればだれでも作れる。その一つ上にたつためにプログラマーは勉強しなければいけないんだろうし、その一歩がプロがプロたる所以になるんだろう。

っと、ここまで書いて思うことは、果たして僕はプロだと胸を張って言えるのだろうかということだ。どれだけの知識を持っていればよいのかに終わりはないし、求められるレベルにもよるんだろうが、どのようなことを聞かれても即座に答えれるプロになってみたいものだ。

SwipeCardに学習結果のリセット機能をつけました!

SwipeCardに要望がありました以下の機能追加・修正をしました。

  • 学習結果のリセット
  • 単語帳で全てのデータを学習完了するとクラッシュする不具合修正
  • 学習が始まっていない状態でテストを開始するとクラッシュする不具合修正
  • その他軽微なバグ修正

引き続きSwipeCardで楽しい学習ライフを送って下さい!

https://play.google.com/store/apps/details?id=com.choilabo.android.englishstudycard

何か要望がありましたらTwitterまでご連絡下さい。

@sathu20xx