Raptor開発者ブログ

期限:2016年月日 やること:次のアプリをリリースする 資格の勉強法、アプリ開発、はてブロのカスタマイズのことを書きます!

Android初めて見たエラーの原因=コードが長すぎ(多すぎ)ることによるエラー!?

 
 
久々にAndroidプログラミングのことを書きます。
 
 
今回、宅建アプリのレビューで、「分野ごとに正答率が表示されたらいい」というご要望をいただきました。
しかも、なぜその機能が欲しいかという理由まで丁寧に!
その理由というのが、隙間時間でアプリをやり、後から復習するときに、正答率の低い苦手なとこがすぐにわかれば便利という!
 
これを実際に実現しようと思った場合、足りない情報があります。

それは、その分野の問題をどのくらい解いたか、という情報です。
というのも、正答率だけでは、抵当権の分野を1問だけ解いて正解したら正答率100%となります。表面上は正答率100%となっていますが、これだけでは自分が苦手か得意か判断する情報が圧倒的に不足しています。

そのため、ここでの正答率が何問解いたうちの正答率なのか、を表示する必要があると考えたのです。

そうして出来上がった機能がこちらです。
f:id:raptor36:20160807114726p:plain:w200
その分野の問題のうち何問解いたのかをバーで表現しました。
そして、バーの下に正答率です。
さらに感覚的にわかるよう、バーの色を3色とし、正答率〜30%はバーの色が薄い青、正答率30%〜70%は青、正答率70%〜は濃い青という具合に正答率が高くなるほど濃い色になるようになっております。
 
 
今回、この機能をつけるにあたり、信じられないエラーに出くわしたので、そのことを書きたいと思います。
Googleで検索して調べた限りでは見つからなかったエラーです。
 

コードが多すぎることによるエラー

 
この2年間でそこそこ色々なエラーに出くわしてきました。
もっとも、大抵のエラーはLogにエラーの原因部分が出力されていますし、Googleで調べれば同じエラーの解決法が見つかります。

その中で割ときつかったのは、SQLite関係のエラーで、Logを見てもエラーの箇所が特定されていないことが多いです。
それでも、SQLiteが原因ということはわかっているので、SQLite周りで調べれば何かしら答えがあります。
 
 
今回のエラーは、SQLiteのときのように、Logを見てもエラーの箇所が特定されていません。
さらに、SQLiteのときとは異なり、エラーの原因がSQLiteとかそういう見当すらもついていないので、Googleで検索のしようもありません。

そのため、エラーの原因から自分で見つける必要がありました。

ヒントとしては、ExpandableListの親リストにバーをただ載せるところまではエラーが起きず、そこから一歩進めてバーに分野別のデータを読み込んでもエラーは起きず、重要度別のデータを読み込んでもエラーは起きず、復習別のデータを読み込んでもエラーは起きず、年度別のデータを読み込んだらエラーが出ました。
うまくいっていたところと、うまくいかなかったところがあったので、あとは両者を比較して少しずつ調べればわかります。

最初は、もちろん年度別のところでエラーが出たので、ここのコードを書き間違えたのかと思い調べました。
でも、何度確認しても間違いがありません。

エラーが出るときと出ないときをさらに細かく比較してみたところ、分野別と復習のデータを読み込んだときにはエラーがでません。
ここで、年度別のデータを読み込んでみたところ、なんとエラーは出ません。
さらに、重要度別のA+のデータだけ読み込んでもエラーはでません。
ところが、重要度別のA・B・Cのデータのいずれか1つを読み込んだ場合、なぜか先ほどうまくいっていた年度別の方でエラーが起きます。

ということは、重要度別のABCのコードがおかしいと思い、改めてコードを見返しましたが、うまくいっているA+と違いはなく、おかしなところはありませんでした。

ここで、重要度別のABCのコードが正しいことを検証するために、重要度別のA+でなく、試しに重要度別のBのデータを読み込んでみたところ、なんとエラーが出ませんでした。
ということは、コードの内容のどこかにミスがあってエラーが出るというより、別の原因があるように思えました。

そうしてふと思ったのが、コードが長すぎるのではということです。
すなわち、コードの量が原因でエラーが発生しているのかもしれない。
そう考えたのは、内容が原因でないならあとは量くらいしかないと思ったからです。

正直、他にエラーの原因が思いつかないので、試しに、これまで書いたスパゲティコードのうち、同じような処理をしていた部分をメソッドにしてまとめてみました。
これで10行のコードが1行で表せられるようになり、それが100セットくらいあったので、かなりコードをスリム化させることができました。

