2015年10月25日日曜日

それでもグローバル化は止まらない『英語化は愚民化 日本の国力が地に落ちる』感想

はじめに


『英語化は愚民化 日本の国力が地に落ちる』という本が話題になっていたので読みました。

この本は、日本で広まってきている英語公用化に警鐘を鳴らした本です。
筆者は日本に英語公用化は必要ないという意見を、説得ある材料を集めて説明していて、非常に納得のできる内容でした。
現在の英語重視の国や企業の方針に疑問を抱いている方は、手にとって読んでみてください。

しかし、この本に記述されている内容は確かに正論なのですが、実際にはグローバル化は止まらないし止められません。
豊かになろうと努力する人々や国々を止めることはできないし、インターネットの発達によって英語力の有無で教育の質まで変化してしまうのが厳しいけれど現実の姿です。そして、これからますます顕在化してくるのも確実です。MOOCs等が一向に定着しないのも、英語力の低さが一因にあると思います。

では、ここまで国が躍起になって英語力の向上を図っているのに、日本人の英語力が一向に伸びない理由はどうしてなのでしょうか。
いい機会なので、少し考えてみたいと思います。

英語学習者の分類


これまで英語を学習してきて、周りで英語の学習をしている人を見ると、以下のようにざっくりと分類できます。

  • 英語を話せるとかっこいいから
  • 英語(語学)が好きだから
  • 仕事で必要だから
  • これからの時代に英語は必須だから

個人的な感覚として、八割くらいの人が

  • 英語を話せるとかっこいいから
  • これからの時代に英語は必須だから

という理由で英語を勉強しているように思います。
こんな理由で英語の学習を続けられる人は、ごく一部の変わり者だと思います。

つまり

日本人にとって英語は必要ない

から日本人の英語力は伸びないのです。
実際に使う機会がなければ、英語の学習なんて苦行を進んでするわけありませんよね。

英語学習はコストが高すぎる


正直、私も英語はあまり好きではありません。
もちろん、私は仕事柄、英語の情報に触れずに仕事をしろといわれても絶対に無理なので、日々英語の学習はするようにしています。

しかし、それでも思うのは、

日本人にとって英語学習はコストが高すぎる

ということです。
学習すればするほど、より強く思います。

言語としての構成があまりに違いすぎます。
日本人の英語力は低すぎると世界中から指摘されていますが、どれだけ責められても罵られても

今後も普通の日本人の英語力は伸びない

と思います。

英語力が伸びるのは、

  • 英語(学習)が好きな人
  • 仕事で必要。かつ、英語の学習コストを払ってでもその仕事をしたい(する)人

に限られてくるでしょう。
それが自然だし、当たり前です。

英語力の格差は開く


本書でも記述されているように、近年、国をあげての英語力向上の取り組みが目立ちます。
しかし、それでも大多数の日本人の英語力は伸びないと思います。
むしろ低下するとさえ思います。

というのは、日本人にとって英語はますます必要ないツールになると思うからです。
なぜなら、今後の日本では、社会の階層化が進むと予想されます。
そうすると、英語が不要な人はずっと英語が不要な環境で生活し、英語が必要な人はずっと英語が必要な環境で生活していくことになります。

自分にとって必要ないものに時間を費やすほど、今の世の中は暇ではありません。
ほとんどの人は、英語が不要な環境で生活するはずなので、英語力は平均すると落ちるでしょう。

本書で筆者は「言語はツールではない」といっていますが、ほとんどの人にとって言語はツールです。
それが事実です。
日本語であれ、英語であれ、なにかしらのメリットがあるから言語を身に付けるのです。

日本を愛しているから日本語を身につけたのではありません。日本を愛していても、中国で生まれたら中国語が身につくのが当たり前です。

まとめ


日本人に英語は必要ないのに、英語化するという国策は愚策の極みです。
とはいえ日本だけグローバル化に抵抗しても無駄です。世界の本流なので、乗っかっていくしか道はありません。

なので、我々にできることは、しっかりと日本語を守りつつ、そして英語も学習するということです。
確かに英語学習のコストは高いです。しかし、英語化やグローバル化は嫌だけど、日本は豊かなままでありたいという我侭は通用しません。

我々一人ひとりが高い英語力をもち、日本語の中にそのノウハウを共有することが、日本がグローバル化に対応する道なのだと思います。


他の読書に関する記事

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

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

