目的を達成するためには手段を選ばなくない

「目的を達成するためには手段を選ばない」という言葉ってよく聞きますね。

僕は今回、それとは真逆の

「目的を達成するためには手段を選ばなくない(=選ぶ)」ということについて考えてみた。

 

僕は大学の時、教師になるかどうか悩んだ時期があった。

教師になりたいと思った動機は、子どもに今後の人生で良い影響を与えたいという思いからだった。

これまで僕自身が出会ってきた先生の中で、魅力的な先生もいれば、正直どうなんだろうと思う先生もいた。

もちろん、自分にとって悪いと思った先生が必ずしも他の人にとって悪い先生というわけではないけれど、

生徒に良い影響を与えられる先生というのは、どこか型破りな印象があった。

僕自身、型破りな人が好きという性格だと言われればそれまでなのだが、

おそらく、ある種特殊な経歴を持っている先生に惹かれる生徒は多いはずである。

 

僕は型破りな先生になりたかった。

 

先生でありながら、先生らしくない先生。

 

例えば、学校のおかしな点をきちんとおかしいと言えること。

それに付随した確固たる根拠と信念を持ってること。

 

思えば、高校の時に出会った先生がまさにそういった先生だった。

自分の教育信念を持っていて、それを貫く。

卒業した時、「あの先生の教育を受けてよかった」と思える先生である。

 

 

さて、話が脱線ぎみなので、本題に戻そうと思う。

 

「目的を達成するためには手段を選ぶ」

 

僕は子どもに良い影響を与えられる大人になりたいという気持ちから、

卒業後は海外で働くことを目指した。

自分自身が一番成長できるフィールドは、好きなスポーツに関わる仕事で、なおかつ日々挫折と新たな体験を味わえる環境だと思ったからだ。

 

実際、そのような環境に身を置くことは自分にとってプラスになることは今も信じて疑わない。

 

ただ、自分が海外でスポーツに関わる仕事をしたいとなった時に、それを達成するためにどんなことが必要なのか、どんなことをクリアしていけばいいのかということが明確に頭の中で描けていなかった。

 

目的達成までの道のりをイメージできないことは想像以上にしんどい。

闇雲にゴールの方向がわからないまま進み続けている感覚。

情報を集めても、明確な方向性を見出すことは結局できなかった。

 

そこで思った。

 

自分が成し遂げたかった目標は海外でスポーツに関わる仕事をするということではなかったはずだ・・・

 

良い影響を与える"教師"になるため・・・

 

いや、違う・・・

 

根本にあったのは、子どもに良い影響を与えたいということだった。

 

目的はあくまで、子どもに良い影響を与えること。

そのための手段は海外で働くことや教師になることだけではない。

本来、もっといろんな可能性があるのだ。

 

僕は、手段を目的と見間違っていた。

いつの間にか教師になることが目的となり、さらに、そのための手段であったはずの海外で働くことが目的になっていたのだ。

だから、本来の目的を達成するための手段をややこしくしてしまった。

 

 

僕は現在、ITの力で子どもに良い影響を与えていきたいと思っている。

目的は変わらず、

手段はITに変わった。

 

そこで気づいたことがある。

 

手段は明確で、なおかつ進歩が感じられるものの方が良いということ。

つまり、積み上げることによって、目的の達成に近づいていることを実感できるものを手段にするべきだということだ。

自分が正しい努力をしているのかをわからないまま進むのはギャンブルにちかい。

 

ただ、そのような考え方で手段を選択した場合、危険なこともある。

それは、「誰もが考えつく可能性がある」ということだ。

誰もが考えつく可能性があるということは、必然的に競争率も高くなる。

 

人と違った手段を選ぶことで、目的の達成に近づくという側面もある。

 

手段を選ぶ際には、人と違った手段を選択する方が良いということもいえると思う。

 

他にも手段を選ぶ要因は、手段として今後も有効であるか、適切であり続けるかといったことも考えられるが、

とにかく目的を達成するためには手段を選ぶべきだと思う。

 

どこに力点を置くかは人それぞれだが、

積み上げることができるかどうかということに力点を置くのがよいと思う。

教師になることをやめ、文系からIT系に進んだ理由

EdTechという言葉

