ラベル プログラマーズバイブル の投稿を表示しています。 すべての投稿を表示
ラベル プログラマーズバイブル の投稿を表示しています。 すべての投稿を表示

2017年2月22日水曜日

【書評】RxJavaリアクティブプログラミング

  • 公開日:2017年02月22日
  • 公開日:2017年11月26日

概要

リアクティブプログラミングを日本語で説明した初めての本です。
まだRxjavaの需要は少ないと思いますが、よくぞ出版してくれたと思います。著者と出版社に感謝します。

私はRxjavaを使い始めて1年くらいで、まだ十分に使いこなせていません。
ドキュメントとコードを読みながら四苦八苦してRxjavaを使用していますが、理解が深まればと思って本書を購入しました。

Rxjavaとは

データの通知と取得に特化したプログラミング技法です。スマートフォンアプリの開発において、強力な武器になります。
しかし、リアクティブプログラミングに慣れるには、時間がかかるでしょう。

JavaとScalaの経験があり、オブジェクトプログラミングと関数プログラミングに慣れている技術者でも多くのトライアンドエラーが必要になるでしょう。
サーバーサイドでも利用できますが、必要ないと思います。WEBで使うならフロント側のjavaScriptで導入するべきです。

本書の対象者

丁寧に説明されていますが、リアクティブプログラミングの経験がないと、理解できない可能性が高いと思います。逆に、リアクティブプログラミングの経験がある人には良書です。Rxjavaを使う開発時には、側に置いておきたい本です。索引がとっても使いやすいです。

紙面の都合上仕方のないことですが、Androidのコーディングに関する情報はほとんどありません。あくまでRxjavaの説明です。

気になったこと

指摘する内容は本の問題点というより、リアクティブプログラミングの問題です。
リアクティブプログラミングは素晴らしい技術です。しかし、学習コストが高いのが気になります。

巨人の肩に乗るという格言がありますが、この巨人の肩に乗るにはかなりのプログラミングの経験値が必要になります。

リアクティブプログラミングを理解するにはデザインパターンのObserverパターン、ビルダーパターン、イテレーターパターン等の基本は押さえてるのが前提となります。 また、それなりのスレッドの知識も必要です。Producer-Consumerパターンなどの基本は知っている必要があります。でないと、リアクティブプログラミングの何が優れているか、どこで使うべきかを理解できないでしょう。

上記の知識や技術は、Javaを利用したことのないエンジニアにはわかりづらいと思います。

一方で、リアクティブプログラミングを比較的理解しやすいのは、Java、Scala、JavaScriptに長く関わってきたエンジニアでしょう。理想はこの3つの言語でWEBとアプリ開発の両方を経験したエンジニアです。であれば、理解は早いと思います。
もしくは既存のプログラミング知識のないエンジニアなら、先入観がないので逆に理解が早いかもしれないですね。。。(理解できればですが)

まとめ

リアクティブプログラミングの経験がある人が、知識と技術を深めるのに役立つ本です。Rxjava未経験の人は、購入前に手にとって中身を確認しましょう。さっぱり理解できない場合は、まだ手に取るのは早いです。ただし、良書であるのも事実なので、今後Rxjavaを必ず使うことが決まっているなら、絶版対策として購入した方が良いかもしれません。

追記

リアクティブプログラミングの理解と習得に役立つ本を紹介します。

増補改訂版Java言語で学ぶデザインパターン入門

デザインパターンを学習するならこの本です。リアクティブプログラミングをきちんと理解するならIterator、Observer、Bulderは抑えときましょう。

Java言語で学ぶデザインパターン入門 マルチスレッド編

超良書。結城さんは説明が上手でわかりやすいです。全部目を通しましょう。分厚いけど、10日もあれば読めます。

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

これは神。スレッドの本で1番良い本です。なかなか手に入らないので、見つけたら速攻買いましょう。

関連記事

よく利用する実装方法まとめ

随分と扱えるようになってきたので、深く理解するために再度復習中です。せっかくなので、コードを残します。コードはjavaでなくkotlinで記載しています。

1. 流れを理解(確認)するサンプル。

