akitiik's blog

alwayslookonethebrightsideoflife

はじめてのAndroidアプリ開発という本を買った

Android開発をネット上の情報で勉強するには知識(と根気)が足りなすぎると感じたので本を買った。どの入門書がいいのか調べてみても初心者向けの決定版的なものは見つからなかったので無難そうなものを選んだ。これだ。

Amazon.co.jp: はじめてのAndroidアプリ開発―Android4対応版 (TECHNICAL MASTER): 山田 祥寛: 本

 (Kindle版のほうが500円も安い。しかし電子書籍を快適に読める端末を持っていないので今回は紙媒体にした。)

学習もまったく捗っていないことだし、気持ちを入れ替えてじっくり読んでいこうと思う。せっかくAndroid Studioで環境を作ったけど、当分のあいだ使うことはなさそうだ。

やっとの思いでAndroidの開発環境を構築した

調べてみると、AndroidSDK+Eclipse+ADTPluginという組み合わせが主流のようだ。しかし今回はAndroidStudioというものを使ってみることにした。AndroidStudioはまだBeta版だが、公式にはこれからAndroid開発を始める人はこっちで始めるべきだ的なことが書いてあるし、これから標準になっていく予定の環境らしいので挑戦してみることにした。

AndroidStudioをインストールしたあと、とりあえずHello,worldを表示するだけのサンプルを動かしてみようと試みるも、エミュレータの起動方法がわからなかったり、エミュレータが起動してもサンプルが動かなかったりなどのエラーに当然のごとくぶちあたり、AndroidStudioの動作の緩慢さと部屋の暑さとが相まってイライラしながらもググって出てきた情報を試してみたところなんとか解決にこぎつけた。実際にエミュレータにHello,worldが表示されたときには感動した。

Hello,worldを表示するだけの単純なアプリなのに、沢山のフォルダとファイルが階層構造になっていてクラクラする。しかも、それぞれのファイルが何のためにあるのかわからない。実際にエラーを解決するために「app/build.gradle」を編集してみたが、これが何なのかあまりよくわかってない。gradleというツールでビルドするための設定ファイル?くらいに思っているが(そもそもビルドという用語すらよくわかっていない)、Androidアプリの構成についてもおいおい勉強していかなければ。

それと、予想はしていたがこのパソコンではかなり動作が遅い。まあ3年くらい前のノートだし、メモリも4Gしかないからなしょうがないことではあるけど。

とにかく、開発環境は整った。Javaの勉強もまぁまぁ進んでる。肝心のアプリの案が浮かんでこないけど、それもおいおい考えればいいだけのこと。とにかくJavaを習得しなければ。

Androidアプリに挑戦してみようと思う

最近Androidアプリを作りたい欲求がわいてきた。pythonを勉強して、はじめてのプログラムを書き、ちょくちょく機能追加して実用性を高めてるところだったけど・・・。すぐ他のものに目移りしてしまうのは自分の悪い癖だ。

AndroidアプリはJavaという言語で作るらしく、せっかくやったpythonの勉強が無駄になりそうなのが惜しい。そうはいっても完全に無駄というわけではなく、プログラミングの基本的な考え方なんかはJavaを勉強してく上でも活きるのではないかと思ってる。

しっかし、軽くググってみたところ、Androidアプリを作るのは相当に難しそうだ。この前作った瞬間英作文のアレと比べると20倍くらいは難しそうなイメージだ。まず開発環境を整えるのも一苦労しそう。開発環境をセットアップして、それの使い方を身につけて、Javaを覚えて、Androidの仕組みを調べて、そこからやっとスタートって感じかな・・・。

とりあえずはweb上のJava入門記事をいくつか読んでみよう。

というか、Androidアプリは作りたいけど何を作りたいかは決まってないんだよなあ。ネット上にあるいくつものアドバイスによれば、こういう状態はモチベーションが持続しづらくてひじょーに挫折しやすいらしい。たしかに開発環境をググってみただけで心が折れかけたもんね。でも具体的なコレというものはなくても、「Androidデバイス上で自分の作ったものを動かしてみたい」という思いはある。

実際に作り始めるまえにいくつもハードルがあるけど、まあ向いてる方角さえ合っていればどれだけゆっくり歩いてもいつかは目的地まで着くだろう。

日々の瞬間英作文トレーニングをちゃんとこなすためのツールを作った