僕自身が興味のある言葉の一つに「EdTech」という言葉がある。

Education(教育)×Technology(テクノロジー)の造語で、

明確な言葉の定義というのはないそうだが、

簡単に言うとITの技術を教育に取り込むという意味だ。

 

例えば、英語教育を例にすると、オンライン英会話。

また、生徒の成績を管理したり、授業で電子黒板を使うといったことも広義ではEdTechに含まる。

 

 

学校の先生になるということ

僕は学校の先生になることが夢だった。(今でもなりたいという気持ちは持ち続けている)

しかし、学校教育の現状を考えると一教師として変えられることに限界を感じている。

教師としての裁量権に限りがあるということもあるが、

外的要因に影響を受けやすい学校教育に対する疑問もある。

 

もちろん今でも学校の先生になりたいという気持ちは持ち続けているので、

教師という職業に魅力は感じています。

学校の先生になることのメリットは、被教育者(=生徒)との距離が近いことだろう。

自分が責任と信念を持って子どもと接すれば、その変化・成長を肌で実感できる

実に魅力的な職業だ。

 

 

教育にITを持ち込む危険性と可能性

社会は急速にIT化が進んでいる。

自動運転車も試運転を開始したし、

ロボットの開発も進んでいて、これからますます人間が行う仕事をロボットが代替するということが増えてくる。

これは疑いようのない事実だ。

人間がこれまで手作業でやっていたことを機械がやってくれるということはますます増えていくだろう。

 

一方で、僕が懸念しているのは教育にITがなだれこんでくること。

極論を言うと、Face to Faceの授業がなくなり、機械学習のみになってしまうこと。

(例えば、)e-Learningはある特定の分野に限っては良いのかもしれない。

 

ただ、Face to Faceのスタイルは残した方が良いと思う

 

部活動でみっちりとしごかれて精神的に鍛えられたり、

良い先生と出会うことで価値観が変化したり、

こういった経験は対人である方が効果があると思う。

 

その反面、機械化できる余地もまだまだ残っている。

例えば黒板。

先生が必死に黒板に書いたことを生徒が写す。

現実の社会では、プレゼンテーション・講義・会議を行う場合にはプロジェクターを使うなりして、PCであらかじめ用意されたものを使う。

その方がはるかに効率的だからだ。

 

学校の先生が一つの授業で板書に使う時間はおよそ10分と言われている。(もちろん、教科や内容による差はある)

実際、黒板に書かれた文字を生徒が写す時間も含めると相当な労力である。

これを毎授業繰り返す。

理由は「そういうものだから仕方ない」。

この10分を「仕方のないもの」だととらえるのか、

それとも、「この10分を他のことに使えば、子どもたちのためになることができる」ととらえるのか。

 

僕が考える理想のEdTech

僕は前述したような「無駄(=非効率的なもの)」はどんどんITで効率化するべきだと考えている。

なぜなら、効率化することで産出された時間を他の活動に充てることができるからだ。

 

その一方で、学校教育の「対人」であることによるメリットは残すべきだと思う(たとえそれが非効率だと感じられても)。

 

また、学校教育に多くを求めすぎないという姿勢も大事だと思う。

家庭教育・地域教育が昔と比べて衰退してきた(と言われている)ことが学校に重責を担わせる要因だとは思うが、

当然のことながら教育の責任は学校だけのものではない。

 

大人の責任だ。

 

これからの時代、子どものうちからITサービスを利用するということがどんどん当たり前になってくると思う。

そうなった時に、EdTechにはこれまでの教育的な観念とはまた違った形での教育力が求められると思う。

さまざまな切り口があるし、ITは開かれている(誰でも自由に参画できる)から可能性が大きい一方でそれだけ影響力も高い。

 

だからこそ、真に求められていることを感じ取り、リスクを勘案したうえでサービスを開発しなければならない。

そこには責任も伴う。

 

僕は、学校教育ではカバーしきれない部分をEdTechでカバーしていきたい。

意欲のある子どもが飛び抜けられる環境を作ってあげたい。

自信をなくした子どもが自信を取り戻し、奮起できるようなサービスを作りたい。

 

責任と信念を持っていれば、教育に良い風を吹き込むことも可能だと信じて進む