2015年10月16日金曜日

Android開発 Floating action buttonを使ってみた

  • 公開日:2015年10月16日

記事概要


androidの開発でFloating action buttonを実装しました。
この記事では、Floating action buttonの実装方法と使い方を記載しています。

環境


  • OS X Yosemite
  • Android Studio 1.4.0
  • android sdk 23(Android 6.0 Marshmallow(マシュマロ))

Floating action buttonとは


Material desginで取り入れられたボタンです。
画面の端に表示して、よく使うアクションの操作に使用されます。

他のアプリの参考になるFloating action buttonの使い方


色々なアプリを確認してみましたが、google mapの利用方法が一番良いと思いました。

実装


gradle

com.android.support:designライブラリを利用できるように設定します。


dependencies {
    compile 'com.android.support:design:23.0.0'
}

layout.xml

画面のlayoutを記載します


        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_margin="@dimen/fab_margin"
            android:src="@android:drawable/ic_dialog_email" />

dimen.xml

マージンのサイズを指定します。直接layoutのxmlに書かないでdimen.xmlを使いましょう。


<resources>
    <dimen name="fab_margin">16dp</dimen>
</resources>

javaの実装

通常のボタンと同じ実装方法です。


    private FloatingActionButton mFab;

    mFab = (FloatingActionButton) findViewById(R.id.fab);
    this.mFab.setOnClickListener(this);

    @Override
    public void onClick(View v) {
        // something
    }

ビルドして画面を確認します。

表示されました。

まとめ


FloatingActionButtonは見栄えも使い勝手も良いボタンです。
しかし、使いどころに悩むボタンでもあります。
Google純正のアプリだと、FloatingActionButtonがうまく使われているので参考になると思います。

以上

Androidアプリ開発にオススメの本


開発にあると便利なオススメ製品


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

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

2015年10月10日土曜日

Android開発 SDK tools version ((23)) is too old to check APIs

  • 公開日:2015年10月10日

記事概要


Android Studioを1.3から1.4にバージョンアップした時に、「SDK tools version is too old to check APIs」のエラーが発生しました。
その対応方法の記事です。

環境


  • Android Studio 1.4.0
  • OS X Yosemite

SDK tools version is too old to check APIsの発生


2015/09/30日にAndroid Studio 1.4.0が正式にリリースされました。
ということで早速アップデートしたところ以下の様なエラーが発生しました。

SDK tools version ((23)) is too old to check APIs ...

SDK toolsのエラーが古いことによるエラーの発生です。
package以下に赤い下線が表示されていますが、アプリのビルドに問題はありません。
とはいえ、放置しておくのは気持ちが悪いので以下の手順で修正しました。

  • SDK Managerを開く
  • DK Toolsタブを選択
  • Android SDK Platform-Tools 23.0.1をチェックしてアップデート
  • OKボタンを押下

インストールが終了すると、先ほど出ていたエラーが消えます。

まとめ


androidアプリの定期的なアップデートの他に、開発環境のアップデートもきっちり行っていきましょう。
最初はしんどく感じると思いますが、慣れです。
こういった直接開発に繋がらないことは遠回りに思うこともあるかと思いますが、結局は定期的なアップデートを続けることが良いアプリを作ることにも繋がります。

以上

Androidアプリ開発にオススメの本


開発にあると便利なオススメ製品


参考サイト

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

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

2015年10月8日木曜日

Vagrant has detected that you have a version of VirtualBox installed that is not supported. vagrantをバージョンアップ

  • 公開日:2015年10月08日

記事概要


Docker Toolboxをインストールした後にvagrantを起動したら「Vagrant has detected that you have a version of VirtualBox installed that is not supported. 」というエラーが発生しました。どうやら、Docker Toolboxをインストールすると、VirtualBox自動的にアップデートされてしまうようです。
この記事は、起動しなくなったVagrantを再び動かすための対策方法を記載した記事です。

環境


  • vagrant1.6.3→1.7.4

vagrant upエラー


vagrant upコマンドを実行すると、以下のエラーが発生しました。


The provider 'virtualbox' that was requested to back the machine
'default' is reporting that it isn't usable on this system. The
reason is shown below:

Vagrant has detected that you have a version of VirtualBox installed
that is not supported. Please install one of the supported versions
listed below to use Vagrant:

4.0, 4.1, 4.2, 4.3

