「Javaと僕」の話。

目次。

株を自動売買するプログラムの話をするのであれば、その前にJavaの話をしようと思う。このプログラムの開発に使っている言語はJavaなので。

 

 

↓English version.

blog.sun-ek2.com

 

Javaとは?

f:id:sun_ek2:20181105130247p:plain

Javaは、数あるプログラミング言語の中の一つ。C++というプログラミング言語の影響を強く受けていると言われている。イメージ的には、C++という暴れ牛を飼いならしたら、おとなしいJavaになりましたって感じ。Javaのアイコンは、コーヒーマーク。コーヒー好きの人なら親近感が湧くのでは?(僕もコーヒーは、むちゃくちゃ飲む)一方、Javaには、Dukeっていう名前のマスコットキャラクターがいるが、僕はちょっと苦手…。(Dukeの画像は、あえて載せない)

 

幅広い分野のプログラムがJavaで記述されているのだけども、一般の人がよく目にするのはスマホのアプリ。スマホのアプリは結構Javaで開発されているようで、書店で「アプリ開発」の参考書を探したら、Javaを使ったやつがたくさん見つかる。(多分、あらゆる言語の中で一番多い?)スマホのアプリ作りたい人は、ぜひJavaを。ちなみに僕は、作ったことはない。

 

他にJavaを見かけることがあるとするならば…タスクバーの右端の方から出てくる「Java Update利用可能」っていう通知。googleの検索窓で「Java アップデート」と打つと、予測で「うざい」って出てくるアレ。もう少しちゃんと説明するとアレの正体は、JavaはJavaでもJava仮想マシン(JVM)のこと。これもJavaの大きな特徴なのだが、Javaで書かれたプログラムは、JVMなしでは動かない。JVMは、Javaプログラムのために用意された舞台みたいなもの。JVMがないとJavaは、踊ってくれない。(ちなみにJava アップデートはちゃんとやるべき)

f:id:sun_ek2:20181105131203p:plain

 

「なんでこんな面倒くさいことになってんの?」なぜかっていうと、Javaで書いたプログラムをどんな環境でも走らせるようにするため。Linuxだろうが、Windowsだろうが、Mac OSだろうが、JVMが環境の違いを相殺してくれるので、プログラムを書く人は、環境の違いで頭を悩ませなくてすむ。(この悩みから完全に解放されるわけではないが)この話は、” Write once, run anywhere.”っていうなんだかかっこいい言葉で表現されている。

 

説明になっていないような気がするが、説明はここまで。僕が詳しく説明しなくてもネットで調べれば、たくさん情報があるので興味がある人はどうぞ。

 

 

Java遍歴。

僕がJavaの勉強を始めたのは、高校1年の頃。そしてプログラミングの勉強を始めたのも高校1年の頃。そうです、Javaは、僕のプログラミング言語における(多分)母国語のようなもの。なんでJavaを選んだのかはよく覚えていない。公立の図書館から薄くてイラストがたくさん載ってて簡単にJavaの勉強ができそうな本を借りて勉強を開始。…そして挫折。

 

今から思うと借りてきた本は、難しいけれどもJavaを理解するために必要な説明を省略・誤魔化して「簡単にJavaが分かる!」って言っている本だったと思う。(プログラミングに限らずそういう本は時々見かける)もちろん当時は、そんなことは分からず、「Javaはよくわからん」ということでプログラミングから手を引いた。

 

高校2年の頃、プログラミングをもう一度、勉強したいと思い、今度はJavaから離れて、別のことをした。コンピュータの基本的な仕組みの勉強とか、CASL II(アセンブリ言語)、Python 2といった別のプログラミング言語の勉強とか。ちなみにCASLⅡは、基本情報技術者試験用に開発されたアセンプリ言語。言語仕様が簡素化されていて、対応するアーキテクチャは現実には存在しない。しかし、この簡素化されたアセンブリ言語は、コンピュータを理解するために重要な要素が濃縮されているので、勉強して損はないと思う。

 

CASL II(アセンブリ言語)、Python 2も良い本に出会えたおかげで挫折せずに済んだ。この2つの言語の勉強をした後、再びJavaへ。プログラミングに必要な最低限の知識とセンスが身についたおかげなのか、今度はJavaで挫折することはなかった。

 

