Java基礎演習:初回

Javaの講座が始まりました。

真打登場

講座開始から4週間目が終わろうとしています。
これまでの授業ではHTML,CSSの講義と、JavaScriptの講義をそれぞれ並行して行ってきました。

そして遂に、サーバサイドのプログラミング言語であるJavaの講義が始まりました。それでは、この日学んだことを紹介していきたいと思います。

Java概論

冷蔵庫やテレビをはじめとする家電など、私たちの暮らしの中にある多くの機器でJavaが動いている、もしくは動かすことが出来ます。

Javaには他のプログラミング言語にはない、大きな特徴があります。

多くのプログラミング言語は、プログラムの処理方法によってインタプリンタ型(スクリプト型)と、コンパイル型に分けられます。

インタプリタ
コンパイルを行わない。
コンパイラ
コンパイルを行う。

コンパイルとは、コードを機械が読めるマシン語に変換することを言います。人が書いたコードは英語などを使って書かれていますが、コンピュータはこのままではコードを理解できません。
コンピュータにプログラムを実行させる為にはコンピュータが理解できる形、つまり0と1の羅列からなるバイナルコードに変換してやる必要があります。

この処理を、インタプリンタ型ではコードを読み込む際に一行ずつ翻訳しながら実行するのに対し、コンパイラ型では予め全てのコードを翻訳しておきます。

何故そのように分かれているのか、それぞれのメリット・デメリットを説明しながら確認していきます。

インタプリタ型のメリット・デメリット

  • 実行する際に都度コンパイルをかける必要がない
  • 実行速度が遅い

コンパイラ型のメリット・デメリット

  • 実行速度が速い。
  • 毎回コンパイルしないと実行出来ない
  • 他の環境で実行できない

上記のように、片方のメリットはもう一方のデメリットになっています。逆もまた然り。
プログラムを書いている時は当然何度もプログラムを実行し、エラーが出ないか等の動作確認を行うと思うので、都度コンパイルするのは手間がかかりますが、コードが膨大な量になってくるとインタプリタ型とコンパイラ型では実行速度が桁違いになることもあるようです。
そしてJavaコンパイラ型に属します。

しかし、Javaではそれぞれの型のいいとこ取りをしている点で他の言語と異なります。Javaではコンパイルする際に、最後まで翻訳しきるのではなく中間コードと呼ばれる途中の段階までのコンパイルを行います。この中間コードを用いることによって、動作環境をもつコンピュータならハードウェアやOSが異なってもコードに変更を加えることなく動作させることが出来ます。

Javaを動かしてみる

講義序盤で以上の概論を学び、ここからは早速Javaの実行動作環境を構築していきます。

配布元からセットアップウィザードをダウンロードします(講義では全員にWindows機が貸し出されています)。 後はウィザードに従ってセットアップを行いインストールします。

次に先に書いたように、Javaは実行する前にプログラムの書かれたファイルをコンパイルしてやる必要があるのですが、これはコマンドプロンプトから命令を与えるので、毎回Javaのデータがあるディレクトリまで移動する手間を省く為に任意のディレクトリから開始するよう、コマンドプロンプト環境変数の設定を行います。コマンドプロンプトのプロパティから"作業フォルダ"にJavaのファイルを入れているディレクトリまでの絶対パスを貼り付けます。

それでは準備が整ったので基本の出力を行うプログラムを書いていきます。

今までに触れてきた言語と違ったのはJavaでは最初にクラス宣言を行うこと。そしてそのクラス名はファイルの名前と同じでなければならないという点です。例えば'Hello.java'という、'Hello'という文字列を画面に出力するファイルの中身は、


        public class Hello {
          public static void main(String[] args){
            System.out.print("Hello");
          }
        }
      

このようになります。
public class Hello がクラス宣言です。

初めてのJavaは面白かった

