お知らせ

  • ブログ

Windows10のネットワーク

noimage

Windows10のネットワーク

あけましておめでとうございます。 かわせです。 今年もAIとラズパイを追っていきたいと考えておりますが、令和2年1発目のブログはWindows10ネタで行きたいと思います。 Windows10を使っているとネットが突然つながらなくなるという現象に遭遇した人はそう少なくないようです。マイナビニュースにこんな記事が流れていました。 https://news.mynavi.jp/article/win10tips-458/ こうゆう記事が出るということはやっぱりWindows10のネットワークって何か問題を抱えているようですね。 でもね、ネットワークをリセットするのであればGUIでネットワークアダプタを一旦無効にし再度有効にすることでも治ります。     とくに無線LANは、切れることが多いので時々使うという方はこの設定画面のショートカットを出しておくと便利かもしれません。 また、Windows7のサポートが切れますがWindows7PCは比較的性能の良いものが多いので捨ててしまうのはもったいない!なのでLinuxを入れることをお勧めします。 Linuxでどんなことができるかは以下の動画を見ていただければわかると思います。 https://youtu.be/zES0e2z_lvU https://youtu.be/py88DT5SZjg https://youtu.be/15nUr5HCR94 といった具合でWindowsよりも軽くコンピュータプログラミングの教材としても非常に適しています。 Linuxにご興味がある方は以下のリンクからコミュニティにご参加ください。 https://bashw.connpass.com/ http://waitwg.org/ 本年もよろしくお願いいたします!  

  • パソコン関連

プログラミングの自己学習

noimage

プログラミングの自己学習

現在JAVAや.netなど、様々なプログラミング言語が開発に利用されています。 それらは構文や式をどのように書くのかというだけでなく、どのようなクラスライブラリを持っているのかということも重要です。 よく使われるアルゴリズムやデータ型については、まずどのような形でクラスを利用できるかについてあらかじめ知識として持っておく必要があると考えます。 すでにクラスライブラリに用意されているものを一から自分で実装してしまうのは大きな時間のロスで、間違いも生み出す原因となるため、用意されているものは用意されている、あるいはされていないと情報を共有することは大切な初歩です。 そしてそれらがどのような実装が行われているかなどは実際に使ってみないと分からないということもあります。 オブジェクト同士が同一と判断される条件、比較される条件や、どのようなデータ型やオブジェクトにどのようなデータを与えれば良いのかという部分では、知識の共有とともに、自分でも試しておくと良い部分だと思います。 実際どれぐらいの量のデータを与えればうまく機能しないか、どのようなデータを与えると想定の通りに動作しないかなどは簡単なテストプログラムを作ることによって実感として得ることができるはずです。 マニュアルに書かれていることは共有できている前提で、個別のテストプログラムでどのような性質を持っているか、実装されているかなども実感できるようになっていると、実装やテストの際に役に立つ知識になります。  

  • パソコン関連

開発者と学習

noimage

開発者と学習

IT企業に勤める開発者としてのスキルアップのためには学習は必要です。 同じことを専任して続けていく開発者と、様々な分野のことを覚える開発者であれば後者のほうが比率として大きいはずです。 そのような業務に就いていれば様々な業務や開発環境、言語への知識は増えていきます。 また覚えることも多くなるためにこれ以上自主的な学習は難しい、あるいは不要と考えるかたもいるはずです。 ただ仕事を続けていく上で、キャリアというものを意識することはどんな業種であっても大切です。開発者も例外ではありません。 開発者としてプロジェクトに加わる場合、おおよそルールはできているか、あるいは先輩開発者と連携して作ることになりますが、なぜそのようにするのかただ漠然と受け取っていると開発の本質に届かない可能性があります。 システム開発とは何か、あるいは他の開発では何が行われているか、そのようなことを学ぶことは今行なっている工程の意味を改めて認識する気っけになります。 また新しい言語の言語仕様を学ぶ時に、なぜこのような仕様が言語開発者によって設計されたのかということを積極的に意識して学べば、物珍しさを超えた意味のある学習になるはずです。 おおよそは品質と効率を確保するためになりますが、そのためになぜこれが必要だったのかを見つけることです。 このようなことはほとんどの現場では業務時間内に学ぶことは不可能です。業務時間外の自主的な学習によってしか得られないでしょう。 ただ漠然と本を読んで頭に入るのはノウハウですが、身につけることを意識して学習すればキャリアの形成に役立つ知識が手に入るはずです。

  • パソコン関連