原因は、Docker Toolboxのインストールです。
Docker Toolboxのインストールにより、自動的にVirtualBoxがアップデートされてしまったようです。
VirtualBoxのバージョンを確認します。


VBoxManage -v
5.0.4r102546

4系を利用していたのが5系になっています。
これが原因で古いvagrantが動かなくなったようです。
現在のvagrantのバージョンを確認します。


vagrant -v
Vagrant 1.6.3

現在(2015/10/05)はversion 1.7.4が最新なので入れ替えます。
公式サイトに遷移します。
vagrantをダウンロードして再インストールします。

インストール後は、マシンを再起動してバージョンを確認します。


vagrant -v
Vagrant 1.7.4

1.7.4になったのでvagrantが起動しなくなってしまったプロジェクトに移動してvagrant upを実行します。


cd {project-folder}
vagrant up

default: flag to force provisioning. Provisioners marked to run always will still run.

動作しました。これで完了です。

まとめ


そろそろvagrantをサブにして、本格的にdockerに移行していかないといけないなと思いました。

いつも言っていますが、技術的負債は溜めないようにしましょう。
やばいと感じたら、すぐに新しい技術を取り入れましょう。
技術的負債の解消は、当初想像するよりずっと時間がかかるのが普通です。

以上です。

追伸


railsで利用する技術を

Innovation on Rails

というブログサイトにも記事を投稿していくことにしました。

このダメ男のブログでも同じ記事は公開していきますが、rails関連の技術(ruby,rails,vagrant,docker)はInnovation on Railsにも同様に投稿していきます。

このサイトよりも、ぐっと記事が探しやすくなると思うので、是非ご利用ください。

Rails4の開発にオススメの本


イノベーションを感じるのにオススメの本


運営サイト(railsで作成しています)


参考サイト

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

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

2015年10月4日日曜日

Android開発 update Espresso on Android 6.0 Marshmallow (android sdk 23)

  • 公開日:2015年10月04日

記事概要


AndroidのテストフレームワークEspressoをAndroid 6.0 Marshmallow (android sdk 23)に対応させた記事です。

環境


  • Android Studio 1.3.0
  • OS X Yosemite
  • android sdk 23(Android 6.0 Marshmallow(マシュマロ))
  • Espresso1.1 → Espresso2.2.1

はじめに


Android 6.0 Marshmallow (android sdk 23)がリリースされました。
私の開発しているアプリで古いEspressoを利用しているアプリがあったので、この機会にupdateしました。

Espressoの更新


まずはgradleの設定から変更します。

以前

androidTestCompile files('libs/espresso-1.1-bundled.jar')

改修後

androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test:runner:0.4.1'

続けてtestInstrumentationRunnerも変更します。

以前

testInstrumentationRunner 'com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner'

改修後

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

android studioの設定も同じように変更しておきましょう。

gradleでテスト実行


では、gradleでテストを実行します
android端末をgradleを実行するPCにUSBで接続します。


cd {プロジェクトフォルダ}
// テスト実行
./gradlew connectedAndroidTest

Test配下に記述したテストコードが実行されます。
エラーが出た場合はコードを書き換えます。私の場合は、以下の様な対応をしました。


import com.google.android.apps.common.testing.ui.espresso.Espresso;

↓

削除

ui系のテストは利用していませんが、どこかに残っていたみたいです。気を取りなおして、テストを再実行。


cd {プロジェクトフォルダ}
// テスト実行
./gradlew connectedAndroidTest

うまく実行できれば、テスト結果は{プロジェクトフォルダ}build/outputs/reports/androidTests/connected/index.htmlに出力されています。

うまくいきました。
様々なアノテーションも利用可能になっているので、今後リファクタリングしていこうと思います。

まとめ


現在androidのテストツールには、

  • Espresso
  • AndroidJUnitRunner
  • JUnit4 Rules
  • EUI Automator

が用意されています。

個人的にはEspressoがオススメだと思いますが、みなさんはどうでしょうか。

技術的な負債はまめに返してきましょう。放置し過ぎると、変更不可能となります。
もちろんそれはアプリのコードだけでなく、テストコードにも当てはまります。

以上

Androidアプリ開発にオススメの本


開発にあると便利なオススメ製品


関連記事 参考サイト

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

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

2015年10月3日土曜日

Android開発 getColor(int id) deprecated on Android 6.0 Marshmallow (android sdk 23)

  • 公開日:2015年10月03日
  • 最終更新日:2016年01月29日