{project_folder}/inaction/hello_world.kt

    private fun onClickRx() {
        val flowableOnSubscribe = object : FlowableOnSubscribe<String> {
            override fun subscribe(emitter: FlowableEmitter<String>) {
                val datas  = mutableListOf<String>("Hello world", "こんにちわ地球のみなさん")

                for (data in datas) {
                    if (emitter.isCancelled) {
                        Log.d("Reactive2Activity", "emitter.isCancelled");
                        return
                    }

                    Log.d("Reactive2Activity", data);
                    emitter.onNext(data)
                }

                emitter.onComplete()

            }

        }

        val subscriber = object : Subscriber<String> {

            var tempSubscription : Subscription? = null

            override fun onComplete() {
                Log.d("Reactive2 : onComplete ", Thread.currentThread().name);
            }

            override fun onNext(t: String?) {
                Log.d("Reactive2 onNext : ", t + " : " + Thread.currentThread().name);
                result.text = t

                tempSubscription?.request(1L)
            }

            // 最初
            // 購読
            override fun onSubscribe(subscription: Subscription?) {
                Log.d("Reactive2 onSubscribe ", Thread.currentThread().name)
                tempSubscription = subscription
                subscription?.request(1L)
            }

            override fun onError(t: Throwable?) {
                t?.printStackTrace()
            }

        }

        // つぎはsbcribe
        // データはバッファ
        val flowable = Flowable.create(flowableOnSubscribe, BackpressureStrategy.BUFFER)
        //flowable.subscribe(subscriber)
        // emitter
        flowable.observeOn(AndroidSchedulers.mainThread()).subscribe(subscriber)

    }

順番は、1. Subscriber#onSubscribe 2. FlowableEmitter#onNext(), 3. FlowableEmitter#onNext() 4. FlowableEmitter#onComplete, 5. Subscriber#onNext() 6.Subscriber#onNext() 7. Subscriber#onComplete()

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年10月3日月曜日

Android開発者にこそオススメの一冊 - 書評 - Java言語で学ぶデザインパターン入門 マルチスレッド編

  • 公開日:2016年10月03日

はじめに

650ページを超える本だが、Javaの知識があれば読破するのに、あまり時間はかからないだろう。 私は演習問題を含めて10時間ほどで読めた。

逆に、Javaの知識がなければ、読むのはかなり厳しいだろう。なお、インタフェースの理解は必須だ。
コードの内容が頭に入ってこない場合は、まだ読むには尚早である。 もっと力をつけてから読むと良い。

特徴

題名にデザインパターンとあるが、Javaスレッドの基本的な使いかたを丁寧に説明した本である。 デザインパターンん本ではない。題名が悪い。
Swingの開発者をターゲットとしているので、Androidアプリ開発者に適している。 スレッドだけでなくリスナーの説明があるのも良い。

一方で、WEBアプリの開発者にはまるで向かない本である。 発売時期を考えると、世に早くですぎた感が否めない。
とはいえ、Android開発者には最高の本である。
また、日本語が原書なので、日本人開発者に非常に読みやすいのも特徴だ。

できれば、手元に著者の本であるデザインパターンもあると、なお理解がしやすいだろう。

ObsevaerパターンやFlyWeightパターンの知識は、よりスレッドの理解を高めてくれる。

まとめ

優れた本はいつの時代でも役立つというお手本のような本である。 ぜひ手にとって、力をつけてほしい。

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2015年8月3日月曜日

UIを制するものはスマホアプリを制す - 書評 - 『モバイルデザインパターン 第2版――ユーザーインタフェースのためのパターン集』

  • 公開日:2015年08月03日
  • 最終更新日:2015年08月04日

スマートフォンデザインについて


スマートフォンの急速な普及は、IT業界の勢力を大きく変えました。
収益をガラケーに依存していた企業は淘汰され、スマートフォンに対応できた企業が生き残り利益を伸ばしてきました。

しかし、スマホのユーザーインタフェースは未だに試行錯誤の連続です。乱発されているスマホアプリを見る限り、googleやappleがWEB上に用意したユーザーインターフェースのガイドラインを読んでいる開発者は10%に満たないのではないでしょうか。

