2015年12月26日土曜日

【読書】奇食珍食糞便

ちょっと前にKindleのセールになっていた「奇食珍食 糞便録」を購入。
タイトルの印象では、変わった食に関するレポートまとめかと思ったが、糞便が6割 食が4割と、正しいタイトルにしたら「奇糞珍糞珍食録」と言った感じの本だった。


概要

世界を股にかける著者が、あちこちの地域の糞便事情をクソ(糞)面白く詳細にまとめた著書。

中国の解放便所をはじめ、インドやタイ、スリランカの原住民の排便事情、はたまたはシベリでの−40度環境での匠な野糞のやり方(一歩間違えると死に直結するから)など、世界の糞便事情から本書は始まる。
途中、サナダムシやアマゾンの肉食いナマズなどの、排便と関わりがありそうな寄生虫等の余談を挟みながら、後半はイソギンチャクの刺身などの珍食へと話がシフトしていく。


感想

著者はものすごく糞便に関して”熱意”を持っているのだろうか、心なしか食の話しは糞便よりも少し面白みが欠ける印象だった。
まぁ、衝撃的な世界の糞便事情を読んだ後では、食の話はインパクトに欠けるのは仕方が無いのかもしれないが。。。

それはそうと、この本は暇つぶし程度に手に取る人が多いと思うが、アジアへの旅行やバックパッカーを予定している人は是非読んでおいたほうが良いと思う。
旅行前には、地域の美味しいモノや観光スポット、治安状況を調べるが、糞便が"どこで"できるかや"どうやって"やるかを事前に調べる人はいないと思う(少なくとも僕はそんなところまで頭が回らない)。
この本を読めば日本の糞インフラどれだけ恵まれているか分かるが、世界糞便事情を知らない僕らは当たり前のようにできる糞が、海外に行くとできなくなるなんて想像もできないであろう。
この本は、ただ単なる糞便情報発信の媒体だけでなく、旅行方針を見直させてくれ、僕ら日本人がどんだけ恵まれた便所(それが公園のぼっとん便所であろうとも)環境を持っているか気づかせてくれる聖書のようなものだと、僕は力強く思う。

このブログをスタバで書いているが、そろそろウンコがしたくなったので、今から便所を探しに行こうと思う。
こんな時にここが日本でよかった。綺麗な便所が目と鼻の先にあるのだから。

評価:★★★☆☆
読書時間:約4時間




2015年12月18日金曜日

【読書】まんがで鍛える脳の強化書

たま〜に脳を鍛えたいと思う時があり、無性に脳に関する本を貪りたい衝動に駆られる。
そん時にAmazonのおすすめで出てきた「まんがで鍛える 脳の強化書」を衝動買い。
半分以上が漫画なので、1、2時間で読み終えるけど、内容は結構しっかりしていたので、結構お得な買い物したと満足!


概要

鈍くさくて仕事が上手くいっていない”はな”(この本の主人公の女性)が、脳科学者である錬(カバーの男性)と知り合い脳のトレーニング方法を教えてもらう。”はな”は、鈍くさい自分から脱皮し変わりたいと思う気持ち(錬に対する少しの恋心)から、見る見る脳が成長し自分を変えていく……というストーリを通し、日常レベルで簡単にできる脳トレーニング方法を教えてくれる。

もちろん、トレーニング方法だけでなく、脳の解説もあるので、脳の仕組みを理解でき(結構初歩的なことが多いので、深く知りたい方は物足りなさを感じるかも)、脳に関する知識も知ることができる。

この本の中では、脳の8つの番地(思考系、感情系、伝達系、理解系、運動系、聴覚系、視覚系、記憶系)を紹介し、それぞれに似合った鍛え方を教えてくれる。
例えば、思考系を鍛えるには「身近な人の良いところ3つあげる」や、感情系を鍛えるには「植物に話しかける」や、記憶系を鍛えるには「前日の出来事を3つ挙げる」などなど。

感想

脳強化には毎日の積み重ねが大切なので、持続できる簡単なトレーニングを教えてくれるこの本は、結構良い本だと思う。
おそらく簡単に持続的なトレーニング力を読者に促すためか、少し読み物としては読みた足らなさがあるので、評価としては星3つ。

評価:★★★☆☆
読書時間:約2時間

2015年12月13日日曜日

【mac】OS X El Capitan(10.11)でのライブ変換の無効

macのOSを10.11にアップデートしたら、日本語の変換がスペースを押して無いにも関わらず、勝手に自動変換されるようになっていた。
とっても使う辛いので、この機能(ライブ変換機能)を無効にできないか調べたら、すぐに見つけれたのでメモ。