これまでにProgateなどの学習サイトで幾つかの言語に触れてきましたが、コンパイラ型の言語は初めてでした。いきなりクラス宣言から入るところや、厳密にデータ型が決められているところなど、書き方の違いから多少戸惑うこともありましたが楽しくプログラムを書くことができました。特にプログラムに間違いがあるとコンパイルする際にエラーになり、コマンドプロンプトからエラーメッセージを吐かれるのが新鮮でした。エラーメッセージも今回設定した環境では日本語で返してくれるのでとっつきやすく感じます。プログラミングは思い通りにいかない時にあれかこれかと考えて、上手く行った時の達成感が醍醐味ですね。

また、Javaを教えてくれる講師の方も面白い方です。JavaScriptが6回目の講義で初めてif文に入ったのに対し、初回にしてif文とfor文を使った分岐処理,繰り返し処理を一通り試してしまいました。これから難しくなってきた時に置いて行かれないように予習と、このブログを活用して復習の両方をしっかりしていきたいと思います。

最後に

ここまで読んでいただき誠にありがとうございます。もし内容や言葉の使い方等の間違いがありましたら、ご指摘いただければ幸いです。

次回は私が受けているハロートレーニングという制度について書いていこうと思います。

ハロトレ2週間生

受講から2週間が経って

ハロートレーニングの序盤で行われたこと。

講義を受けだしてから2週間が過ぎました。この間に学んだことを少し整理したいと思います。
まず、ハロトレではプログラミング技術のみを学ぶ訳ではありません。ハロトレの前提に置かれているのは「能力開発によって受講者が職に就けること。」です。したがって、カリキュラムの中には就職活動に関する講義やキャリア相談等の日程が少なく無い時間用意されています。ですのでこの2週間はバリバリとコードを書くのではなく、オリエンテーションを含めながらゆっくりとプログラマになるための準備を始めることになりました。

ハロトレの独特な部分

ハロトレは厚生労働省が出している政策の一部である「公的職業訓練」です。私の受けている講座では、実際に講座を提供しているのは都道府県から委託を受けている民間の教育機関ですが、やはり相応のお役所感を感じることがあります。この項目では、ハロトレのその独自性のようなモノを感覚レベルで紹介していきたいと思います。

全員(講師含む)にwindowsが貸し出され、自前のPCで作業することは認められない

私は普段Macbookを使用しており、かれこれ8年ほどmacOSを利用しています。前職ではwindowsを使ってましたが、単純な入力作業程度しか行わなかったので特に不便に感じることはありませんでした。しかし、こと開発に使うとなると慣れない道具では小さな所で色々と使い辛さを感じてしまいます。特に文字入力に関して、カーソルの左1文字を消す(control+H)といったショートカットが効かないのが悩みです。タイプミスが多いのでホームポジションから殆ど指を動かさずに済むこのショートカットは相当の頻度で使っているのですが・・。エディタ側の設定でどうにかなるんですかね。カーソル移動なんかもよく使っているので早い内に解決させたい問題です。

エディタはサクラエディタ

決してサクラエディタが悪いと言っている訳ではありません。玄人の方からするとシンプルが故に最強なのかもしれません。ただ、他のエディタじゃなくサクラエディタなのがハロトレっぽいなと感じた点です。講師の方々は我々にドキュメントタイプ宣言から</html>まで手書きするように仰います。その内テストでちゃんと書けるか確認されるそうです。私は「せんげん」と入力したらガサッと数十行のコードに変換するようユーザー辞書に登録しているので、練習しておかないとミスしそうです。そういえばwindows のユーザー辞書はこの登録が出来ませんでした。どうも文字数がかなり制限されているようですね。
講義の序盤はそれなりの時間を割いて全員で一緒にエディタの設定などを行いました。

順番に日直が回ってくる。

受講生に出席番号のようなものは割り振られていませんが、五十音順に順番で日直を回しています。この日直が何をするかというと

  • 号令をかける
  • 朝一番の始業前にスピーチを行う
  • 終業後に教室の清掃をする

の、3点です。