「守破離」という言葉があります。千利休が茶道を通して体得した理論と言われています。言葉の意味は以下の通りです。

  • 「守」。型を守る(学ぶ、まねる)ところから修行が始まる。
  • 「破」。型を自分と照らし合わせて研究することにより、自分に合った、より良い型をつくる。
  • 「離」。型から離れて自分自身の型をつくりだす。

この言葉は、全ての事柄の技術の取得に当てはまります。
もちろん、ユーザーインタフェースの設計にも当てはまります。
本書では、「守破離」でいう「守」の部分について詳細に学ぶことができます。

本書で学習可能なユーザーインタフェース


  • ナビゲーション
  • フォーム
  • テーブル
  • 検索、並び替え、フィルタリング
  • ツール
  • チャート
  • ソーシャル
  • フィードバックとアフォーダンス
  • ヘルプ
  • アンチパターン

どの項目を読んでも、ユーザーインタフェースに関する高い知見が得られるでしょう。

例えば、ナビゲーションの項目では、ユーザーがアプリに用意されている機能を発見し、活用出来る画面ナビゲーションを学習することができます。

フォームの項目は、モバイルフォームのユーザーインタフェースを設計するなら絶対に読んでください。わけのわからないモバイルフォームを要求されるアプリが多すぎます。

まとめ


私はWEBアプリとスマホネイティブアプリの開発を生業としています。
出来上がったデザインの案を見て、暗澹たる気分になったことは一度や二度ではありません。

デザインの良し悪しはセンスで決まるのではありません。知識がベースになります。
「デザインセンス」がないからという言葉をよく聞きますが、デザインセンスも他の学問や技術と同様に、膨大な学習と経験を通して磨かれていきます。デザインセンスがないのは、普段から物のデザインに注意を払っていないのが原因です。

デザインとは機能であり技術です。
スマホのユーザーインタフェースに限らず、あなたが普段身につけている洋服でも同じです。
自分にとって着やすい服と着にくい服の差を考えてみましょう。おしゃれだなと思う人の服装と自分の服装を比較してみましょう。そうすることで、あなたのデザインセンスは少しづつ向上していくはずです。

本書には多くのアプリのデザインがこと細やかに記載されています。それらのアプリの長所と短所を学んでください。本書で得られた知識は、あなたがスマートフォンアプリを作る際に、大きな力となってくれるはずです。

他のプログラマーズバイブルに関する記事 他の読書に関する記事

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2013年4月14日日曜日

Effective Javascript

Effective Javascript を購入しました。



Effectiveシリーズはjavaしか読んだことがありませんが、よくまとまった本だと思います。

 しかし、時代は変わりましたね。私にとってJavascript は、最も信頼してはいけない言語のひとつと教えられた言語でした。javascript を極力使わないことが良い書き方、設計でありました。
 しかし、今やJavascriptはイケテる言語であり、利用しなければwebサイトは構築できません。これからますます重要性は増していくでしょう。
 とはいえ世に反乱しているjavaScriptのコードはひどいものです。がっつりとjavaScriptを書くのならきちんとした作法を学ぶべきです。いつも言うように基礎は重要です。そして自分の書いたコードはjshintでチェックしてほしいです。
 そしてその時、この本は良いjavaScriptコードを書くのに大いに役立つと思います。

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2012年1月29日日曜日

iphoneアプリ設計の極意

今日は久しぶりにお薦めの開発本を紹介します。

これはスマートフォンアプリの設計や開発をするなら絶対に読んでおきたい本です。
私もアプリの設計で迷った時は、この本に目を通すようにしています。 私の本は、付箋とアンダーラインだらけです。
スマートフォンアプリで最も大切なのが、操作性とUIデザインです。そしてなにより標準性です。
この本を読めば、あなたは良いスマートフォンアプリのデザインを学ぶことが出来るでしょう。 android,iphone,windows phoneの開発者、全員に読んでもらいたい本です。

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2010年11月3日水曜日