そうした状態で、重要度別のA+とAのデータを読み込んだところ、エラーが出ませんでした。
さらに、BとCのデータも一緒に読み込んだところ、ついにエラーが出ませんでした!

こうして、今回のエラーを克服できたのです。
 

まとめ

 
これまで、JAVAのメソッドの書き方とか無視して、その都度何回重複しても同じ処理を書いてきました。
これで特に問題がなかったからです。
ところが、今回コードが長すぎることが原因のエラーに出くわしたので、これからは、同じような処理をするときには、メソッドでなるべくまとめて表現するようにしようと思いました。


このような、初めて経験するエラーにも出くわしてようやくつけた機能が、こちらの進度バーつきのExpandableListです。

f:id:raptor36:20160807114726p:plain:w200
これでさらに使いやすい宅建アプリになっていたら幸いです!
 
 
 
 

業界最速!?Android宅建アプリ5万ダウンロード突破!!

 
 
2014年8月20日にリリースした宅建アプリ(Android版)が
2016年7月4日ついに5万ダウンロード突破しました!
約2年での達成です!
そこまで早くないようにみえますが、宅建アプリ業界ではおそらく史上1番目の早さです!

そもそも、Android宅建アプリで5万ダウンロードを超えているものは、これまで1つしかありませんでした。

ついに、当アプリも5万ダウンロードを突破しました!


f:id:raptor36:20160707154319p:plain:w300


1万ダウンロードから5万ダウンロードに到達するまで、すごく長かったです。

すでにご利用くださっている方はご存知と思いますが、この宅建アプリは、最初は使いづらかったシステムを、みなさまのご要望を元に改良しつづけたものです!

そうして、とうとう5万の大台に乗せていただきました!

ダウンロードしてくださった方々、さらにご要望を書いてくださった方々
本当にありがとうございます!
 

とうとう宅建受験者の3人に1人が使うアプリに

 
ちなみに、iPhone版(iOS版)の宅建アプリのダウンロード数は、2万ダウンロードを超えています。

なので、宅建アプリのAndroid版とiPhone版を合わせると、7万ダウンロードとなり、宅建受験者20万人のうち3人に1人が使ってくれている計算になります!


ぜひご利用ください!
もちろん、完全無料です! 
 

 


Android版の宅建アプリは、Amazonストアでもリリースしております。
2016年版 宅建取引士 過去問 一問一答 無料(解説付き)
2016年版 宅建取引士 過去問 一問一答 無料(解説付き)
 
 
 
懐かしの、Android宅建アプリが1万ダウンロード達成したときの記事です。
raptor36.hateblo.jp 

新品の本を7〜16%安く買う方法、過去問やテキスト参考書をお得に!中古の本も!

 
 
 
資格試験の勉強をするため、過去問集を買ったり、テキストを買うことがあります。
一式揃えるとなれば、10000円を超えることもザラにあります。
そこで、こんなにたくさん買うからには、少しでもお得に買いたいです。

もちろん、中古で安く手に入れるのがベストです。

ただ、過去問集は、最新の過去問が収録されているものが欲しいので、新品のものを買うことになるはずです。
ところが、新品の書籍は、再販売価格維持制度によって、ネット書店であっても値引きが禁止されているので、定価で買うしかありません。

とすると、新品の本を安く買いたい場合、定価で買うのは仕方ないとして、ポイントが多くもらえるものを買うのが一番お得ということになります。
定価で買うけど、5%のポイントがもらえれば、5%引きで買えたことになるからです。
 
そこで、ポイントサイトの利用をオススメします。
ポイントサイトを利用することで、ポイントがもらえて、お得に買うことができるのです。
 

ポイントサイトの簡単な説明

 
ポイントサイトとかチマチマしたのは面倒というイメージがあります。
でも実際は、ネットで商品を買ったりサービスを申し込む前に、ポイントサイトを経由するだけで、ポイントサイトからポイントがもらえます。

例えば、東京に泊りがけで行く必要があり、楽天トラベルでホテルを予約する場合を考えます。
ポイントサイトが楽天トラベルを扱っていれば、ポイントサイトに設置された入り口から楽天トラベルを開くだけです。
あとは楽天トラベルでホテルの予約をすることにより、ポイントサイトからポイントがもらえます。
(もちろん、楽天の会員登録をしていれば、楽天トラベルからもポイントがもらえます。)

このように、ネット上でお金を使う場合には、一旦ポイントサイトを経由するだけでポイントがもらえます。
だいたい、購入金額の1%〜10%くらいを、ポイントとしてもらえる気がします。
 

新品の本をお得に買う方法

 
本を買う場合、Amazonが最初に思いつくはずです。
しかし、現在、どのポイントサイトでもAmazonは扱っていません。

