お知らせ

  • パソコン関連

プログラミング教育

noimage

プログラミング教育

このところ、プログラマやSEなどエンジニア職以外へのプログラミング教育がよく話題になっています。 義務教育内のプログラミング実習など国内でも多く取りざたされています。 プログラムを実際に作成する職種以外の方がプログラミングを学ぶことにどういった意味があるのでしょうか。 プログラミング、と言って最初に思い浮かべるのが、様々な言語の名前、JavaやC言語、Javascriptなどとっつきにくいという第一印象を持たれることが多いです。 ですがプログラミングで重要なことは、論理的なフローを考えて、それを構築するという考え方です。 演算と繰り返し処理と条件分岐の正しい設定がプログラミングの根本的な部分であり、それを覚えることはプログラムを作成する上での効率的な物事の進め方につながります。 条件分岐は例えばエクセルの関数の処理でも書くことができ、手作業でやっていた事柄も大幅に効率化が可能になることもあります。 これらを学ぶうちにわかることは、特に条件分岐においてプログラム作成時のエラーが発生することです。 パターンが多くなると例外が発生したり二重に計算を行ってしまったり、条件のとりにがしなどが発生しやすく、またそれら全パターンのテストを網羅しなければ顕在化しないということがわかります。 作成時は完璧に動作すると考えられたものでもきっちりとテストをしなければ、データが壊れてしまう、あるいは誤ったデータを信じて利用してしまうことも考えられます。 プログラムを学ぶうちにそのようなフロー作りの中で、人間の犯しやすいミスを学習することができます。 これらを学ぶことで実際にプログラム作成の業務に携わらなくとも、手近なツールを用いて業務などを効率化する考え方を手に入れることができます。

  • パソコン関連

JavaとJavaScriptの違い

noimage

JavaとJavaScriptの違い