記事概要

Androidのsdk 23でgetColorが非推奨になったので、その対策方法の記載です。

環境

  • Android Studio 1.3.0
  • OS X Yosemite
  • android sdk 23(Android 6.0 Marshmallow(マシュマロ))

はじめに

毎年秋は、好例のandroidアップデートの時期です。新しいsdkのバージョン対応をしていくのにも随分と慣れてきました。
最初の頃はandroidの進化の速度についていくのはしんどかったのですが、今は当たり前になってしまいました。
人間慣れるものです。
というわけで今回は、非推奨になったgetColorメソッドの変更方法です。

getColor

sdk22までは、コード内でTextViewの文字色を変更する場合は以下のように記載していました。

java code

            switch (calendar.get(Calendar.DAY_OF_WEEK)) {
                case Calendar.SUNDAY:
                    viewHolder.getTimeLabel().setTextColor(mContext.getResources().getColor(R.color.red));
                    break;
                case Calendar.SATURDAY:
                    viewHolder.getTimeLabel().setTextColor(mContext.getResources().getColor(R.color.blue));
                    break;
                default:
                    viewHolder.getTimeLabel().setTextColor(mContext.getResources().getColor(R.color.black));
            }

上記は、カレンダーの土曜と日曜でテキストの色を変更しているコードです。
mContext.getResources().getColor(R.color.black)を呼び出して、TextViewの文字色を変更しています。

しかし、sdk23からはgetColorメソッドが非推奨になり、この部分はdeprecatedで表示されてしまいます。

ContextCompat.getColor

sdk23からはgetColorが非推奨になり、ContextCompat.getColorを使うようになりました。修正は以下のようにします。

java code

            switch (calendar.get(Calendar.DAY_OF_WEEK)) {
                case Calendar.SUNDAY:
                    viewHolder.getTimeLabel().setTextColor(ContextCompat.getColor(mContext, R.color.red));
                    break;
                case Calendar.SATURDAY:
                    viewHolder.getTimeLabel().setTextColor(ContextCompat.getColor(mContext, R.color.blue));
                    break;
                default:
                    viewHolder.getTimeLabel().setTextColor(ContextCompat.getColor(mContext, R.color.black));
            }

上記を記載することで、deprecatedの警告が消えます。
ContextCompat.getColorメソッドの実際のコードの中身は以下のように実装されています。

java code

public static final int getColor(Context context, int id) {
    final int version = Build.VERSION.SDK_INT;
    if (version >= 23) {
        return ContextCompatApi23.getColor(context, id);
    } else {
        return context.getResources().getColor(id);
    }
}

どうして振る舞いを変えたのかはわかりませんが、これからはContextCompat.getColorを使ったほうが良さそうです。

まとめ

Android 6.0 Marshmallow (android sdk 23)からは
getColorではなくContextCompat.getColor
を使いましょう。

技術的負債の返却はお早めに。

以上です

PICK UP オススメ開発用製品

参考サイト

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

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

2015年10月1日木曜日

Androidアプリ開発 Google playを最新バージョンに更新する

  • 公開日:2015年10月01日

記事概要


Androidのアプリ開発でgoogle play serviceを利用している場合の定期更新方法の記事です。

環境


  • Android Studio 1.3.0
  • Android SDK 23
  • play-services:7.8.0→play-services:8.1.0
  • OS X Yosemite

はじめに


2015年の9月にGoogle Play services 8.1(revision 27)がリリースされました。
なので、以前のGoogle Play services 7.8(revision 26)から更新します。

Google Play services 8.1(revision 27)の変更点


リリースノートを確認すると、今回は色々と変更されています。
位置情報の取得にのみ利用しているだけの場合は、ソースコードの改修は必要ありません。
なので、私が作成しているアプリ達は、更新手順だけで問題ありませんでした。
以下が手順になります。



dependencies {
    compile 'com.google.android.gms:play-services:7.8.0'
}


上記を下記のように変更します。



dependencies {
    compile 'com.google.android.gms:play-services:8.1.0'
}

7.8.0から8.1.0に変更してビルドします。
なにもエラーが発生しなければ、動作確認をしてgoogle playのアプリを更新しましょう。

以上

PS: app invitesという機能が面白そうです。アプリに利用したい機能なので、実装してみようと思います。

Androidアプリ開発にオススメの本


関連記事 参考サイト

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

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