プログラミング教育

noimage

プログラミング教育

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

  • ブログ

.Net Core1.0 正式リリース

noimage

.Net Core1.0 正式リリース

Microsoft社がWindows用のフレームワーク、.Net Frameworkを複数のプラットフォームで動作する.net Core の最初のリリースを公開しました。 現在gitリポジトリにソースコード、ドキュメント、ビルド方法などが公開されています。 オープンソースの形式をとり、様々なプラットフォームでビルドしてASP.netのサーバーとして利用できます。 主なLinuxディストリビューションやBSD、Mac OS Xでのビルドについても正式に確認されており、サーバー側で動作するアプリケーションのプラットフォームとして様々な用途で利用できそうです。 競合となるのはTomacatなどのJavaのサーブレットエンジンになると考えられます。 あくまで新規のフレームワーク.net Core 1.0として、従来までのASPプロジェクトがそのまま動作すると保証されているわけではありません。 それでもAPI仕様などの様々な部分でASP.netと互換性がありますから、従来の開発資産やエンジニアで、新たなプラットフォームで引き続き開発をすることができます。 Windows以外のプラットフォームでは、オープンソースのライブラリとリンクしてビルドします。 Windowsでは自社製のライブラリを利用してビルドを行うという差があります。 Linuxのエンタープライズ向けのディストリビューションであるRedhatなどがこれをサポートすると正式に表明しています。 .netフレームワークの他プラットフォームへの進出が現実になり、これからの動向が期待されます。  

  • パソコン関連

ブラウザプラグイン時代の節目

noimage

ブラウザプラグイン時代の節目

ActiveX、Javaプラグイン、Flashプラグインと、Webブラウザ内で動作する様々な機能拡張が節目を迎えようとしています。Javaが今後のロードマップでJavaブラウザプラグインを廃止するという計画を発表しました。AdobeもFlashプレイヤーで再生するコンテンツを作成するアプリケーションをFlash ProからAnimate CCと名称を変更し、Flashプレイヤー以外でのコンテンツの作成を押し出していく方針です。またGoogleが今後Flash広告の出稿を受け付けない方針とすることも発表されました。Windows10の標準ブラウザEdgeではInternet  Explorerで動作したActive Xが動作しません。ブラウザプラグインは、Webアプリケーションを作成するためにHTMLとJavascriptの性能が貧弱だった頃、大きくブラウザの機能を向上させるために頻繁に用いられていました。Webプラグインがあれば、Webブラウザで指定のページを開くだけでパソコン本体で実行するような高度なアプリケーションを提供することができました。これは広く業務システムから、動画やゲームなどの配布に利用されました。ブラウザプラグインは個々のパソコンでのプラグイン以外のインストールが不要で、バージョンアップもサーバー側でコントロールすることができたため、ブラウザプラグインの利用は広まりました。転機はスマートフォンがこれらを一切サポートしなくなったことです。スマートフォン普及と時を同じくしてHTML5、javascriptライブラリの充実、WebGLなどの制定がありました。HTML5はCanvas要素とWebGLという動的なグラフィックスなどを扱う要素が追加され、これはビデオや3Dグラフィックスなどメディアの再生のためにブラウザプラグインを動作させる必要性を失わせるものでした。またWebSocketなど、ブラウザにサーバーなど他のコンピュータと通信する機能が追加され、ネットワーク機能はブラウザプラグインに頼らなくても可能となりました。JavaScriptライブラリが大きく進歩し、HTML5、WebSocketなどを組み合わせて様々なアプリケーションを構築できるようになりました。これに対してブラウザプラグインは大きなアドバンテージを示すことが難しくなり、また脆弱性の発見とアップデートをブラウザと別途に行うことでユーザーの負担も大きくなっている状態です。スマートフォンを除外したパソコンでの動作を前提とする業務用などの条件では、これからもブラウザプラグインは残っていくでしょう。広く多くの人に使ってもらう、という用途については、その立場を明け渡すことになりそうです。

  • ブログ

マルチコアプロセッサ

noimage

マルチコアプロセッサ