[1] システム設定変更を開く
 「アプリケーション」フォルダー内の「システム環境設定」をダブルクリックし、「システム環境設定」のウィンドウを開く。


[2]「キーボード」設定を開く
 「システム環境設定」ウィンドウ内の「キーボード」のアイコンをクリックする。

[3]「ライブ変換」のチェックボックスを外す
 「キーボード」ウィンドウ内の「入力ソース」をクリックし、画面内の「ライブ変換」のチェックボックスを外す。
 チェックボックスを外すと下の画面のようになる。


これで設定はOK。チェックボックスを外した時点で設定が反映される。

2015年12月8日火曜日

【読書】仮面病棟

電車で「一気に読める!大どんでん返しのラスト」という広告が気になり、読んでみた仮面病棟 (実業之日本社文庫)
広告通りに一気に読めて、ラストも面白かったので、感想を書こうかと思う。


概要

コンビニ強盗したピエロの仮面男が、女性を銃で撃ち人質にし、深夜の病院に逃げ込む。病院には、看護師二人と、その日のたまたま当直になった主人公の医者が勤務しており、この主人公の医者がピエロの仮面男から「自分が撃った女性を治せ」と命令される。女性は一命を取り留めるが、ピエロがこの病院で籠城することになった。
この籠城中に、ピエロの一貫性のない行動や、看護師らの不自然な言動により、この病院が抱える大きな闇が徐々に顔を出してくる。そして、この大きな闇に翻弄される主人公は、最後にこの闇の秘密を知ることになるが...

この面白いポイント

