• Java 入門 #02 [Hello World!]

    2018-01-12 00:57
    どうも。Bimです。

    この記事の内容は以下の動画でも説明しております。


    前回Javaの開発環境を構築したと言うことで、Javaを早速動かしてみましょう。
    今回はHello World!という文字列を表示させてみます。
    Java9からはjShellという新機能が追加されて、Javaの実行が簡単になりました。

    jShellとは
    コードスニペットの評価を助けるAPIツールです。
    そんでもって、スニペットとは一般的に「断片」という意味の英語で、
    IT用語としては、プログラミング言語の中でかんたんに切り貼りして、
    再利用できる部分のことや検索エンジンによる検索結果の一部として表示される
    Webページの要約分のことを言います。
    まぁ、プログラミングコードの断片みたいなニュアンスですかねぇ...
    ぶっちゃけ、このような説明をされても今の段階ではピンと来ないと思います。
    プログラミングコードの断片を評価を助ける??なんじゃそれ??みたいな...
    なので、今はJavaのプログラムを実行できる環境くらいの認識で構いません。

    このコードスニペットの長点としましては、プログラムを作成する際に、
    頻繁に利用する同じ記述の繰り返しや、
    少しの変更を加えるだけで使うことが出来そうなパターンに遭遇したとき、
    そのようなパターンをスニペットとして登録しておくと、
    コードを呼び出して貼り付けることで簡単に記述する事が出来ます。
    (まぁ、今はそんなパターンに遭遇もしてないので、想像がつかないですね。)

    一つの例としてVisual Studio C++, C#がコードをスニペットとして
    利用することが出来る機能が付いています。(興味のある方はここを参照)

    また、jShellはJava REPLとも呼ばれています。
    REPLは
    R : Read
    E : Eval
    P : Print
    L : Loop
    の頭文字です。
    要するにコードを読んで、評価して、出力して繰り返す。
    対話型の評価環境です。
    もっと砕いた言い方をするならば、
    キーボードから打ち込んだ命令を読み込んで(Read)、
    評価または実行して(Eval)、
    その結果を画面上に表示して(Print)、
    また、命令を待っている状態に戻る(Loop)環境のことを言います。

    JavaにもこのREPLが導入されました。
    これによって、入門者でも簡単かつ素早くJavaプログラミングを体験する事が
    出来るようになったかなぁ~と(個人的にですが...)思います。

    それでは、jShellを起動させてみましょう。
    ターミナル画面(コンソール画面)を立ち上げて、jshellと打ってEnterキーを押してください。




    次にいよいよ"Hello World!"という文字列をターミナル上に出力してみましょう。
    System.out.println("Hello World!");
    と入力してみてください。


    以下の画像のように出力されたのが確認できたら成功です。


    System.out.println("Hello World!");ってなに?
    入門者なら必ずと言っていいほど思う疑問だと思います。
    しかし、現段階(始めたばかりの人)のJavaの知識量の人に説明してしまったら、
    あまりにも理解に苦しい仕組みとなっており、99.9%挫折してしまいますし、
    何より、楽しいプログラミングに対して嫌悪感を抱いてしまうかもしれません。
    なので、現段階では2個の内容に分けてざっくりと説明をしたいと思います。


    まずはじめの方でREPLは"打ち込んだ命令を読み込んで"と言ったのを覚えているでしょうか?
    この命令というはなんぞや?と言うことなんですけども、
    System.out.println("Hello World!");というが命令になります。
    これはターミナル画面(コンソール画面)にHello World!という文字列を表示させなさい!
    と言った命令なのです。
    この命令をコンピュータが解釈することで、Hello World!という文字列が表示されています。


    もう少しだけ、細かく説明します。
    そもそも、ターミナル画面(コンソール画面)に指定した文字列や値を出力させる命令があります。
    それがSystem.out.println();という命令文です。
    この命令文は()の中に指定した文字列や値などをターミナル画面(コンソール画面)に表示してくれる命令文なのです。
    そして今回その()の中に"Hello World!"と指定したので、その文字列が出力されています。
    Hello World!を囲んでいる"は後々、習いますので今は意識をしなくても大丈夫です。

    試しに
    System.out.println("Hello World!");

    System.out.println("こんにちは!");
    とか
    System.out.println("100");
    に変えてみてください。
    なんとなく、上の説明の言いたいことがわかると思います。

    今回の記事の目的はとりあえず、Javaのプログラミングをやってみよう!
    というコンセプトですので、フーン( ´,_ゝ`)くらいに思ってもらえればと思います。

    かと言って、きちんと段階を踏んでいけば、なぜ、このような記述をしているのか
    わかるようになっているので、この講座を進めていけばきっとわかるようになるハズ...

    またjShellの機能の一つとしてキーワードの補完機能があります。
    System.out.println()なんて長い記述最初は覚えらんないンゴ...
    と言うおまいらでも大丈夫です。
    とりあえず、
    System.
    と打ってからTabキーを押してみてください。


    そうしたら沢山の文字列が出てきましたね...
    先程、System.out.println();は命令文だと言いました。
    しかし、JavaにはSystem.out.println();だけではなく、夥しい数(数え切れない程)の命令文が存在します。
    なので、System.out.println();の命令以外にもSystem.in.close();命令や、System.out.printf();命令などSystem.の次に記述することが出来る命令文が存在します。
    この沢山の文字列は、そのSystem.の次に記述できる命令文の一覧が表示されているんです。
    なので、長い命令文を最初から最後まで覚える必要はなく、この一覧から探しながら命令文を記述することができます。

    この中をよく見ると...
    右下にoutという文字列があります。


    あっ!そうだoutだった~。
    ということで、ouまで入力して、またTabキーを押してみましょう。


    そうするとoutしか候補が無くなって自動的にoutが入力されます。


    でも、まだ命令文は終わっていません。
    outの次は....
    と言うことで、.を入力しTabキーを押してみましょう。
    そしたらまた、沢山の文字列が表示されました。

    この中をよく見ると...
    左下にprintln(という文字列がありましたね!


    あっ、そうだ~。printlnだった~。
    ということでprintら辺まで入力してTabキーを押しましょう。


    そうすると、out.の次に記述することが出来る命令文がもっと絞られるので、
    もうわかりますよね?
    この調子で、先程の命令文を完成させちゃいましょう。

    これで完成となります。

    ちなみに、終了をしたい場合は
    /exit
    と入力すれば、終了することが出来ます。


    如何だったでしょうか。
    まだ、Javaプログラミングの扉を開いた段階で何をしているのか、
    何ができるかはわからないと思いますが、とりあえずJavaプログラミングの第一歩は
    踏み出せたということで、これから頑張っていきましょう。

    今回はここまで。お疲れ様でした。
  • 広告
  • Java 入門 #01 [Java9 の環境構築]

    2018-01-10 10:50
    どうも。Bimです。

    今回はこの講座を勧めていく上で必要なツールの紹介と実際にJava言語を動かしていく環境の構築をしていきたいと思います。

    ツールの紹介
    まずは、本講座での環境周りを紹介していきたいと思います。

    OS : Ubuntu 17.10
    Javaのバージョン : Java 9

    以上となります。

    それでは、次に肝心のJava言語を開発する環境をインストールしていきましょう。
    WindowsとMacの方は下の方に説明リンクを貼っておきますので、
    参考にしてみてください。

    また、本記事の内容はこちらの動画でも説明している内容です。



    Ubuntuの場合
    端末を立ち上げましょう。下の図の番号順に押してください。





    sudo apt install openjdk-9-jdk-headlessと打った後にログインする時に入力するパスワードを入力すればOKです。



    暫くすると...続行しますか[Y/n]と表示されるので、Yを入力しEnterキーを押しましょう。
    Linuxはこれで導入完了です。
    導入が終わったら試しにjavaと入力し、Enterキーを押してみましょう。
    下の図のように表示されたら導入成功です。



    Windows場合とMacの場合はこちらのリンクを参考にしてみて、
    環境構築をしてみてください。
    Windowsの場合1
    Windowsの場合2(※動画が開きます)
    Macの場合(※動画が開きます)

    今日はここまで。お疲れ様でした。
  • Java 入門 #00 [プログラミング言語とは]

    2017-12-08 13:30
    どうも。Bimです。

    今回からJava言語を習得していきいましょう。
    Java言語はプログラミング言語の一つで世界で広く様々な場面で使われている言語です。
    まずは、Java言語を学ぶ前にプログラミング言語について学んでいきましょう。

    プログラミング言語とは

    コンピュータに対する命令を記述するための言語です。
    コンピュータを動かすためにはCPU(コンピュータの頭脳)で実行するプログラムの命令が必要です。
    パソコンの構造に関してはこちらのページを見てもらえたら良いかと...
    人間と人間がやり取りをする場合、私たち(日本人同士)は"日本語"という言語でやりとりをします。
    それと同じで、人間とコンピュータの場合がやりとりをする場合に用いる言語がプログラミング言語です。
    また、世界には色々な"言語"がありますね。(英語、フランス語、韓国語、中国語...)
    プログラミング言語にも、色々な種類があってその一つが"Java言語"という言語になります。

    しかし、初期の頃のプログラミング言語は機械ごと呼ばれる0と1だけを羅列したとても分かり辛い物でした。
    なので、人間でもわかりやすいようにプログラミング言語も改良を経て、アセンブリ、FORTRAN、LISP、COBOL、C、JAVA、C#、Pythonといった言語が開発されていったわけです。

    プログラミング言語は大きく2つの種類に分けることが出来ます。
    機械語やアセンブリ言語は、よりハードウェアに命令を渡すのに近い言語です。
    CPU特有の命令を使えたり、メモリの操作など他の言語では出来ないことも出来てしまいます。
    しかしどちらかと言えば、人間には分かりづらい言語です。
    こういった言語を"低水準言語"と言います。

    もう1つは、"高水準言語"です。
    こちらは、比較的人間にとってわかりやすいように記述することができるプログラミング言語です。
    また、低水準言語ではCPUの種類によって(厳密には違いますが)書き方が違いますが、高水準言語は、基本的に一緒です。
    C、C++、C#、Java、Pythonなど、現在では様々なプログラミング言語が生まれています。

    また、言語が劣っているから低水準というわけでは無くて、ソフトウェアの階層構造を考えた場合に、ハードウェア寄りに位置するので低水準と言っています。

    Java言語とは

    Java言語は、サン・マイクロシステムズ社が1995年に開発したプログラミング言語です。
    主な特徴としては、どのOSでも動くように設計されています。
    "Write Once, Run Anywhere"(1度作成すれば、どこでも実行ができる)というのを理念としています。
    また、オブジェクト指向プログラミング(後に習います)を取り入れた言語です。
    なぜ、Java言語なのかと言うと、元々の名前は"Oak"という名前でしたが、商標を調べたところ既にOakという名前が他の会社に使われていた為、Javaという名前に変更されました。
    Javaの由来に関しては、ハッキリとした資料がないのですが、
    開発チームのメンバがよく昼食時に通っていたカフェのメニュー説が有効じゃないかと。

    ※補足(初心者の方は読まなくても良いです)
    実際に、中間言語のバイトコードは最初の4バイトが'0xCAFEBABE'となっているんです。
    それに関してジェームズ・ゴズリンさんが説明してくれています。

    先程、JavaはどのOS(実行する環境)でも動くと説明しましたが、その理由は"JVM"のおかげなのです。
    JVM : Java Virtual Machine(Java仮想マシン)とはJavaのプログラムを動かすためのソフトウェアで、Javaで作ったプログラムを実行します。
    C言語などの場合だと、プログラムから実行ファイルを生成しOSが実行します。
    なので、OS毎に動く場合と動かない場合があります。
    Java言語の場合、プログラムからバイトコードと呼ばれる、JVMが実行するようの命令を書いたファイルを生成して、それを"JVMが実行"します。
    このJVMが最終的にネイティブコードと呼ばれる、OSが実行するようの命令を書いたファイルに変換する事によって、色々な環境で動くようになっています。
    まぁ、ざっとまとめてしまうと、JVMがOS毎の違いを吸収してくれるからどの環境でも動かせることができる。という感じですかね?




    さて、先程変換と言いましたが、その"変換"を今度は触れていきたいと思います。
    Javaは高水準言語、即ち人間がわかりやすい言語、言い換えれば"機械がわかりにくい言語"です。
    でも、実行する担当者は人間ではなく、コンピュータです。
    なので、最終的に実行する際にコンピュータがプログラムを理解してくれてないと困るのです。
    国同士での対談のとき、他国の話を国のトップが理解できなければ意味がないですよね。
    そこで、通訳の人が必要なのです。(格好だけで本当は通訳いらないらしいと言う噂も...)

    人間とコンピュータ間でも通訳をしてくれる役割を果たしてくれるものが必要なのです。
    その通訳の役割を果たしてくれるのが、"コンパイラ"というソフトウェアです。
    コンパイラは人間が理解しやすい言語で書かれたプログラムを、コンピュータのCPUが直接的に実行できる機械語あるいは、もとのプログラムよりも低水準な言語に変換してくれます。
    そしてこの変換作業を行うことを"コンパイル"と言います。
    ※この講座内でも、頻繁に"コンパイルしてください。"と言います。
    ※これは要するに変換作業を行ってくださいと言っています。





    それでは、Javaの概要はここら辺までにして、
    次回からはJavaの環境を構築する作業をしていきたいと思います。

    その上で、前提事項があります。
    本講座のJava実行環境はWindowsでもMacでもなく、Linuxでやっていきます。
    しかし、場合によっては操作などが異なる場合が有るかもしれないので、その分の解説は載せるつもりですが、乗っていなかった場合にはコメントか、Twitter、メール連絡フォームからお問い合わせください。

    また、Javaのプログラムを効率よく記述するために"テキストエディタ"というソフトウェアを使っていきます。
    まぁ、プログラミングをするのに適したメモ帳みたいなものです。
    もう少し正確に言うなら、文章を編集するのに特化したソフトウェアです。
    私は、"Vim"を使っていきます。
    しかし恐らく、Javaの"入門講座"なので、入門者が多いかと思うのでVimはあまりおすすめ出来ないです。(操作方法など色々癖が強いので...)
    最初の内は、Notepad++TeraPadAtomSublime Textサクラエディタ、などがオヌヌメです。
    それで、ある程度慣れたら、自分にあったテキストエディタを探してみることをおすすめします。(最初は機能がシンプルでわかりやすい(操作しやすい)テキストエディタを使ってみましょう。
    特にシンプルなのは、TeraPad、Notepad++、サクラエディタです。
    Macだと、miCotEditorです。

    また、私の動画でも色々なエディタを紹介した動画がありますので、参考にしてみてください。(宣伝乙ww)



    今日はここまで。お疲れ様でした。