なので、最大限お得に買おうと思ったら、Amazon以外のオンライン書店のうちで、一番ポイントがもらえるところを選ぶことになります。

No. 1は、ハピタス堂書店

 
私が現在利用しているのは、ハピタス堂書店です。

これは、ハピタスというポイントサイトが運営しているオンライン書店で、2016年6月現在、ハピタス経由で本を買うと購入金額の7%のポイントがもらえます。
10000円購入した場合、ハピタスから700円分のポイントがもらえます。
下の表にまとめましたが、購入金額の7%がもらえるのはかなりお得です。
たいていは、購入金額の2%くらいしかもらえないからです。

しかも、ハピタスのポイント(1ポイント=1円)は、ハピタス内でしか使えないという制限もなく、手数料無料で現金に換金することができるのです。
ちなみに、490ポイント(=490円)を500円分のAmazonギフト券に交換することができお得なので、私の場合は、現金に換金せずにAmazonギフト券に交換しています。
 

No. 2は、エルパカBOOKS

 
ハピタス堂書店の他には、CDショップで有名なHMVの、エルパカBOOKSが、期間限定でお得な場合があります。
ここは、ハピタスを経由すれば購入金額の1.2%のポイントがもらえるだけでなく、本を10000円以上買うと15%のスペシャルクーポンがもらえる場合があるからです。
その場合、1.2+15=16.2%お得になります!
15%のスペシャルクーポンが期間限定でなければ、ここがダントツでおすすめなのですが!
 

その他のオンライン書店×有名ポイントサイトの比較

 
一応、他のオンライン書店のうち、有名どころとしては、楽天ブックスブックオフオンライン・ネットオフ・hontoネットストア、があります。

そして、ポイントサイトとして最も有名で還元率の高いところとしては、げん玉・PointTown(ポイントタウン)、があります。
このポイントサイトに、ハピタスを加えてそれぞれ比較してみます。
 

オンライン書店 げん玉 PointTown ハピタス
楽天ブックス 2% 1% 2%
ネットオフ 1.5% 1% 1%
ブックオフオンライン なし なし 1.5%
hontoネットストア 1% 1.3% 2.2%
エルパカBOOKS なし 0.5% 1.2%
ハピタス堂書店 なし なし 7%

*ちなみに、ブックオフオンラインは、一応げん玉とPointTown(ポイントタウン)でも扱いがあるのですが、こちらが本を売る場合(買取)だけポイントがもらえるもので、こちらが購入する場合には、ポイントがもらえません。
買取の時にもらえるポイントと、購入の時にもらえるポイントとが存在していて、みなさんに関係あるのは購入の時にもらえるポイントだと思うので、ご注意ください!

 
このように、ハピタス堂書店の7%ダントツで高いです。
やはり、ポイントサイトのハピタスと直接つながっているため、ポイントが段違いに多いからです。
ハピタス堂書店は、ハピタス経由でしかポイントがもらえないので、ポイントサイトは、ハピタスが一番オススメです。
その上、ハピタスは、エルパカBOOKSや、楽天ブックスや、hontoネットストアのポイントも、1番多いです。
 
なぜ、ハピタスが特にポイントをたくさんもらえるかというと、理由があります。
ポイントサイトの中でもかなり有名な、げん玉やPointTown(ポイントタウン)は、ミニゲームとショッピングでポイントを稼ぐことができます。
他方、ハピタスは、ミニゲームがなく、ショッピングで稼ぐのがメインとなっております。
このように、ハピタスは、ショッピングに特化しているため、ショッピングの際他のポイントサイトよりも高いレートでポイントをもらうことができるのです。
 

まとめ

 
以上のように、新品の本を買う場合、ハピタスを利用して購入するのが一番お得だと思います。
しかも、ハピタス堂書店は、金額に限らず1冊から送料無料なところもありがたいです。

ちなみに、ハピタスはゲームがない代わりに、ポイントサイトの中で1番の還元率であることがほとんどです。
なので、いちいち複数のポイントサイトを比べる手間をかけなくても、ハピタスだけで十分だと思います。

ただし、ハピタスの唯一の欠点は、1ヶ月に3万円までしかポイントをお金に換金できないところです(残りは繰り越されます)。
1ヶ月で30000ポイントを貯められる人はあまりいないと思いますが!

というわけで、何かネットを通じて購入したり・資料請求したり・サービスに申し込むときは、一旦ハピタス(30ポイントプレゼント中)を見てみるのがオススメです。

*現在、23人の方が、ハピタスにお申し込みされました!
 
 
 

QLOOKアクセス解析