EclipseでWebアプリケーション開発

環境構築も残すはMySQLのみとなりましたが、しばらくはデータベースを使う予定はないので、とりあえずはWebアプリケーション制作にとりかかり始めたいと思います。

 

以下、使えそうなサイトのリンクを貼っていきます。

プロジェクトの作成-サーブレット(servlet)入門:IT TRICK

Eclipce を使用した簡単な Java サーブレットの作成

MacでWebアプリケーションを作るための環境構築法(Eclipse JavaEE IDE for Web Developersを日本語化し、TomcatとMySQLの設定まで)

プログラミングをやっていて、一番面倒で、かつ、つまずいてやる気を削がれる作業・・・それが「開発環境の構築」だと思います。

今回はMacEclipseを使った開発環境の構築についてまとめてみます。

以下のような方に参考になるかと思います。

 

想定読者

  • Macで開発している
  • 無料で開発からテスト、実行までをできる開発環境を整えたい
  • Pleiadesをダウンロードしたけど、Windowsじゃないので開けない
  • exeファイルが開けなくてつまずいた
  • Eclipseを日本語化して使いたい
  • Webアプリケーションを作りたい
  • JSP&Servletで開発したい
  • TomcatEclipse上で動作させるようにしたい
  • MySQLを使いたい

(なお、上記は数時間前の僕の状況です・・・ようやく解決したので、同じ悩みを持つ方が一人でも減ればとの思いで書いていきたいと思います。

 

TomcatプラグインなどをEclipseに設定。Eclipseを日本語化する。

まずはプラグインの設定とEclipseの日本語をおこなっていきます。

Windowsの場合ですと、Pleiadesをダウンロードすれば全てが解決することになる作業です。

Macの場合、Pleiadesのexe形式のファイルが開けないため、Pleiadesの中身を「Eclipse JavaEE」に移していく作業になります。

(なお、著者の開発環境はOS X El Capitanです。)

 

1)「Eclipse IDE for Java EE Developers」(64bit版)(以下Eclipseと呼ぶ)をダウンロード 

Downloadサイト:Eclipse Downloads

 

 

2)「Eclipse 4.5 Mars Pleiades All in One」(以下Pleiadesと呼ぶ)をダウンロード

Downloadサイト:Eclipse 日本語化 | MergeDoc Project

 


3)それぞれ解凍(EclipseをApplications、Pleiadesをデスクトップにそれぞれ保存)

 

以下(4)〜(6)で注意してほしいこととして、ファイル・フォルダをコピーする際にはPleiadesの方のdorpins(features,plugins)をそれぞれ開いて、中身を全選択→コピペでコピーするようにする。(dorpins,features,plugins)をフォルダーごとドラッグ&ドロップしてもうまくいきませんでした。


4)pleiades/eclipse/dropins の全てのファイル・フォルダをContents/Eclipse/dropins にコピー



5)pleiades/eclipse/featuresの全てのファイル・フォルダをContents/Eclipse/featuresにコピー



6)pleiades/eclipse/plugins の全てのファイル・フォルダをContents/Eclipse/plugins にコピー



7)Contents/Eclipse/eclipse.iniをテキストエディタで開き、末尾に、
-Dfile.encoding=UTF-8

-Xverify:none

-javaagent:../Eclipse/dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

を追加

-javaagentに関してはフォルダーの構成によって若干違ってくる場合があるようです。以下のように設定するというサイトもありました。

-javaagent:../../../dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar



この状態で通常通りダブルクリックで開こうとしてもできません。

初回起動時のみ、ターミナルでクリーンな起動をする必要があります。


8)ターミナルで、
/Applications/Eclipse.app/Contents/MacOS/eclipse -clean

と入力する

 

 

これでEclipseの日本語化やプラグインなどの設定は完了しました。

この状態でもWebアプリケーションの開発自体はできないこともないのですが、開発したものを実際にサーバで動作させて確認するためにTomcatの設定を行っていきます。

 

 

Eclipse上でTomcatを使えるようにする

Tomcatの設定をおこなう上で以下のサイトを参考にさせていただきました。

Eclipse, Tomcatの環境構築(mac) - statbird

また、後述するMySQLの設定も含めて、以下のサイトも参考にさせていただきました。