高校2年、3年の頃、色々とJavaでプログラムを書いていた。詳細は、後述。大学受験に落ちて、流石にやばいと思い、プログラミングを止め、受験勉強。大学進学後は、あまりプログラミングをやらずに日々が過ぎていった。(大学での専門は生物系だったので、プログラミングに触れる機会はかなり少なかった)大学4年になって、研究室に配属され、卒業研究ならびに卒業論文を執筆。少し卒論に嫌気が差して、気晴らしのために再び、プログラムを書き始めた。これまた後述。

 

僕のJava遍歴は、こんな感じ。

 

 

 

開発したプログラム。

我が家には、お小遣いというものがなく、遊ぶお金はなかなか手に入らなかった。お金がないのであれば、自分で稼ぐしかないと思い、開発したプログラムたち。結局、あまりお金にはならなかったが、プログラミングはむちゃくちゃ楽しかった。(大学受験に失敗した一因のような気がするが)

 

Twitter bot(高校2年~高校3年)

@(botのユーザー名)つきのツイート(メンション)をしたユーザーのツイートを200件取得して、「あなたが○番目に多く呟いた文字は、○です」ってリプライするプログラム。

 

Twitterアフィリエイト(広告をツイートして収益を得ること)を知って、高校2年のときにTwitterを始めた。Twitterのアカウントを作りまくって、ネット上にある自動フォロー、ツイートサービスを使って、フォロー、広告を流しまくったら、アカウントが凍結されてしまった。ただただ広告を流すだけじゃダメだということがわかったので上記のプログラムを開発。

 

転売ツール(高校3年)

楽天とAmazonの商品の価格を比較、楽天の方が安く売られている商品をHTML形式で、リスト化するプログラム。

 

所謂、ネットせどりというものをやっていたときに開発したプログラム。楽天で安い商品を見つけてAmazonで売っていたのだが、安い商品を見つけるためには、楽天とAmazonのWebページとにらめっこしなければならない。「これは、人間のやることじゃないな」と思い、プログラムを書き始めた。ちなみにHTML形式でリスト化しているのは、アフィリエイト(収益を得る)のため。結果、数万点の商品比較を自動化できた。(よく覚えてないが、1日~3日で数万点比較できたと思う)

 

ブログのアクセスアップツール(高校3年)

人のブログに自動訪問して、訪問履歴をつけまくるプログラム。一日に数万サイトを自動訪問できる。

 

当時、ブログは数ヶ月に1回しか更新していなかったが、月1万PVを超えた。ただ、日に日に罪悪感が大きくなっていったのでこのプログラムは封印…。

 

株の自動売買(大学4年~)

サボり中…。証券口座にログインとか、上場企業の株価を取得するコードを遠い昔に書いったっきり。。。

 

 

Javaの勉強。

高校生の頃は、お金がなかったので、公立の図書館で本を借りまくった。かなり色々な本を読んだので、どれがどれだったか覚えていない。

 

大学に入り、初めてJavaの本を買った。

この本は、特にJava 初心者の多くがつまずく「オブジェクト指向」に関してとても丁寧に説明されているのでおすすめ。「オブジェクト指向」とは、簡単に言うと「僕たちが住んでいる世界をできるだけ忠実にプログラムで表現しよう」という考え方のこと。この本では、たくさんの人たちと協力して、巨大なプログラムを作るためにはどうすればよいかという視点でオブジェクト指向が説明されている。このような視点での説明は、今まであまりなかったと思う。(他の本では、一個人がプログラムを書くという視点からの説明が多い気がする)

 

数万人の人が手分けして、効率よく、間違えなく、修正が容易な数十億行のプログラムを開発するためには、どうすればよいのか。この問題を解決する1つの考え方が「オブジェクト指向」。「今までコンピュータの都合に合わせてプログラミングしていたけど、それだと人は間違えを犯すから、これからは人の都合に合わせてプログラミングしよう」という考え方。それがつまり、「僕たちが住んでいる世界をできるだけ正確にプログラムで表現しよう」ということ。

 

上の例は、極端だが、数十億行のプログラムを数万人の社員で開発、維持していく状況を想像しながら勉強すれば、「オブジェクト指向」のありがたみが分かると思う。そして、そのようなことが先程紹介した本に書いてある。(ちなみにGoogleのプログラミングコードは20億行あって、開発メンバーは2万5千人いるらしい

 

Javaの勉強は色々やったが、その中で一番効率が良い勉強法だと思ったのは、自分で考えて、自分で必要な情報を調べまくって、自分なりにプログラムを書いてみること。

 

これが、王道。

 

ブログランキング・にほんブログ村へ
にほんブログ村