パソコンのCPU(プロセッサ)は面積あたりに多くの回路を作れるようになり、マルチコアプロセッサというものが当たり前になってきます。 現在であれば、スマートフォンのCPUがデュアルコアなどという用語で語られることもありますが、これは一つのプロセッサのチップが幾つかのプロセッサの集合したものであることを示しています。 Core iシリーズなどパソコン用のプロセッサもマルチコアで、Core i5で4コアなどもよく聞かれる言葉です。 コア数が多ければ、それだけ処理を複数実行できるのですが、コアが2個あれば2倍になるというわけでもなく、この効率を上げるためにはOSやアプリケーション側でマルチコアに最適なものを作らなければなりません。 現在のCore iシリーズはCPUとGPUという二つの種類のコアが混ざったもので、GPUはグラフィックプロセッサーと呼ばれているグラフィック処理を行うためのものです。 スマートフォンのプロセッサもCPUとGPUが混載されたSoCで、CPUとGPUはそれぞれ別の種類の計算が得意です。 CPUは汎用性が高く、様々な計算を場合に応じて実行するのに向いており、コンピュータやサーバー機器などで利用されているプロセッサのほとんどを占めています。 GPUは行列計算などが得意で、動画や音声の再生など、データを次々と読み込んで定型の処理をかけていくとCPUよりはるかに高速です。 音楽や動画の再生はスマートフォンなどでは重要視されるもので、省電力でありながらこれらをこなすGPUは重点的に強化されています。 またアプリケーションやOSが高性能なGPUがあることを前提に、行列計算はGPUに割り当てるという仕組みづくりが進んでいます。 二つのプロセッサの協調によって、従来のプロセッサより早いスピードで性能が向上していき、モバイル機器の進化を助けています。  

  • ブログ

WebAssembly

noimage

WebAssembly

Mozilla、Google、Microsoft、AppleがWebアプリケーションの高速化のための規格、WebAssemblyを共同で開発していくことを明らかにしました。 各ブラウザにはWebアプリケーションをJavascriptで実行させる機能を持っています。 JavascriptはHTMLで記述できない細かな動作からスタートし、現在Javascriptエンジンの高速化によってブラウザ上といえどアプリケーションをかなり高速に動作する環境が整ってきました。 JavascriptはソースコードをHTMLファイルとともにブラウザに読み込ませますが、このソースコードはテキストで書かれており、これをブラウザが解釈し、コンパイルして実行可能にします。 WindowsでいうEXEファイルのような実行可能なバイナリフォーマットであれば、機種依存性、あるいはブラウザ依存性が出てきます。 Javascript実行の仕組みはおおよそどのブラウザでも備えていますが、それ以上の独自規格でない、共通な仕組みを新たに加えるのはWebAssemblyが最初です。 WebAssemblyはJavascriptを解釈した状態のバイナリフォーマットで配布されますので、読み込みが早く、またすぐに実行できる仕組みです。 このWebAssemblyで利用されるバイナリフォーマットは、JavascriptだけでなくC言語や、その他言語でも作成できるようになります。 あくまで現状のブラウザにWebAssemblyの読み込みと実行の仕組みを追加する仕組みで、別途プラグインなどをインストールするJAVAなどとは方式が違います。 ブラウザ上でかなりのことができるようになり、またスマホでもWebアプリを高速化し、より使いやすい物になります。 現在主流のWebブラウザ開発元が共同して開発するWebAssemblyで、パソコンやスマートフォンの使い方にも変化が訪れるかもしれません

  • パソコン関連

エンジニアとプログラム言語

noimage

エンジニアとプログラム言語