「すべては戦略からはじまる」の感想

 なぜ、この本がプログラマーズバイブルのラベル設定になっているかというと、戦略的な思考をプログラマにも多少はもって欲しいからです。
 優秀なプログラマなら分かっていると思いますが、技術とお金を稼ぐ能力は別です。優秀なプログラマと優秀でないプログラマの生産性は100倍にも及ぶことがあります。
 しかし、どんなに優秀なプログラマでも、お金を稼ぐ能力は他から学ばないといけません。
 プログラマという職業の地位を向上させ、職業プログラマが幸せになるためには、多くのプログラマがマネタイズする力を身につけ、社会の中で地位を掴み取っていかなければいけないのです。


 
 この本は会社経営の戦略本です。事業がうまくいっていない架空のゲーム会社を題材に、会社を立て直すための戦略を小説形式で説明していきます。いわゆるMBA式の経営戦略本なのですが、ストーリーのある小説なので読み易いです。ゲームソフトウェア事業がテーマなので、プログラマにはお薦めです。
 また、途中途中で問題演習が入るので、読んだだけで満足して終了ということにはならない点が優れています。最低限必要な知識を強制的にアウトプットさせる仕組みになっています。
 ストーリーは完全に最近はやりの「萌え」路線。「もし高校野球の女子マネージャーがドラッカーの『マネジメント』を読んだら」のようなイラストだったらもっと売れると思います。前者の例に漏れず内容とストーリーは薄いですが、内容は悪くないです。事業計画の入門本としては、十分な内容だと思います。
 しかし、主人公が篠原涼子風の美人キャリアウーマンというのは失敗です。中途半端すぎます。どうせなら、MBA戦略の天才女子中学生、しかもめがねっ娘とかにしないといけません。これは編集さんの責任です。この世界のマーケットをまったく分かっていませんね。
 また、この本を読んだ後には、自分の会社の経営戦略をシュミレーションしてみるといいと思います。自分が今後習得するべき技術や、進む方向性の助けにもなると思います。

 私はコンサルタントみたいな連中はあまり好きではありません。しかし、バリバリの技術者こそ、こういった本を読むべきだと思います。技術者はもっと自分の技術を有効に使い、イノベーションを巻き起こし、社会を変えていくべきなのです。
 プログラマにはそれができるのです。
 

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2010年10月23日土曜日

基礎を制するものは世界を制す - 書評 - 『プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識』

  • 公開日:2010年10月23日
  • 最終更新日:2015年08月02日

はじめに


現在は技術の進歩が、とてつもなく早い世の中です。最新のプロダクトが、一年で開発停止になるのもめずらしくありません。
だからこそ我々エンジニアは、基礎をきっちりと身につけておかないといけません。幹となる知識をしっかりと理解しておくことで、最新の技術の良し悪しを理解し、キャッチアップの速度をあげることができます。

本書の特徴


本書は時代の流行り廃れに左右されない基本を身につけられる本です。
家の建設でいうと基礎の部分です。基礎の部分がダメだと、どんなに素晴らしい外装や内装を施しても、ちょっとしたことで全てが崩壊してしまいます。大きな家であればあるほど、基礎が重要となります。

技術も同じことが言えます。知識を積み重ねれば積み重ねるほど、基礎の部分もしっかりと強くしていかないといけません。基礎が貧弱だと、新しい技術を身につけるのも時間がかかりますし、理解も表面にとどまってしまいます。

何事も基礎の反復が重要。どの道の一流の人達もよくいっていることです。でも、凡人は飽きてしまします。でも、それでいいと思います。思い出した時、何度も何度も読み返すことが重要です。そうして知識の幹はどんどんと太くなっていきます。

だから、私も完全に理解するまで繰り返し反復したいと思います。そして、その知識は、いつかきっと自らの底力となって役に立ってくれるはずです。

2015/08/02追記

5年ぶりに本書を読み返しました。そして、確信しました。本書は、

間違いなくプログラマーズバイブルである

ということです。

日々に忙殺されると学習時間がなかなか取れません。一度読んだ本を再び開くことは、めったにないのが現実です。
ただ、この本は何度も読み返す価値があります。ふと時間ができた時、読み返すことで、以前よりも自分のエンジニアとしての力が向上していることを確認できます。

もしあなたがエンジニアの世界で生きていくつもりなら、本書は本棚、もしくはkindleの中に保管しておきましょう。

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加
Related Posts Plugin for WordPress, Blogger...