電車の広告通りテンポよくどんどん読める小説だった。
ある程度まで、自分の推測通り読めていたが、最後の最後で思わぬ展開で、本当に"大どんでん返し"があって、びっくりするほど面白い小説だった。
このどんでん返しに引っかかった理由は、テンポよく読める話の構成にあり、自分の推測が間に合わずに話が展開されていったからだと思う。本に飲み込まれるとは、このことだと実体験した(笑
じっくり読めば推測できたと思うので、読み終えた時は、陶酔感と最後を推測できなかったという悔しい感情の入り混じった不思議な感覚に落ちいた。
そんなかんなで、とてもお勧めな本です。

評価:★★★★☆
読書時間:約4時間



2015年10月18日日曜日

【読書】ちょっと今から仕事やめてくる

この前(2015年10月)、久しぶりに新大阪の駅ホーム内の本屋さんに立ち寄ったが、新くしくできたスタバやらなんやらにスペースを占領されていて、昔よりも本屋さんが小さくなってたのがショックだったtomayutaです。

大阪から品川の新幹線の間で読み切れる本を新大阪の駅で探していたら、読書し始めの僕にぴったりのページ量の「ちょっと今から仕事やめてくる (メディアワークス文庫)」を見つけた。
タイトルの印象から、ポップに仕事を早々に辞めて、起業やらなんやら第二の人生を歩む波乱万丈な物語かなと思ってので、購入。
しかし、内容は全然違っていた。


概要

ルーチンワークな毎日とブラック起業にこき使われまくり、入社半年で心身ともに衰弱していた隆が、駅のホームで自殺しそうになった時に、「ヤマモト」という男に助けられる。
その「ヤマモト」は、隆の同級生と名乗るが、隆はそんな記憶が全然ない。そんなヤマモトに心許した隆は、ヤマモトの助言等により徐々に自分の生活が好転しだす。

この本の面白み

人生のどん底に落ちている隆を、突如救世主のように救うヤマモト。
このヤマモトの屈託ない笑顔と関西弁に、隆は徐々に心許していくのだが、読んでる僕まで心温かくなった。
笑顔は想像するしか無いが、隆を元気つけようとする関西弁が、標準語よりも格段に優しく感じる。
そういえば、主人公を助けるパートナーには、関西弁を使っている割合が結構あるように思える。例えば、「風俗行ったら人生変わったwww」とかwww

物語の前半は、このヤマモトに心を許していく隆の心情や、隆の生が少しづつ良くなっていく様を読むことができる。
序盤早々 鬱状態の隆が、晴れ晴れな表情に変わっていく過程を読んでいると、単純にほのぼのとした感情に包まれる。
んで、好転するには、ヤマモトの助言が色々出てくるんやけど、その助言に「あぁ、なるほど!」と目からウロコがあり、お得感もある。

物語の後半は、ヤマモトの正体について展開が実に興味深い。
同級生のヤマモトが、実は同級生じゃなかったり、もしかしたら、幽霊かもしれないなど、なぜ隆を助けたのかも含めてヤマモトの正体が明らかになっていく過程はとても面白い。

総評

★★★☆☆
分量的にちょうどよく、ストーリーも簡潔になっているので、サクサク読める。
大阪〜品川の新幹線ないで十分に読み切れる分量。
ただ、少しストーリーが推測できたので、読書をよくする方にとっては、物足りなさを感じるかもしれない。
内容は、逆境を乗り越える系が好きな僕個人的には良かったので、★3つ。



2015年10月8日木曜日

【読書】俺物語!! カッコイイ男の中の漢の主人公

少女漫画はママレード・ボーイぐらいしか読んだ事の無い僕が、前からハマっている少女漫画。
それが、「俺物語」
いつの間にかKindle版の俺物語!! 8  がリリースされてたので、楽しく読んだので、
今日はこの俺物語について思うことを自由に書いてみる。



俺物語について

主人公の漢気溢れるゴリラのような猛男(たけお)が、カワイイ彼女の大和(やまと)との交際を描いた漫画。
恋愛漫画というよりもコミカルなギャグ漫画っぽい感じ。

電車の中で痴漢にあった大和を、猛男が助けたことにより二人の交際がスタート。
彼女の大和との将来のキスのために、意味不明な説得で無理やり親友とキスをしたり、乙女心を理解するために、コンビニで女性雑誌を仁王立ちで読んでたりする猛男の清い真っ直ぐな姿がすごく面白い。

猛男の周りの登場人物(親友のスマートな立ち振る舞いや、屈託な猛男の父母など)もすごく魅力的で、この漫画の面白さを引き立てているが、
この漫画の面白さの真髄は、猛男の真っ直ぐな行動、別の言い方をすると漢気あふれる行動だと思っている(あくまで個人的な感想)

猛男の漢気とは

漢気とはなんぞや?となるが、ここでの漢気とは、猛男の良さということにする。
この猛男の良さに僕はいつも心奪われているのだが、猛男の良さはなんぞや?と考えた時、僕の考えは以下の通りだ。

  1. 本当の思いやり
  2. 半端ない包容力
  3. 大胆な行動力
  4. 今をしっかり生きている

1.本当の思いやり
日々の日常の中で相手を思いやり行動している人って、基本的に自分に余裕がある時にしかできていないと思う。
会議や学校に遅れそうな時に、道を尋ねられたり、大きな荷物を持っているおばあちゃんを見かけた時、親身になって対応できる人はすごく少ないだろう。
てか、僕自身はそんな人間じゃ無いし、僕が東京に来てからそんな人を見かけたことが無い。
猛男は、自分の利害を全く考えずにそこに困った人がいれば全力で助け、自身の恋敵のコンクール(詳細は8巻)を応援するなど、自分の立場を度外視して相手のことを想える良い人なのだ。

2.半端ない包容力
体がごついことからも連想できるその包容力。
百聞は一見に如かずと言うように、包容力の定義がおぼつかない僕が説明するよりも、漫画を見ていただいた方が理解が早いだろう。

3.大胆な行動力
困っている人がいればスグに助けて、その後何事もなかったかのように去っていく猛男。
今までに、反省しない痴漢を警察の目の前で正拳突き、彼女の友達を助けるために火事のカラオケに突入し脱出のために3、4階から大ジャンプ、親友のお姉ちゃんを空港に届けるために自転車パクって疾走、などなど。
人助けのためならなんでもやっちゃうその勇姿に心奪われます。

4.今をしっかりと生きる
ここは僕のチョー個人的な意見になるが、物語を通して猛男は打算抜きでその時その時を懸命に生きているなぁと感じる。
日頃の生活の中で、不安や心配事に対してどうにかしたいと思いながらもそのままにして過ごしていることがないだろうか?
また、楽しい時や幸せな時を過ごしていると、「今こんなに幸せなら今度不幸せな事が起こるかも?」みたいに現状の幸せを全力で楽しめないことがあるのではないだろうか?
猛男は目の前のことに全力で向き合い楽しんでいる。
向き合うという意味で僕が気に入っている場面が8巻にある。恋敵に彼女を取られるのではないかと危惧する猛男は、未来の不安から逃げるのでなく「今、大和(彼女)が俺を好きなら、そばに居続ける」と心を決めるシーンでは、さすが漢だなぁと感心した。


俺物語の話を書こうと思ったら、猛男のことばかり書いてしまった。しかもあまり上手く書けて無いような気が。。。
間違っても僕は男性が好きとかそういうことでは無いが、一番言いたかったことは、「男の目から見ても猛男はカッコよくて、このカッコよさがこの漫画の面白み(の一つ)だ」ということ。

男としても人間としても理想でカッコイイ漢だから、男女関係なく人気があり、連載してからすごい早い段階で映画化になるほど有名になったんじゃないかなぁと思っている。

以上。

2015年9月26日土曜日

【読書】もっとあの世に聞いた、この世の仕組み

よく本を読むようになったので、忘却予防のためにアウトプットすることに。
最近読んだ本で面白かった本「もっと あの世に聞いた、この世の仕組み」の僕なりの解釈を以下に綴ります。

■チョー概要



うつ病をきっかけに守護神(?)と交信できるようになった作者が、その守護神から教えてもらった"この世の仕組み"をまとめた本「あの世に聞いた、この世の仕組み」の続きとなる本。
「ほんまかいなぁ?笑」と思うことがあるけど、様々な宗教で語られている話や、現代風の例え話を使って、この世(精神世界)の仕組みの解説&人生謳歌の考え方を教えてくれてます。

■僕の記憶に残ったこの本の内容

この本を読んで記憶に残っていることは、「人生、苦難や快楽など色々な事があるけど、それらを楽しみなさい。そうすれば、人生とってもHaapy!になるよ!!」ってことかな。

この世は神様が作ったバーチャル世界のようなもので、その世界で作られた人間は、喜怒哀楽の感情を存分に味わうために生まれてきたので、元々喜怒哀楽を持っている。
だから、人生を過ごしている中で、怒ったり悲しむような事があれば、素直にその感情を受け入れることが大切やと。
一番ダメなことは、怒哀の感情に対して「理由」をつけることだと(「後輩が言うことを聞かないから、イライラする」としたら、「イライラ」しているのは「後輩が言うことを聞かないから」と理由づけするのでは無く、「あぁ、俺、イライラしてるわ。発散するために、AVで一発いっとくか!」ってのが良い)。

僕が書くと「何言っているの?」ってなるけど、この本を"素直に"読むと今自分が抱えている問題を少し違う角度から見れて、結構心が楽になります(僕はなりましたw)。

他にも色々精神論的な面白いこと(実はこの世は願った事が叶うような世界であるとか)が書かれていたけど、長くなるから割愛。





2015年2月9日月曜日

HTML5で簡単にandroidアプリを作る

FirefoxOSアプリはHTML5で作成する。
FirefoxOSアプリで作成したアプリをそのままアンドロイドアプリに移植したいなと思い、
アンドロイドのwebviewを使ってhtmlを表示させることにした。
ただし、僕はwebサーバを建てて、そこにFirefoxOSアプリを配布してる(ホスト型アプリ)ので、アンドロイドアプリもwebサーバからhtmlを取得することを想定。

やりたいことは、以下の2点。
・geolocation(javascriptで位置情報を取得するapi)の有効
・localstrageの有効

メインのactivityクラス(Main.java)は以下の通り。
 21
 22public class Main extends Activity {
 23    final Activity activity = this;
 24
 25    // WebView宣言 これがハイブリッドアプリの要                                                                                                             
 26    WebView webview;
 27
 28    public static final int END_CONFIRM_DIALOG = 0;
 29
 30    @Override
 31    public void onCreate(Bundle savedInstanceState) {
 32        super.onCreate(savedInstanceState);
 33
 34        // WebViewの親になる最上位のwidget                                                                                                                  
 35        LinearLayout layout = new LinearLayout(this);
 36
 37        // 最初に開くURL                                                                                                                                    
 38        // もし何らかの条件に基づいてURLを動的に変えたいならこのへんに処理を書く                                                                            
 39        String targetUrl = "http://接続させたいURL";
 40
 41        // WebView 作る                                                                                                                                     
 42        webview = new WebView(this);
 43
 44        // JavaScript をオンに                                                                                                                              
 45        webview.getSettings().setJavaScriptEnabled(true);

 46        webview.getSettings().setGeolocationEnabled(true);
 47
 48        // localstrageの利用                                                                                                                                
 49        String databasePath = this.getApplicationContext().getDir("localstorage", Context.MODE_PRIVATE).getPath();
 50        webview.getSettings().setDomStorageEnabled(true);
 51        webview.getSettings().setDatabaseEnabled(true);
 52        webview.getSettings().setDatabasePath(databasePath);                                                                                              
 56
 57        // ズームを有効化するか                                                                                                                             
 58        webview.getSettings().setSupportZoom(false);
 59
 60        // スクロールバーが外側に表示されないようにする                                                                                                     
 61        webview.setScrollBarStyle(WebView.SCROLLBARS_INSIDE_OVERLAY);
 62
 63        // WebView クライアント設定。これで画面遷移がアプリ内でハンドルされる                                                                               
 64        webview.setWebViewClient(new WebViewClient() {
 65            // WebViewがエラーに直面した時の処理                                                                                                            
 66            public void onReceivedError(WebView view, int errorCode,
 67                    String description, String failingUrl) {
 68                // とりあえずエラーの説明をToastで表示                                                                                                      
 69                Toast.makeText(activity, "エラー発生 詳細:" + description,
 70                        Toast.LENGTH_LONG).show();
 71            }
 72
 73            @Override
 74            public boolean shouldOverrideUrlLoading(WebView view, String url) {
 75                return false;
 76            }
 77        });
 78
 79        // 進捗状況表示のためにProgress barを用意                                                                                                           
 80        getWindow().requestFeature(Window.FEATURE_PROGRESS);
 81        // 進捗状況をタイトルバーに表示                                                                                                                     
 82        webview.setWebChromeClient(new WebChromeClient() {
 83            public void onProgressChanged(WebView view, int progress) {
 84                // WebChromeClient#onProgressChangedのprogressは0から100なのに対し、                                                                        
 85                // Activity#setProgressは0から10000の範囲で指定するので100倍する                                                                            
 86                activity.setProgress(progress * 100);
 87            }
 88
 89            @Override
 90            public void onGeolocationPermissionsShowPrompt(String origin,
 91                    Callback callback) {
 92                callback.invoke(origin, true, false);
 93            }
 94        });
 95
 96        // 指定したURLをWebViewに読み込ませる                                                                                                               
 97        webview.loadUrl(targetUrl);
 98
 99        // WebViewをLayoutにくっつけ描画                                                                                                                    
100        layout.addView(webview);
101        setContentView(layout);
102    }
103
104    // 戻るキーが押された時の処理                                                                                                                           
105    @Override
106    public boolean onKeyDown(int keyCode, KeyEvent event) {
107        // 戻れるページがあるかチェック                                                                                                                     
108        if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack() == true) {
109            webview.goBack(); // あったら前のページに戻る                                                                                                   
110            return true;
111        }
112        return super.onKeyDown(keyCode, event);
113    }
114
115    // 終了しそうになる時に……                                                                                                                             
116    @Override
117    public void finish() {
118        // 確認ダイアログを出す                                                                                                                             
119        showDialog(END_CONFIRM_DIALOG);
120    }
121
122    // 終了処理                                                                                                                                             
123    public void endApp() {
124        super.finish();
125    }
126
127    // 終了確認ダイアログを出す                                                                                                                             
128    @Override
129    protected Dialog onCreateDialog(int id) {
130        switch (id) {
131        case END_CONFIRM_DIALOG:
132            return new AlertDialog.Builder(this)
133                    .setTitle("確認")
134                    .setMessage("終了しますか?")
135                    // Yesボタンの設定                                                                                                                      
136                    .setPositiveButton("はい",
137                            new DialogInterface.OnClickListener() {
138                                // Yesが押された時の処理                                                                                                    
139                                public void onClick(DialogInterface dialog,
140                                        int whichButton) {
141                                    // 終了処理を呼び出す                                                                                                   
142                                    endApp();
143                                }
144                            })
145                    // Noボタンの設定                                                                                                                       
146                    .setNegativeButton("いいえ",
147                            new DialogInterface.OnClickListener() {
148                                // Noが押された時の処理(何もしない)                                                                                       
149                                public void onClick(DialogInterface dialog,
150                                        int whichButton) {
151                                }
152                            }).create();
153        }
154        return null;
155    }
156}


ポイント1:javascriptを有効。
 44        // JavaScript をオンに                                                                                                                              
 45        webview.getSettings().setJavaScriptEnabled(true);


ポイント2:geolocationを有効
 46        webview.getSettings().setGeolocationEnabled(true);
 47

ポイント3:localstrageを有効
 48        // localstrageの利用                                                                                                                                
 49        String databasePath = this.getApplicationContext().getDir("localstorage"Context.MODE_PRIVATE).getPath();
 50        webview.getSettings().setDomStorageEnabled(true);
 51        webview.getSettings().setDatabaseEnabled(true);
 52        webview.getSettings().setDatabasePath(databasePath);                                                                                              


あと、AndroidManifest.xmlに以下を追記。
INTERNETはインターネットを利用するから必要。
ACCESS_FINE_LOCATIONとACCESS_COARSE_LOCATIONはgeolocationを利用するので必要。
 9    <uses-permission android:name="android.permission.INTERNET" />
10    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
11    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

【参考にしたサイト】