まず、号令について。号令は午前、午後の講座のそれぞれ最初と最後に号令がかけられます。平凡な「起立、礼、<お願いします。全員>着席。」です。挨拶は大事ですね。

朝のスピーチは一応のテーマが決められています。「プログラミングに関係する技術の話」など、勉強に関するもの。もしくは「就職活動に関する話」です。このスピーチには面接対策という側面があるようで、人前で話すことに慣れる為、面接で使えるエピソードをストックする為にこのような機会が与えられています。

清掃に関しては言うまでもありません。教室はみんなが気持ちよく使える空間にしましょう。

このように、ハロトレでは社会人としての意識を持つように幾らかの決まりが定められていたり、もしかしたら民間のプログラミングスクールとは少し違うかもしれない点があります。

HTML5,CSS3,JavaScript

オリエンテーションやエディタの設定が終わると、HTMLの基本的な書き方について学んでいきます。ドキュメント型の宣言に始まり、基本的なタグの使い方、可読性を上げるインデントの意味などを教わっていきます。一定HTMLを書くと並行してCSSについても説明を受けていきます。コードを書く際は講師の方がプロジェクターで前に画面を映し出し、それに倣って受講生が入力していく形です。ひとつひとつ確認しながら進めていってくれますし、うまくいっていない人は先生がコードを見てくれるので取り残される心配はなさそうです。護送船団方式ですね。

講義は言語によって講師が変わります。HTML,CSS,PHP担当の人は、元々この講座の卒業生とのことです。年齢は自分より少し上ぐらいですが、どうやら卒業後に仲間たちと一緒にWEB制作会社を立ち上げたそう。憧れてしまいますねぇ。人のサクセスストーリーを聞くと気合が入ります。

講師の方たちは今やっていることが実際の制作現場でどう言う風に使われているかや、今の主流になっている書き方なども絡めて話をしてくれるので興味深く参考になります。その中でも自分にしっかり言い聞かせたいのが、実際にコーディングを始める前に、サイトマップやワイヤフレームを作っておきましょう。最初にイメージができていないと、作成途中でいろいろと手直ししなければならなくなり余計な工程が発生します。という話。これは本当にそうですね。私はよくエディタのライブプレビューを接続しながら「ここはこうしてみよう。こんなのもいいかも!」と、無計画に行き当たりばったりなコーディングをして、後々見直した時に「修正めんどくさー。」となったことが何度もあります。「HTMLでしっかりマークアップしてからCSSをあてる。」って言われても、マークアップしてるそばから「これはこの色でこう配置して・・。」と考えてしまうので、すぐにCSSと行ったり来たりになってしまいます。まぁ、こんなミーハーな楽しみ方できるのは最初だけでしょう。その内、光りの無い瞳でもって無表情にコードを眺めることになるのでしょうか・・。
あと、パスの通し方で初耳だったのは「なぜ相対パスを使うのか。」ってこと。参考書がそうだからなんとなく相対パスを使っていましたが、絶対パスで指定することの問題とは? 絶対パスの弱みは、その場所から動かすと途端に読み込めなくなること。例えばファイルの入ったフォルダをデスクトップに持ってきたりするとその時点で読み込めなくなってしまいます。かなり上層に入るようなファイルでない限り、フォルダごと移動させることなんてのは普通にすることだと思います。これが相対パスなら、フォルダの中の関係性が変わっていなければ、フォルダが移動してもパスを修正する必要がありません。意識してなかったけど、確かにその通りですね。聞くと当たり前だけど、いきなり「どうしてそうなってるのか?」と聞かれたら答えられなかったかも。
JavaScriptに関しては現時点では余り進んでいません。HTML,CSSと並行してJavaScriptの講義も行われるのですが、ある程度HTML,CSSが進まないとJavaScriptが教え辛いので、進行を待ちながらITパスポートや基本情報技術者といった資格の話や、IT関連の専門用語などを教わります。しばしば脱線しつつ話してくれる、技術やハードの歴史的な変遷であったり周辺的な知識も教わります。
結局JavaScriptはconsole.log, alert, promptでダイアログを出すところまでとなりました。