Eclipse + Tomcat + MySQL 環境設定 for Macの両方の手順書 | asklife

ちなみに上記のサイトではプラグインのインストールについて書かれていますが、それはPleiadesの中身を移行していく手順の(4)〜(6)あたりで既に終わっているので無視してください

 

1)Tomcatをインストールする

以下のリンク先で「7.0.65」の「Binary Distributions」の「Core」の「tar.gz」をクリック

(2015/11/9 現在の最新版である「8.0.28」はEclipseで未対応のため「7.0.65」をインストール)

Apache Tomcat - Apache Tomcat 7 Downloads

 

2)解凍して、Applications直下に移動

「Finderで表示」→Applicationsにドラッグ&ドロップして移動

 

3)ターミナルでコマンド入力していく

  1. cd /Applications/apache-tomcat-7.0.65/bin
  2. chmod +x *.sh
  3. ./startup.sh
  4. ウェブブラウザでhttp://localhost:8080/と入力して猫が出てくるか確認
  5. ./shutdown.sh

4の操作で猫が表示されればうまくいったことになります。なお、説明の煩雑さから、詳しいコマンドの意味については省略します。これらのコマンドにより、Tomcatのセットアップが完了します。)

 

4)EclipseTomcatの設定をする

 Eclipseのメニューから「環境設定」→左側のリストから「Tomcat」を選択

   Tomcatバージョン:バージョン7.x

   Tomcatホーム:/Applications/apache-tomcat-7.0.65

   コンテキスト宣言モード:Server.xml

   設定ファイル:/Applications/apache-tomcat-7.0.65/conf/server.xml

「適用」→「OK」

 

Eclipseのメニューから「環境設定」→左側のリストから「サーバー」→「ランタイム環境」→「追加」

   「Apache Tomcat v7.0」を選択、「次へ」

   「/Applications/apache-tomcat-7.0.65」を参照から選択、「完了」

 

これでTomcatの設定も完了しました。

これでWebアプリケーションを作る上での最低限の準備は整いました。

 

ここからさらに、大量のデータを格納しておくためのDB(データベース)を使ったWebアプリケーションを使おうと考えている場合は、MySQLのインストールをします。

 

ここで問題が発生!

先日、OSのアップデートをしたばかりで、MySQLの最新版(対応するバージョン)がまだ出ていないということでダウンロードを断念しました、、、。

繰り返しになりますが、下記リンクがとても参考になります。

Eclipse + Tomcat + MySQL 環境設定 for Macの両方の手順書 | asklife

 

 

以上で、MacでWebアプリケーションを作るための開発環境の構築についての説明は終わりです。

環境構築でつまづいている人が一人でも救われますように。

 

 

【追記1】

EclipseTomcatを起動しようとすると、

「ローカル・ホスト の Tomcat v7.0 サーバー で必要な幾つかのポート (8080, 8009) がすでに使用中です。サーバーはすでに別のプロセスで稼働中であるか、システム・プロセスがそのポートを使用中である可能性があります。このサーバーを始動するには、他のプロセスを停止するか、ポート番号を変更する必要があります。」

というエラーメッセージが表示される場合があります。

 

このエラーメッセージが表示された場合、

3)ターミナルでコマンド入力していく のコマンドを一通り入力すると解決することを確認しました。

どうやら原因は、Tomcatがしっかりと停止していなかったことのようです。

./shutdown.shコマンドがしっかりと起動できていることを確認してみましょう。

「話が長い」「要件を簡潔にまとめて」と言われた時に考えたこと

昔からよく言われることだが、話が長いと言われる。

塾講師や家庭教師をやっていて、子どもに勉強を教える場合には、ゆっくりと相手が理解しているか確認しながら話すのは良いことだ。

 

しかし、最近、プログラミングの勉強をしていて「どんなところを勉強していますか?」とか「○○はどういう意味ですか?」と聞かれた時に、ついつい0から100まで話したくなる。

 

ある意味、自分の頭の中で、自分自身に対しても説明しながら話しているのである。

 

仕事をする上で、意識しなければならないことの一つに時間がある。

限られた時間の中でどれだけ生産性を高められるか。生産効率が求められる。