JavaとJavaScript、同じようにJavaとついているし、JavaScriptとJavaは同じもの?派生?省略形?など、はっきりした区別はつきにくいと思っている方も多いかもしれません。 同じもののように見えるこの二つのプログラミング言語ですが、Java誕生のからの動向を知っている筆者には同じものには全く見えないので、違いを説明して欲しいと言われると何から説明していいのか、と戸惑ってしまうぐらいに違います。 Javaとは 先に誕生したのはJavaで、SunMicrosystems(今はOracleに吸収合併)によって開発、リリースされました。 Javaの基本的な思想はWrite Once, Run Anywhare、一度プログラムを書けば、どんなパソコン、ワークステーション、サーバー、モバイル機器でも動作する、を目指すものです。 動作するパソコン、ワークステーション、サーバー、それぞれが異なるOSや、ハードウェア構成になっていますが、それをJava仮想マシンという仕組みが差異を吸収し、同じようにプログラムが動作すること、これは大々的に注目されることになりました。 専門的になりますが、Java専用に設計されたコンピュータの仕様を作成し、それを個々のOSの上に構築するのがJava仮想マシンです。 このJava仮想マシンが構築できる環境であれば、パソコンの枠にとらわれずどの機器でもJavaで作成されたプログラムを動作させることができる、というものです。 わかりやすく現在の例に例えれば、Androidスマホ、iPhone、パソコン、同じ内容のアプリでもそれぞれに合わせて作成する必要があります。一つの目的に対して3つのプログラムを作成する必要があります。 これを一つのプログラムを作成すれば、どの機種でも動作するなら、プログラムコード作成、テストの工程はおよそ1/3まで圧縮されます。 画期的です、これがJavaです。センセーショナルな登場でした。 当時はスマートフォンは影も形もありませんでしたが、 Windows、Mac、Linux、そして開発元のSunMicrosystemsのSolaris、それぞれで同じプログラムで動作するアプリが作れるのです。 ただ、機種に依存したフル機能が使えないということで、パソコンで動作するクライアントアプリについては選択肢の一つ、という存在感です。 AndroidはGoogleが開発したJava仮想マシンが搭載されていて、アプリはJavaで開発し、動作するようになっています。 JavaScriptとは JavaScriptはNetscapeというブラウザに搭載された、Javaのような文法で開発できるスクリプト言語としてリリースされました。 スクリプト言語とはプログラミング言語の中でも容易に開発できる手軽さと素早さを求めるものです。 スクリプト言語にはコンパイルというプログラミング言語で書かれたテキストを、機械語に翻訳する工程が必要ありません。 コンパイル言語はコンパイラが正しい機械語コードを出力して初めて動作しますが、スクリプト言語はテキストを作成すればそれをそのまま実行することができます。 Javaのような文法で書ける、ということ以外、Javaらしさはありませんので、どう同じに見ればいいのかわからない、と筆者は思ってしまう原因になります。 JavaScriptの興隆 JavaScriptは仮想マシンでなくブラウザに搭載されたスクリプトエンジンで動作し、基本的にブラウザの中でのみ動作するものです。 WWW(ワールドワイドウェブ)が普及し、ブラウザ上で動作するアプリケーション、ウェブアプリには熾烈な競争が生まれました。 Webサイトにアクセスして、そのままアプリケーションが実行できるとすれば、CD-ROMによる配布やインストールなど利用開始するための様々な手順を省略し、誰でもすぐに使い始めることができるからです。 JavaScript登場当時、JavaによるJavaアプレット、Internet ExplorerのActive X、AdobeのFlashなどが鎬を削っていました。 JavaアプレットやActive Xはパワフルで、パソコンで直接に動作するアプリケーション(ネイティブアプリ)のように振る舞うので、官公庁、大企業始め、様々なところで活用されました。 Flashは主に画像、動画などを得意とするメディア系、JavaScriptはGoogleがGmailなどで実用アプリなどを、SNSなどのネットサービスが採用して作成している、という大まかな枠組みがありました。 Active Xは機種依存性が強く、JavaアプレットやFlashは各ブラウザに対応したプラグインが必要、JavaScriptはスクリプト言語ゆえに簡易なものが中心、というそれぞれにデメリットがありました。 その中でHTML5規格が正式化してブラウザで表現できるものが一気に広がり、主にWebkit系のブラウザであるSafari、ChromeがJavaScriptエンジンを発展させ、最終的にスマートフォンの普及が大きくそのバランスを崩しました。 Javaアプレットを動作させるプラグイン、Internet Explorerでしか動かないActive X、Flashプラグイン、これらすべてを持たないスマートフォンのブラウザが数年で数十億台出荷され、ブラウザアプリはJavaScriptの一強となりました。 JavaScriptはそのスクリプトエンジンの強力化によって、Google Appsなどの業務で実用に耐えうるものを生み出すまでになり、ウェブアプリ開発の主流となっています。 Javaの立ち位置 Javaを実行するJava仮想マシンは、非常に堅牢な造りとなっていて、強力で安定的なアプリケーションやサーバを開発することができます。 またオブジェクト指向など言語の設計が新しいのもあり、ガーベージコレクションなどによって旧来の言語から複雑な部分を取り除きプログラマの負担を減らすことにも力を入れています。 JavaコンパイラがJava仮想マシン用の機械語コードを作成しますが、このJava仮想マシンを高度に実装すれば、堅牢かつネイティブのアプリケーションとほぼ同等の実行速度が得られます。 クライアント・サーバ型のシステムでサーバ側がJavaを利用しての構築には沢山の事例があります。堅牢性というのは複数のクライアントの要求を処理するサーバ側にとってとても重要な部分になり、それも大きな理由の一つです。 Java開発にはIBMが作ったEclipseという非常に優れた開発環境があることも、プロジェクトとしてJavaを選択する理由の一つでもあるでしょう。 クライアント作成という分野ではあくまで一つの選択肢ではありますが、Java開発者がサーバーからクライアントまでをEclipseを利用して作成できるのは大きな意味があります。 近年はAndroidによってJava開発者の人口は増えていると思われます。 JavaとJavaScriptは大きな差があり、それぞれが適切な場所に使われることで、メリットを最大に引き出せるようになっています。 参考:SESエンジニアとは?仕事内容や必要なスキル、企業の選び方を解説 | SES業務管理の統合ツール Fairgrit®公式サイト

  • シスキュー技術部

シャットダウンスクリプトの簡単な解説

noimage

シャットダウンスクリプトの簡単な解説