感想

独学ならもっと早く進むと思う

私はこのハロトレの前から独学していた期間があるので、現時点のほとんどは知っていることの復習となってしまいました。そもそも、ゼロから学び始める人を想定しているのでそこに合わせて講義が進められるのは当然でしょう。ですが、かなり初歩的な「ctr+cでコピーできます。」といった説明があるとつい「パソコン教室かな?」と思ってしまいます。自分の悪いところだ。態度に出ないように気をつけよう。
結論として、講義は全員で一緒に進むのでどうしてもペースが上がらない為、独学の方が学習は早く進むと思います。もちろん、回り道で参考書に書かれていない話も聞けているので単純な比較にはなりませんが、ある程度できる人なら同じ時間独学したらもっと先のレベルに取り組んでいることでしょう。実際、思ったよりも結構ゆっくり進むので「ほんとにこんなペースでやっていて、就職できるレベルまで成長できるのかな〜。」とも感じてしまいます。ですがまだ始まったばかり。今は抑えるところはしっかり抑えなきゃダメだから時間をかける必要があるけど、技術的には簡単だから学習は進むというフェーズかと思います。基本が終われば今後は加速的に進んでいくことなるでしょう。予習復習を欠かさず、クラスで頭一つ抜けることを目標に頑張りたいと思います。

最後に

ここまで読んでいただき誠にありがとうございます。もし、言葉の使い方等、間違いがあればご指摘いただければ幸いです。

次回はまた講義の進捗について記事を作成していきます。

ハロートレーニングが始まりました。

 皆さんこんにちは。ハロートレーニングのWEBプログラマー養成コースを受講し、WEBエンジニアへの転職を目指しているJean(ジーン)と申します。このブログではハロートレーニングを受講しながら、講義から得た知見や気づきをリアルタイムにアウトプットしていきます。IT分野に興味を持っていて転職を考えている方にとって、制度を使って転職を目指す人間の軌跡が参考になれば幸いです。

ハロトレ初日

 まず、はじめにトレーニング初日は開講式というものを行います。ここで施設案内や講義のカリキュラムの説明、全体の流れについて確認します。また、初日なので受講生同士で簡単な自己紹介を行いました。今回のクラスでは受講者は10数名。募集に対して若干名の定員割れを起こしているようです。年齢は幅広いですが、平均を取るとおそらく30代半ばから後半にかけてでしょうか。高校を中退した後にプログラミングに興味を持ったという未成年の受講生がいて驚きましたが、それ以上に定年間近になって新しくプログラムを学ぼうとしている女性もいて、そのチャレンジ精神に圧倒されてしまいました。新しいことに取り組み、新鮮な考え方を持っている人は見た目にも若く見えます。自分としてもマンネリ化せず、常にフレッシュでありたいものです。

以上が午前中の内容になります。

ハローワークの人が色々喋る。

 午後からは就職活動の際の心構えやマナーについて説明を受けます。ことに、我々が受けているのはWEBエンジニアコースなので、講師がこれまでに聞いた様々な「デスマーチ」の存在をほのめかしてきたりと、なかなかスパイシーな説明です。

ここで、得た教訓を一つ。「講義が始まる時から自分の目指したい方向性を意識しておくこと。」です。今回の講義では、HTML,CSS,JavaScript,PHP,Java,MySQL等と、半年間のカリキュラムの中で様々な言語を学びます。限られた時間で成果を出すには、自分のやりたいことを明確にしてそこに向かっていく必要があるでしょう。また、初期から積極的に企業の採用情報を見て、入りたい企業が使用している技術が何なのかを把握しておくことも重要だと教えていただきました。半年間の講義、最大限自分の能力を伸ばせるように頑張っていきたいと思います。

今日の講義内容は以上になります。この日は技術的な内容には入っていきませんでしたが、明日は「HTML,CSS概論」について学んでいきます。

駄文でしたが読んでいただきありがとうございました。