そのような状況では、0から100まで話していては相手にとっても自分にとっても組織にとっても時間の無駄だ。

相手が50までわかっているのなら50から100まで話せばいいし、相手が何もわかっていないなら0から100まで説明する必要がある。

逆に、相手が100までわかっているなら説明する必要はない。

 

どれだけ話を簡潔にできるかは、言い換えれば、どれだけ相手の力量を見極めることができるか、その上で、要点を分かりやすく伝える力が求められる。

 

相手によって説明の仕方を変えるためには、

  1. 自分自身が説明の対象(例えばプログラミングの知識など)について理解していること
  2. 相手がどこまで理解しているかを見極めること
  3. 伝わりやすい順序・言葉遣いで話すこと

の3つが求められる。

 

逆に言えば、自分が何かの説明を受けるときはもしかしたら相手は自分の力量を見誤る可能性があるということも併せて考えておかなければならない。

「わからないことに対しては、ツッコミを入れて聞く」、「わかることを長々と説明されたときは、わかっているということを伝える」。

この2つの姿勢も忘れないようにしたい。

「Android StudioのAndroidエミュレータが重い」を治す方法

今日からAndroidアプリ開発に向けて本格的に開発環境を整え始めました。

以前はEclipseでの開発が主だったらしいのですが、2014年12月からAndroid Studioという統合開発環境(IDE)が正式にリリースされ、現在ではこちらが主流になっているそう。

 

今回は、Android Studioの開発環境を構築していく上でぶちあたるであろう「Androidエミュレータが重い」という問題の解決方法にフォーカスして書いていきたいと思います。

Mac OS X El Capitan上での環境構築です。おそらくWindowsにも当てはまると重いますが・・・。)

 

 

まず、作成したアプリを動かす場合、

  1. 実機(Android端末)で動かす
  2. Androidエミュレーターで動かす

の2つの方法があります。

2の方法を選択した場合、動作が重いという問題に悩ませられると思います。

デフォルトですと、エミュレーターを起動してから数分待たないと画面遷移してくれません。

 

この問題を解決するために「Intel x86」設定を行います。

その方法については下記がわかりやすくまとまっていて参考になります。

saku-java.be-ourselves.jp

 

その中で、「HAXMインストーラー」がダウンロードされている場所(=ディレクトリ)について書かれている部分があると思います。

 

/Applications/Android Studio.app/sdk/extras/以下省略

 

の部分です。

このディレクトリはどうやら環境によって違うらしく、僕の場合は以下のようになっていました。

 

/Users/ユーザー名/Library/Android/sdk/extras/以下省略

 

Macの場合、Finderから探すことになりますが、

  1. Usersが見つからない
  2. Libraryが見つからない

といった問題に直面するかもしれません。

まず、1.Usersについてですが、これは

 

 「Finder」→「Macintosh HD」→「ユーザ」

 

からいけます。

Usersではなく「ユーザ」となっているところに注意です。

 

しかし、ユーザを開いてもLibraryがないはずです。

実は、Libraryはデフォルトで非表示設定になっているようです。

そこで、Libraryに行くためには・・・

 

「Finder」を開く→メニューバー(画面上)の「移動」→optionボタンを押す

 

すると、「ホーム」と「コンピュータ」の間に「ライブラリ」と表示され、

そこから「HAXMインストーラー」に辿っていくことができます。

参考: https://helpx.adobe.com/jp/x-productkb/global/cpsid_91195.html

 

 

これでエミュレータがサクサク動くようになりました。

これまでEclipseしか扱ったことがなかったので、Android Studioにいち早く慣れていきたいと思います。

Android Studioを日本語に変換する方法もあるようなので、後ほどやってみたいと思います。

モチベーション管理アプリ

今年中にアンドロイドアプリを一つ作ることを目標にしていましたが、その概要を決定しました。

勉強のモチベーションを管理するアプリです。

詳しい内容については完成してからのお楽しみですが、アプリ制作から公開までの流れをつかめれば良いかな〜と思います。

Webアプリケーションについても、同様のものを作っていこうと思います。

 

アンドロイドアプリ開発の基礎の基礎の本を購入したので、今週一週間は、帰宅後、それをメインに勉強していこうと思います。