コンピュータエンジニアにとって、これから業務に使うプログラム言語や環境というものは手段にすぎなく、コンピュータのプログラミングについて考え方はどれも同じです。 小さい単位のアルゴリズム(並び替えや、データの検索など)を組み合わせ、ロジックという実際に実現したいプログラム内容を構築するのが開発で、その考え方はどの開発環境、言語でも同じです。 Accessで例えるなら、一つ一つのクエリをアルゴリズム、最終的なデータベースをロジックと考えればわかりやすいかもしれません。 ですからプログラミング言語はロジックを達成するために使う方言のようなものです。 ただこれについて、流行り廃りではありませんが、時代に合わせた潮流というものがあります。 objective-CというほぼMac用の言語が、iPhoneの普及で大きなシェアを得たり、それと入れ替わるように従来型の携帯電話のプログラマーの数が減ったりということです。 業界内の開発者のシェアが増えれば、その分たくさんのノウハウが蓄積されていきます。 PHPやVBA、JavascriptのようなWebサイトでも多くのノウハウを見つけることのできる言語以外に、ごく限られた業界の中でだけ蓄積されているノウハウというのは沢山あります。 先ほどの例でも挙げた従来型携帯の開発、Symbian上の開発などの情報は守秘義務などもあり、ほとんど表に出回ることはありません。 エンジニアのシェアが低くなると、こういった業界内部でのノウハウを持ったエンジニアも散り散りになってしまいます。 COBOLなどは歴史のある言語ですが、今でも金融などを中心に基幹系のシステムには必要不可欠な存在です。 やがてスマートフォンより魅力ある一般向けの機器がリリースされる未来にも、COBOLは一定の需要が引き続き残っているのではないでしょうか。 パソコン向けの業務アプリケーションはこの潮流の影響を大きく受けます。 歴史の長いC++や、.Net製品のVisualBasicやC#は開発工数が比較的小さく、その他javaにもクライアント側とサーバー側があり、別なものと言っても過言ではありません。 またブラウザ経由で利用するWEBアプリをデスクトップで利用することも多くあり、主流はPHPやASP.netなど、要望や予算に応じて様々なものが選ばれます。 やはりノウハウや他の開発者間のコミュニティーが充実している方が、開発者としても習得が早く、効率を上げやすいので、そちらを選ぶエンジニアも多くなります。 依頼も少なくなる見込みの技術からは、やはりエンジニアは離れていき、ノウハウなども分散して減っていきます。 それがやがて一般のユーザのニーズにも変化を及ぼすことがありますので、マイクロソフトは.Net、AppleはObjective-Cをより使い回しのできるプログラム言語として強化しています。 エンジニアは最新の潮流と技術のシェアを常に視界に入れていますが、システムを発注する側にしてもある程度の知識を持っていた方がいいでしょう。 一般のユーザーにとっても時々かいま見えるそれが、今後利用するサービスや機器のトレンドになっていくかもしれません。

  • パソコン関連

スマートフォンで遊んでますか?

noimage

スマートフォンで遊んでますか?

 スマートフォンを手に入れて、スケジュール、カメラ、天気予報、地図、さまざまな標準のアプリが生活の役に立っています。  スマートフォンを手に入れてから、普段持ち歩くものを一つ二つ減らすことができたり、様々な実用面でのプラスがあると思います。  それ以外にもスマートフォンは様々な楽しい用途にもアプリを追加すれば対応できます。SNSやゲームなどです。  コンピュータがゲームのために使われる歴史はかなり古いものがあり、コンピュータとともにゲームは一緒に育ってきたと言っても過言ではありません。 ごく初期のコンピュータゲーム  スペースウォー!というコンピュータゲームがマサチューセッツ工科大学で作成されたのは1960年代のことです。当時数億円する大型コンピュータPDP-1上で動作するコンピュータゲームで、グラフィックスを利用した今でいう据え置き型のゲームのようなものです。  このころのコンピュータゲームは、ただ遊ぶためではなく、コンピュータでできることの可能性を切り開くことでもありました。  しかしやはりゲームが人を惹きつけるからこそ、当時の技術を駆使したゲーム作成が可能となり、またこのゲームの開発に携わった人は、その後のコンピュータ科学やエンジニアとしてコンピュータの世界を牽引してきました。 エンジニアを育てたゲームたち  スタートレックは1970年代に同名のSFテレビドラマをテーマにしたコンピュータゲームです。そのテーマとも相まって、多くの人がこのゲームを遊びたいと思い、これをきっかけにBASIC言語を学び、ゲームを自分が使うことのできるコンピュータに移植しました。かつて別の規格のパソコンに互換性のあるものを作るときに移植と呼びました。  ローグはUNIXのプラットフォームで動作する、ロールプレイングゲームで、現在でも遊ばれているトルネコの大冒険などをはじめとする、ローグライクゲームのオリジナルとなりました。OSに備え付けでコンピュータとともに出荷されるぐらいに普及し、このゲームから多くの学生やエンジニアがUNIXとC言語を学び、普及させるきっかけになりました。 ゲームとモチベーション  コンピュータの普及とゲームとの関係は切っても切れないものです。  これはやはり新しいものに対しての触れるきっかけ、モチベーションを維持する為に必要なことだからでしょう。  Windowsも普及当時、マインスイーパーとソリティアは欠かせないものだったと筆者は考えます。これはエンジニアを育てたものではありませんが、Windowsの操作、特にマウスでの左右のクリック、精密な操作や、ドラッグアンドドロップの概念をわかりやすく普及させるのには最適のゲームであったと感じます。  スマートフォンでも、その操作を覚えるためにはまずはゲーム、というのも悪くありません。無駄に使っているように見えて実は伝統的なコンピュータの入り口なのです。

1 2