VBS(VBスクリプト)を書いたのは初めてですが、昔ながらのバッチファイルでは実現できなさそうだったので、VBスクリプトの学習の意味を込めて作成しました。 Windows8にシャットダウンのショートカットを作る 宣言部 [vb] Option Excplicit [/vb] この宣言は、あらかじめ変数を宣言しないと使えない、VBユーザーにはおなじみの宣言です。 タイプミスで変数名を間違えても、エラーが出てデバッグが楽になるので、宣言しておきます。 define部では変数の宣言をしています。 execParamは実行時のパラメータを受け取る配列。 intCounterは待機時間のカウンター rtnは戻り値の格納用 WSHobjはWSHオブジェクトのインスタンス用 Argsはpopup.vbsの実行用文字列 WaitCounterは待機秒数の格納用 flgForthは強制オプション用のフラグ(Forceの間違いですが、見逃してください) 定数DEFAULT_COUNTERはデフォルトの待機時間 定数MINIMUM_COUNTERは最短待機時間。 最短待機時間は、たとえば待機時間ゼロで、誤ってスタートアップフォルダに入れてしまった時などのために入れていますが、普通に使ってる限りは必要のない部分かもしれません。 即時シャットダウンがほしければ、shutdown.exeを呼び出すバッチファイルを作ればよいだけですので、差別化のようなものと考えてください。 引数チェック Argument Check & Set部では引数のセットなどを行っています。 [vb] WScript.Arguments.Count [/vb] で引数の数が取れます。 [vb] Set execParam = WScript.Arguments [/vb] で引数を配列に入れ、0からの配列の添え字で引数にアクセスできます。 多少込み入って見えますが、数値以外のものがセットされた時のためのもので、それほど複雑なことはしていません。 待機 Waiting loop部ではpopup.vbsを設定回数呼び出しています。 [vb] Set WSHobj = WScript.CreateObject("WScript.Shell") [/vb] でWindowsScriptShellのインスタンスを作成し、runメソッドでpopup.vbsを呼び出しています。 popup.vbsはここで設定された引数でポップアップウィンドウを呼び出すだけのスクリプトですが、毎回呼び出すことで、できる限りポップアップが前面に表示されるようにしています。 前面で操作できるところにポップアップがないと、キャンセルなどができなくなってしまいます。 なかぽんの雑記さんの記事を参考にさせていただきました。 vbsでWshShell popupを前面に表示する http://d.hatena.ne.jp/nakapon/20121120 popupは一秒待機して戻るように設定していますので、繰り返し呼び出すことにより、時間を設定できます。 popupのボタンが押された場合は、戻り値を受け取って、SELECT CASEで分岐させています。 戻り値1であれはOKボタンなので、シャットダウン用のプロシージャを呼び出します。 戻り値2であればキャンセルなので、終了処理をキャンセルするプロシージャを呼び出します。 戻り値がない場合は、何もしません。 設定回数ループが終わると、シャットダウン用のプロシージャを呼び出します。 シャットダウン用プロシージャ [vb] Set Wshshell = WScript.CreateObject("WScript.shell") [/vb] でオブジェクトWshshellにWScript.shellのインスタンスをセットします。 runメソッドでshutdown.exeを呼び出します。 強制フラグが1の場合は-fオプションを付きでshutdown.exeを呼び出します。 ここで使用しているオプションは -s シャットダウンを行う -t 待ち時間の設定、0であれば即時 -f 強制的に終了する です。 shutdown.exeにはほかにもオプションがありますので、runメソッドの中身を書き換えれば、再起動やさまざまなカスタマイズが可能になります。 キャンセル用プロシージャ [vb] WScript.Quit [/vb] これでスクリプト自体の終了を行います。 VBでいえばEndやExitの代わりです。

  • パソコン関連

Windows8にシャットダウンのショートカットを作る

noimage

Windows8にシャットダウンのショートカットを作る