これまでブログに書いてきたように、プログラミング初心者未満者が初めてのプログラム作成に挑戦し、それが先ほどやっと完成した。とりあえず最低限の機能は付いてる。正直すばらしい出来だと思う。そうはいってもまだまだ欲しい機能はあるからこれからどんどん良くしてって毎日使えるツールにしたい。まあこれを使って英語を勉強するよりはこのツールをもっとよくしたいって気持ちのほうが遥かに勝ってるんだけど。

コードはここに載せておく。このブログのアクセス数なんて無いに等しいもんだけど、誰かがこれを見てアドバイスをくれる可能性もなくはない。(誰か見てたらください)

これで出来ることはこんなこと。あらためて書いてみるとたったこれだけかって気持ちになる。

  • ターミナルでshunkaneisakubun.pyを実行すると日本語が表示される。それに対応した英文を打ち込むと正解不正解が出る
    • 正解かどうかはあらかじめ用意してるファイルの中の英文と一致するかどうか
  • このスクリプト起動時にshunkaneisakubun.py 34みたいに数字を付け加えると問題集を指定できる
    • ちなみに問題集は1ファイルにつき10文載ってて、計79ファイルある(多すぎ)
#!/usr/bin/env python3
# coding: utf-8
import sys
import random

argv = sys.argv[1:]
exercise_list = [str(x) for x in range(1, 80)] # 問題集のリスト
num = 10 # 出題数

# オプションで問題集が指定されなかったらランダムに問題集を選ぶ
if len(argv) < 1:
    filename = 'shunkan/{}.txt'.format(random.choice(exercise_list))
else:
    filename = 'shunkan/{}.txt'.format(argv[0])

### 問題集のファイルを読み込んで、問題と解答のリストを作る
item_list = []
with open(filename, 'r') as f:
    for i in range(num):
        line = f.readline()
        item_list.append(line[:-1].split('\t'))

# ### リストから出題
for i in range(num):
    count = 0
    question = item_list[i][0]
    correct_sentence = item_list[i][1]
    while True:
        count += 1
        print('[Q]->', question)
        user_answer = input('[A]-> ')
        if user_answer == correct_sentence:
            print('------------✔✔✔------------')
            break
        else:           # 2回間違ったらアウト
            if count < 2:
                print('------------✗✗✗------------')
            else:
                print('==========正解は・・・========\n', correct_sentence)
                print('~~~~~~2回入力して覚えよう~~~~~~')
                for i in range(2):
                    input()
                break

出題数numのあたりはちょっと無駄なことやってるけど、のちのち出題数を指定できたり問題集中の問題数を変更したりする予定だからとりあえず残してる。

それにしても一番たいへんだったのは問題集を用意するとこだった。なにせ全部で790文あるし・・・。

これはペンです。    This is a pen.
これはペンですか?    Is this a pen?

こんな感じで日本語と英文をタブ区切りで書いたファイルが全部で79個。さすがにファイルが79個もあるのは妥協感ありありなので、もっとまとめてそこからうまく問題を抽出するように考えたい。

これから追加する予定の機能は、ランダムに出題する機能と、成績なんかをつけておく機能。「これだけやってきた」ってのがわかると達成感とかやる気につながりそうだし。正直これらも最低限ないといけない機能のような気がするけど、とりあえずさっさと完成させたかったから省いてしまった。

ファイル名については、shunkaneisakubun.pyって長過ぎるしださいと思うけど良いものが浮かばない。短くてこのプログラムをよく表すいい名前がないもんか?これもおいおい考えよう。

それと変数名を英語で考えないといけないってのがなかなかつらい。英語を勉強するためのプログラムを作るのに英語を勉強しないといけないなんて。日本語をローマ字で書いたやつでもよかったんだけど、最初から妥協しまくりだと意味がないし別になんでもいいんだからえいやっとつけた。まあ人のコードを読んだりしてるうちに典型的なパターンみたいなのが見えてくるんだろう。

最後に、初めて実際にプログラムを作ってみて自分でも驚くくらい熱中してしまった。毎晩の日課も忘れてしまうくらいだった。それと、プログラマーの凄さもなんとなくわかった。とはいっても小学校の算数を習ったあとに、高校数学やってる人たちの凄さがわかったとか言ってるレベルだけど。(よくわからん例えだ)

最後の最後に、作る上で参考にさせてもらったドキュメントやサイトのすべての著者に感謝したい。それと検索エンジンの偉大さを改めて実感した。これも誰かが書いたプログラムだとは今では信じられない。すごすぎるだろ・・・。