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

無趣味な人

生まれてこの方、無趣味。ハマったものこれといって特になし。

ViewPagerIndicatorからPagerSlidingTabStripに変更した

Android アプリ開発 プログラム

ViewPagerIndicatorを使ったアプリをPagerSlidingTabStripに変更した。 メモ的に必要だった変更をまとめた。簡単だった。

1. build.gradleのdependenciesに以下を追加する。

compile ‘com.astuetz:pagerslidingtabstrip:1.0.1’

2. PagerSlidingTabStrip widgetをレイアウトに追加する

<com.astuetz.PagerSlidingTabStrip
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="48dip" />

これをViewPagerの上に追加した。 ViewPagerは今までViewPagerIndicatorの下に配置するようになっていたので、

android:layout_below="@+id/tabs"

と変更して、PagerSlidingTabStripの下に配置するように変更した。

ViewPagerIndicatorは android:visibility=“gone” として、一時的に非表示にした。PagerSlidingTabStripの動作確認後に完全に削除する。

3.onCreateでバインドする

サンプルなどでは以下のように書いてある。

// Initialize the ViewPager and set an adapter
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(new TestAdapter(getSupportFragmentManager()));

// Bind the tabs to the ViewPager
PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
tabs.setViewPager(pager);

pager.setAdapter(new TestAdapter(getSupportFragmentManager())); の部分がよく分からない。

私はViewPagerIndicatorで使っていた、アダプターをそのまま使いたいので、以下のような感じになる。

mViewPagerAdapter = new ViewPagerAdapter(this);
mViewPager = (ViewPager) findViewById(R.id.viewpager);
mViewPager.setAdapter(mViewPagerAdapter);

// Bind the tabs to the ViewPager
PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
tabs.setViewPager(mViewPager);

4. ViewPagerAdapterの変更

ViewPagerIndicatorを使っていたので、ViewPagerAdapterは以下のような感じ。このまま使うが、メソッドを追加したり変更する必要がある。

public class ViewPagerAdapter extends PagerAdapter implements TitleProvider
1.getPageTitleを追加する

タブタイトルを返すメソッドを追加する。 ViewPagerIndicatorではgetTitleを使っていたが、PagerSlidingTabStripではgetPageTitleとなる。

public CharSequence getPageTitle(int position)

という、タブのタイトルをCharSequenceで返すメソッドを追加する。 getTitleをコピーして変更すればいい。

2. もしinstantiateItemがdepregatedだったら

以下のようにViewをViewGroupに変更する

変更前