Windowsにカウントダウン式のシャットダウンを行うスクリプトを作ってみます。 Windows8でなくとも、WindowsXPやWindows7でも実行できます。 Windows8のシャットダウンはタッチパネルでない場合、マウスを右端上下のホットコーナーに合わせて、チャームを出し、設定からシャットダウンを選ぶ、という手順が必要です。 Shutdown.exe WindowsにはXPのころからshutdown.exeという実行ファイルがあり、これを直接実行することで、シャットダウンを行うことができました。 コマンドプロンプトを立ち上げて以下を入力すると、30秒後にシャットダウンに入ります。(保存していない書類があるときは実行しないでください) [text] shutdown.exe -s -t 30 [/text] この三十秒の間に、シャットダウンを中止するには [text] shutdown.exe –a [/text] で中止することができます。 しかし、シャットダウンのためにコマンドプロンプトからコマンドを入力するのは、むしろ手間がかかるので、実際に実行する人はいないと思います。 筆者の理想としては、Macのシステム終了のように、終了を実行してから、自動的にカウントダウンが始まり、その間に即時終了とキャンセルのできるものです。カウントダウンが終わると、自動的にシステムが終了します。 これにできるだけ近いスクリプトを作って、ショートカットから実行できるようにしてみたいと思います。 スクリプト実例 ファイル名: shutdown.vbs [vb] Option Explicit 'define Dim execParam Dim intCounter Dim rtn Dim WSHobj Dim Args Dim WaitCounter Dim flgForth Const DEFAULT_COUNTER = 30 Const MINIMUM_COUNTER = 10 flgForth = 0 'Argument Check and Set If WScript.Arguments.Count = 0 then WaitCounter = DEFAULT_COUNTER Else Set execParam = WScript.Arguments If IsNumeric(execParam(0)) = false Then WaitCounter = DEFAULT_COUNTER Else WaitCounter = Cint(execParam(0)) End If If WScript.Arguments.Count = 2 Then If execParam(1)="f" Then flgForth = 1 End If End If If WaitCounter <= MINIMUM_COUNTER Then WaitCounter = MINIMUM_COUNTER 'Waiting loop For intCounter = WaitCounter to 1 step -1 Set WSHobj = WScript.CreateObject("WScript.Shell") Args = "cscript ""popup.vbs""" _ & " """ & CStr(intCounter) & "秒後にシャットダウンします" & Chr(13) & Chr(10) & "OKですぐにシャットダウンします""" _ & " 1" _ & " ""シャットダウン""" _ & " 1" rtn = WSHObj.Run (Args,0,true) Select Case Rtn Case 1 call procShutdown Case 2 call procAbort Case Else ' End Select Next Call procShutdown Wscript.Quit 'shutdown Procedure Sub procShutdown Dim Wshshell Set Wshshell = WScript.CreateObject("WScript.shell") If flgForth=1 then Wshshell.run("shutdown.exe -s -f -t 0") Else Wshshell.run("shutdown.exe -s -t 0") End If WScript.Quit End Sub 'abort Procedure Sub procAbort WScript.Quit End Sub [/vb] ファイル名: popup.vbs [vb] Option Explicit Dim Arg Dim rtn Dim WSHObj Set WSHObj = WScript.CreateObject("WScript.Shell") Set Arg = WScript.Arguments rtn = WSHObj.Popup(Arg(0),Arg(1),Arg(2),Arg(3)) if rtn=1 or rtn = 2 then WScript.Quit(rtn) Set WSHobj = Nothing [/vb] 使い方 この2つのスクリプトをそれぞれ、vbsファイルとして保存します。 それらを一つのフォルダに格納し、起動する際はshutdown.vbsをダブルクリックします。 カウントダウンが始まります。OKを押せば即時終了。キャンセルを押すと終了をキャンセルできます。 カウントダウンがおわると、自動的にシャットダウンします。 ショートカットのつくり方 shutdown.vbsを右クリックし、ショートカットの作成を選択します。 作成されたショートカットのプロパティを開きます。 ここで「アイコンの変更」を選択し、電源ボタンに変えてみます。 このアイコンを設定して、デスクトップにコピーすれば、いつでもショートカットからアクセスできます。 オプション このオプションは指定しなくとも、利用することができます。 vbsファイルの後に半角スペースを一つ開けて、数値を入力すると、カウントダウン秒数を変更できます。 最低限の猶予のために10秒以下は設定できなくなっています。 カウントダウン秒数の次に、スペースを一つ開けて、fと入力すると、アプリケーションの応答を待たず、強制的にシャットダウンします。 保存していないファイルも警告なしにシャットダウンし、失われてしまいます。 あまりお勧めのオプションでないので、よく理解していただいたうえでお使いください。