public Object instantiateItem(View pager, final int position) {

変更後

public Object instantiateItem(ViewGroup pager, final int position) {

以上、あとはViewPagerIndicatorの使用箇所を削除していけばいいだけだった。 最初にViewPagerIndicatorを使った時は苦労した記憶があるので難しいのかと思ったが、拍子抜けするぐらい簡単だった。

f:id:itereta:20170404125455p:plain

EclipseのプロジェクトをAndroid Studioへインポート時に出たエラー対処方法

Android アプリ開発 プログラム

f:id:itereta:20170403153809j:plain

重い腰を上げて、EclipseのプロジェクトをAndroid Stuidoへインポートした。 インポート自体はAndroid StudioからImport Projectをすれば良いのだが、エラーがいっぱい出てた。私が必要だった変更をまとめる。

1. minSdkVersionの設定

以下のエラーメッセージが出てきた。

Manifest merger failed : uses-sdk:minSdkVersion 10 cannot be smaller than version 14 declared in library [com.google.android.gms:play-services:10.2.1]

2017/04/03現在、ほとんどがversion 14以上だと思うので、プロジェクト内の全部のminSdkVersionを14にした。

2. compileSdkVersionの変更

以下のようなエラーが出た。

Error retrieving parent for item: No resource found that matches the given name ‘android:Widget.Material.Spinner.Underlined’.

compileSdkVersionをbuildToolsVersionと合わせないとダメなようだ。

buildToolsVersion “25.0.2”

だったので

compileSdkVersion 19

から

compileSdkVersion 25

に変更した。 すべてのbuild.gradleで変更した。

3. FloatMath

エラー: シンボルを見つけられません シンボル: メソッド sin(float) 場所: クラス FloatMath

ってのが出たから すべてのFloatMathをMathに変更した。

4. org.apache.http.legacy

パッケージorg.apache.httpは存在しません

とかのエラーが出てしまう。

build.gradleにuseLibrary ‘org.apache.http.legacy’ を追加すれば解決した。

以下のような感じ

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    useLibrary 'org.apache.http.legacy'

5. This support library should not use a different version

compile ‘com.android.support:support-v4:19.1.0’

で、This support library should not use a different versionというエラーメッセージが出ている。 19を25に変更すれば、エラーは消える。ついでに最新にしておく。

compile ‘com.android.support:support-v4:25.3.1’

6. All com.android.support libraries must use the exact same version

compile ‘com.android.support:support-v4:25.3.1’

にて

All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 25.1.1, 24.0.0. Examples include com.android.support:animated-vector-drawable:25.1.1 and com.android.support:mediarouter-v7:24.0.0

とかいうエラーメッセージが出た。

compile ‘com.google.android.gms:play-services:+’

が原因のようで、 必要なものだけ追加するようにする。

例。

compile ‘com.google.android.gms:play-services-ads:10.2.1’

7. 不要なパーミッション

Android Studioでは自動でパーミッションがついてしまう。 不要なパーミッションがついて、プライバシーポリシーを追加しなくてはならなくなったりする。 ので、極力減らす。

原因1

Google Play Serviceが原因で追加されてしまう。 以下のように全て追加するのはやめる。

compile ‘com.google.android.gms:play-services:+’

以下のように必要なものだけ追加するように変更する。

compile ‘com.google.android.gms:play-services-ads:10.2.1’

原因2

インポートしている外部ライブラリで、minSdkVersionを明記しないと不要なパーミッションがついてしまう。

build/intermediates/manifets/full/の中にあるマージ後のAndroidManifestを確認すると 以下の2行が追加されてしまっていた。

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

最初はGoogle Play Serviceのせいかと思ったが、外部ライブラリのせいだった。 外部ライブラリでminSdkVersionを設定すれば解決した。 外部ライブラリのbuild.gradleにて

    defaultConfig {
        minSdkVersion 14
    }

その他、状況によってはtargetSdkVersionを指定する必要もあるようだ。

以上

JILLA - 日本イラストレーション協会に加入できる職業名一覧

Web収入 個人事業主の確定申告

f:id:itereta:20170215175944j:plain

日本イラストレーション協会に加入に加入できれば、文芸美術国民健康保険組合への加入資格を得ることが出来ます。 国民健康保険から文芸美術国保に変更すれば、保険料を大幅に節約出来きます。

ざっくりですが、国民健康保険料を20万円以上支払っている人は文芸美術国保のほうが安く済むようです。 実際にどのぐらい節約出来るかは、公式サイトにある保険料の比較で確認するといいと思います。

誰でも日本イラストレーション協会に加入できる訳ではないですが、アフィリエイターのようにホームページの作成で収入を得ている人は、ほぼ加入できます。 JILLA の方で加入できる職業名一覧を明確にしています。 以下に列記します。

イラストレーター系

  • イラストレーター
  • イラストレーション制作(業)
  • 絵本作家
  • 画家
  • 美術家
  • 建築パース(制作)
  • 3DCG(制作)
  • キャラクターデザイン

デザイナー系

  • グラフィックデザイナー
  • グラフィックデザイン
  • デザイナー
  • デザイン(業)

WEB関連事業者系

  • WEBデザイナー
  • WEBデザイン
  • HPデザイン

漫画家系

  • 漫画家
  • 漫画制作(業)
  • 漫画執筆(業)

広告関連系

  • 広告制作(業)
  • 広告デザイン(業)

その他

  • 編集(業)
  • 編集者
  • アニメーター
  • フォトレタッチャー
  • アートディレクター

加入希望の人は、「個人事業の開業等届出書」の職業種目とか確定申告の時の職業欄に上の一覧にある職業名にしておいたほうが、加入がスムーズになります。

少しでも赤ちゃんのIQを少しでも上げる方法

妊娠・出産・育児 暮らし・学び

f:id:itereta:20161013101920j:plain

子供の知能面での成長で一番大切な事は教育なのだろう。 しかし、生まれたばっかりの赤ちゃんに教育は無理だ。 教育以外の環境面で、IQへ僅かではあるが影響を与えることがある。 少しでも赤ちゃんのIQが上がるように、環境とIQとの関係について調べてみた。

母乳で育った子供は、少なくとも15歳まではややIQが高い傾向があるようです。

出典:書籍「妊娠中の運動ハンドブック

これは色々なところで書かれている。本の中では、DHAが母乳に含まれていることや授乳による母子交流が理由としてあげられるのではないかと推測している。 人工乳であっても、DHA入りを選択したりミルクの飲ませ方を工夫することで同じ効果を期待することができそうだ。 他の調査結果では、「出産後に魚油サプリメントを飲ませた試験により、生まれてからDHAなどを飲ませてもIQを高くする効果は期待できない」という結論が出ている。 なぜ母乳にDHAが含まれる場合は効果があり、魚油サプリメントでは効果がないのか疑問だ。

母乳育児を1年間続けた子どものIQは、そうでない子どものIQを約4ポイント上回った

出典:母乳育児でIQが上がるとの論文、信ぴょう性は?

こちらの調査結果では具体的なIQポイントが書いてある。 4ポイントだとクラスの中くらいの人が、クラスの中の上ぐらいになるかも。 母乳そのものが理由なのかどうかはまだわかっていない。 さらに、「生後半年間母乳のみを飲んで育ち、それ以降は補完食(母乳を補う飲食物)を取り入れながら母乳を飲み続ける、という、WHOで推奨される『理想的な母乳育児』を行った場合はもっと結果がよくなる」ということだ。

8歳時のIQテストを見ると、母乳、ミルクにかかわらず、時間を決めずに授乳した子のIQは約5ポイント高かった

出典:Babies fed on demand do better at school... but it's not so good for exhausted and grumpy mothers 出典:パパママ必見! 時間を決めず欲しがった時に授乳した方が子どもの頭は良くなるという研究結果

3時間おきなど時間を決めて授乳していた場合に比べて、赤ちゃんがほしがった時に欲しがっただけ授乳した場合の方がIQは約5ポイント高かったということ。 さらに14歳でも、SATsという学力テストで好成績だったということである。 これもクラスの中くらいの人が、クラスの中の上ぐらいだろうか。 だたし、「時間を決めて授乳していた母親は、若い、シングルマザー、公営住宅住み、かつ学歴も低い傾向」があり、母集団が違うのでどこまで授乳の影響なのかはわからない。

授乳期間が長くなるほどいずれの年齢においても児の知能アウトカムが向上する傾向が示唆されたが,母乳に限定した場合でより顕著であったという

出典:母乳による授乳期間が長いほど児の知能が向上

母乳での授乳期間が長ければ長いほどIQスコアが高くなるという調査結果だ。 ただし、これでは12カ月までの調査になっており、それ以上長くなった場合どうなのかは分からなかった。 さらに6ヶ月までの調査になるが、母乳限定で育てた期間が長い方がスコアが高かった。 12ヶ月以降の断乳や6ヶ月以降までの母乳限定についてはこの研究結果では分からない。

幼少期に加工食品や脂肪分および糖質の多い食事を取っていた児童と,サラダや米,魚や果物など栄養バランスの取れた食事を取っていた児童とでは,8歳半時点でのIQに差があった

出典:幼少期の食生活が8歳半時のIQを左右する? 出典:Danger of a junk food diet for children: Study reveals toddlers who eat more chips, crisps, biscuits and pizza have lower IQ

高脂肪・高糖質中心の「加工食品生活」よりも肉・野菜中心の「伝統的食生活」。 肉・野菜中心の「伝統的食生活」よりもサラダ・米・パスタ・野菜・果物を均等に取る「健康的食生活」。 面白いのが4~7歳時での食生活が、8歳半時のIQに与える影響はなかったことだ。 あくまで3歳時の食事が、8歳半時のIQに影響を与えている。

生後6カ月から24カ月にかけての食生活が8歳になったときのIQに、「小さいけれど重要な」影響を与える

出典「子供にジャンクフードを食べさせちゃダメ」は本当だった! 幼い頃からジャンクフードを食べているとIQが低下することが判明 出典:Giving your child junk food can lower their IQ, claim scientists

こちらでも上の調査結果とほぼ同じことを書いている。ポイント数ではわずかだが、生涯に渡る影響があるとのこと。

「インスタントのベビーフード」も、子供たちのIQにマイナスの影響を与えるということがこの研究により判明

これが日本の市販の離乳食がこれに当たるのかはわからない。また、原文の方を読むと、

6ヶ月の子にはインスタントフードは悪い影響があったが、24ヶ月の子にはいい影響があった。

ということである。便利なのでうまく使いたい。

体罰で子供が攻撃的になるだけではなくて、その後の人生で、うつ病、不安とドラッグや飲酒を含むメンタル・ヘルス問題に結びつき、IQテスト成績と物質濫用の可能性に関与する脳部分を変化させ、感情とストレス規則を含む脳エリアにすごく影響する可能性があるという

出典:子供に体罰を加えると、その後子供が反社会的になる 出典:Do You Spank Your Kids?

体罰というと大げさだが、子供を躾けるのに平手で叩くことが悪影響があるらしい。 Distraction(気をそらすこと)やRedirection(リダイレクト。ブロックを投げる場合、ボールに持ち替えさせる)などの方法が体罰に変わり有効だとのこと。

第一子は弟や妹よりも問題行動が少なくて、学力テストの成績もいい。第二子のIQのスコアは第一子より平均2㌽低く、第三子のスコアは第二子よりさらに低かった。

参照:書籍「0歳からの教育 2014年版 - ニューズウィーク日本語版」

兄や姉が幼くして亡くなり長男となった場合もIQテストで高得点であるため、先天的な能力差ではない。

  • 第一子という立場そのものが違いを生む。
  • 親のリソースがより多く注がれる傾向にある。
  • 幼児時代の親(大人)との会話量が相対的い多い。

などの理由が考えられている。

感想

調べた結果以上の方な方法が挙げられるが、どれも天才になるなど人生が変わるほどのIQの差がでるわけではないようだ。 食事など健康面からは気をつけるのは当たり前だが、あまり神経質になるよりは教育に力を入れたほうがよさそうだ。 IQが高いのわいいことばかりではなく、ドラッグやアルコールに依存しやすくなるとか悪い面もある。 子供の頃だけ頭がよくてもしょうがないので、努力を継続する力や集中力の方が大事なように思う。

「脳トレが効果がない」は嘘っぽい

暮らし・学び

f:id:itereta:20160130092357j:plain

一時期、脳トレというのが流行った。任天堂DSでもゲームになり、私自身も結構やった。 なにより、面白かった。面白くて脳トレにもなるならと毎日やった。 さすがに今は飽きたら辞めたが。

その後しばらくして、英BBCがスポンサーになって行った実験により「脳トレーニングは役に立たない」という結論がだされた。結構衝撃的な結果であり世界中で記事になったようだ。当然、日本でも記事になり話題になった。

ただ、この実験は科学者からすると研究方法とその解釈は批判されるもののようだ。要するにこの実験自体が信用ならないということである。「脳トレーニングは役に立たない」という記事は沢山見たが、この実験自体が信用ならないという記事はあまり見ないので、ここにまとめた。以下が、この実感が信用出来ないという理由だ。

1つ目の理由:管理者のもとでの実験ではない

被験者それぞれに家庭でトレーニングしてもらい結果報告してもらっただけということ。普通このような実験は管理者のもとで実験室で行われる。しかし、この実験では家庭でそれぞれ行われたものなので本当に正しく脳トレしていたのか、そもそも脳トレそのものをしていたのかもわからない。

2番目の理由:脱落者が多すぎる

最初の被験者は5万人だったが、最終的には1万人分の結果しか集まっていない。なぜ脱落したのかの説明もされていない。これでは結果が信用出来ない。

3番目の理由:実験時間が少なすぎる

他の研究で効果が現れるまで10時間から15時間が必要と報告されている。しかし、この実験では6週間でトータル3〜4時間しか行わず、そのデータから結果を導いている。効果が表れるのに10時間必要と言われているのに4時間しかトレーニングをせず、効果はありませんでしたと言っている。おかしいですよね。

4番目の理由:60歳以上の人のデータが削除されていた

実験段階では60歳以上の人のデータも集められていたが、最終段階では対象外になっていた。なぜ、対象外にしたのだろうか。理由は明らかにされていない。意地悪な推測をすると60歳以上で高い効果が現れたので、「脳トレは効果がない」という結論を出すために削除したのではないだろうか。

特に、時間が少なすぎるというのは致命的である。他の研究でいわれている必要とされる時間をわざとやらなかったのではないだろうか。素人考えでも3〜4時間の脳トレでそんなに効果があるはずはないだろうと。しかも、6週間もかけて3〜4時間である。少なすぎる。「脳トレーニングは役に立たない」という結果が最初にあって、それを導き出すために実験し都合のいいデータを選んで最終結果としたのではないだろうか。

上の内容についてはこの本に詳しく書かれています。

結論

脳トレは無駄じゃないようだねってことと、日本に限らずマスコミって信用ならないねってことぐらいかな。

Rubyではじめるシステムトレードが隠れた名著

プログラム

漫画家の坂本タクマさんの書いた「Rubyではじめるシステムトレード 」という本がある。 この本がかなりの名著だ。 繰り返し読んでる。 Rubyを学びたい人には是非お勧めしたい。

この本はシステムトレードの検証プログラムを作りながら、Rubyを勉強する本だ。 普通の初心者向けのプログラム本は、使い道のない「お買い物プログラム」とかで学ぶことが多い。 だが、この本で使う検証プログラムは実用的で拡張性も高い。 実際に使える。検証できる。素晴らしい。

この検証プログラムは本を購入すればダウンロードすることができる。 この検証プログラムだけで、本の定価代以上の価値はある。 というか、私にとっては数十万円以上の価値がある。 これが三千円で買えてしまう。ありがたい。

本の内容はプログラム初心者向けに丁寧に書かれている。 最初から読んでいけば、分からないところは出てこないと思う。 文章も柔らかく、ユーモアもあり読みやすい。 本格的にRubyを勉強したい人向けにRuby関連のお勧め本も巻末で紹介されている。 Rubyを始めたい人はまずはこの本を買えば良い。

欠点は表紙だ。 作者が漫画家なので、そのキャラクターの絵になっている。 これが少し安っぽく感じる。 もともと作者の漫画を読んでいた人には、訴求力があるのだろうが内容と合っていない。 表紙をもっと仰々しいものに変えて再販すればもっと売れるのではないだろうか。

この本の環境設定は、すべて無料でできるのが紹介されている。 個人的には、デバッグはステップ実行できる環境が欲しい。 Eclipseで開発環境を作れば多分無料で行けるだろう。 私は、PHPStormやAndroid Studioで慣れているのため、それらと同系統のRubyMineというのを購入した。 お金がかかるがお勧めする。 この本の検証プログラムは幾つか直さなければならない箇所がある。 Tickが変更した時の対応とか、購入した値段とストップが同じ時など。 この辺を治すためにも、デバッグ環境はちゃんとしたのが欲しい。

Amazonの評価を見ていると、システムトレード=自動売買だと思っている人がいる。 それは違ってシステムトレードとは「ルールに従って売買を行う方法」のこと。 この書籍はあくまでシステムトレードについてであって、自動売買には触れていない。 自動売買したい人はマネックスのトレードステーションを使えばいいと思う。 バックテストもできるので、Rubyを勉強する必要がない人はこれでいいと思う。

トレードステーションはこちらから→Tradestation(トレードステーション)

でも、学習させたり一晩中自動で最適値を求めたりなど、いろいろやりたくなる。 いろいろいじりたくなるので用意されたツールだと物足りない時がある。 ので、私はバックテストをこの本の検証プログラムをベースにしたものも使っている。