IT is IT.

空想イノベーション

意味ネットワークで概念間の関係を表現する

意味ネットワークとは、概念をラベル付きノードで表し、それぞれのノードをリンク(矢印)で結んだネットワーク表現をさす。
もともとは認知心理学で用いられたものだが、現在では人工知能での知識表現としても用いられている。

スポンサーリンク
 

概念間を結ぶ関係性として、

  • is-a
  • part-of

の関係があり、is-aは継承関係を、part-ofは属性をそれぞれ表す。
f:id:itry:20190104130034p:plain
上図の場合、

  • 動物は生物である
  • 哺乳類は生物である
  • 魚類は生物である

といったis-aの関係があり、

  • 頭は哺乳類の一部である
  • 脚は哺乳類の一部である

といったpart-ofの関係があることを示す。

人工知能とはいったい何なのか

人工知能

Artificial Intelligence、略してAI。
1956年、アメリカで開催されたダートマス会議で、ジョン・マッカーシーが初めて使った言葉とされている。

多くの専門家の中では、AIとは推論、認識、判断など、人間と同じ知的な処理能力を持つ機械という点では一致しているが、それに加えてAIとは何なのかを明確に定義できるものが存在していない。
多くの専門家、研究者ごとに、AIに関する定義が異なるため、専門家、研究者の数だけAIに関する定義、解釈が存在しているといってよい。

スポンサーリンク
 

つまり、とあるIT企業の営業が「当社はAIを得意分野にしてまして、こういった事例やこういった実績があります」と売り込んでも、じゃあ顧客が「AIって何?」という根幹の質問をされると、すっきりとした回答ができないのは、こういう背景が関係しているのかもしれない。

というわけで、ちょっとAIや機械学習といったキーワードで色々勉強していくので、それにまつわるエントリーを増やしていこうと思う。

本当によく使うFirewallのコマンドスニペット

CentOS系Firewallの操作はfirewall-cmdで行うが、IPアドレス、ゾーン、サービスなど、色々操作できる。
が、本当によく使うのは、結構限られていて、開発環境でポートの解放さえできれば事足りることが殆どだ。
というわけで、本当によく使うものだけ、コピペで使えるように厳選した。

スポンサーリンク
 

ポート番号操作

追加されているポート確認(恒久設定)

firewall-cmd --list-ports --zone=public --permanent

ポート番号の恒久的追加

firewall-cmd --add-port={ポート番号}/tcp --zone=public --permanent
firewall-cmd --reload

追加されているポート番号の恒久的削除

firewall-cmd --remove-port={ポート番号}/tcp --zone=public --permanent
firewall-cmd --reload

働き方改革の向こうにAIを意識せよ

働き方改革の向こうにAIを意識せよ

少し前から働き方改革という言葉が一人歩きしているような気がしてならない。
端的に言うと、効率よく働いて、残業減らして、私生活も充実した人生を送ろうね、的な。
ただ、感じるのは「残業減らそうね」がやたらフューチャーされているようで、月何十時間以上は禁止とか、そういう話ばかり。
裁量労働制の人はどうだとか。
結局、それやってもサビ残で、どうにでもなりそうな気がしないでもない。

スポンサーリンク
 

それはさておき、本来の働き方改革は、そこにだけ目を向けていては、近い将来取り残されることを意識した方がいいかもしれない。
世は空前のAIブーム、シンギュラリティ、つまり人工知能が人間を超えるのが2045年あたりと言われている。
それでなくても、そこまでに年々人間に近づいていくことは間違いないだろう。

「AIで仕事がなくなる」論のウソ この先15年の現実的な雇用シフト

「AIで仕事がなくなる」論のウソ この先15年の現実的な雇用シフト

 

このAIブームは、いわゆる経営層が「とりあえず我が社もAIを」という、具体的なビジョンもなく、手を出している風潮があり、このブームは、来年以降、一度落ち着くのでは、と言われている。
それでも、来るべきシンギュラリティに向け、進化は続けるであろう。
と、同時に、AIにとってかわる仕事、職業も増えるだろう。

ここに危機感を抱くのは大事である。
でも、AIに仕事を奪われると考えているやつらは、少し考え方を改めてほしい。
AIは仕事を奪うのではなく、代替してくれるものである。
だから、どうやってAIと共存、共生していくか、という考えに変えていってほしい。
数年先はどうなっているか、正直わからない。
でも、こうなれば便利だ、とか、こういうことはAIに任せよう、という発想を持ち続けることこそ、真の働き方改革なのではなかろうか。

今からでも遅くない、ブロックチェーンを学んどけって話

NEMの流出や、Bitcoinの高騰・下落の乱高下と、仮想通貨そのものが話題になっているが、その仮想通貨を支える技術が、言わずもがなのブロックチェーン。

仮想通貨などの投資に興味がないから。
マイニングには興味がないから。
それで終わってしまってよいものだろうか。

スポンサーリンク
 

このブロックチェーン、仮想通貨だけではなく、保険、証券などの金融業。
ポイントや店舗限定サービス向けなどの、産業。
物品の追跡などに活かせる流通業。
IoTとの連携や、電子書類の信憑性証明などに活用できる官公庁。
この先々、色々な分野で活用が期待できるブロックチェーンを、今のうちに、きちんとした仕組みだけでも理解しておかない手はない。

早速、自身でも書籍を購入し、勉強を始めたところだ。

さわりについて触れてみよう。
そもそも、ブロックチェーンとは、
・分散データベースの一種と考えてよい
・チェーンで繋がった不特定多数のノードで構成されている
・全てのノードの合意が覆る可能性が0に近づいていくもの
・ハッシュ値の改竄がすぐに検出される
・改竄されたハッシュ値は、他のノードから復元される

まだまだ、処理速度など課題はあるものの、データの完全性が担保できる。
この技術は、仮想通貨だけならず、いろいろな業界で活用が期待できる。
このブロックチェーン、今はまだ、そういった分野に携わっていなくても、今後を見据えて、今のうちに身につけておいても損はないだろう。

AIでハッキング、これは強敵すぎる

AIでハッキング、これは強敵すぎる

ならば、AIでブロック、これしかない。

いわゆるブルートフォースアタックとか、DoSとかの機械的なものではなく、考えながら探りながら攻撃。
恐ろしすぎるでしょ。
しかも、継続的に無差別的にできる。
これは脅威だ。脅威でしかない。

スポンサーリンク
 

例えばサーバ系。
今だとWAF(Web Application Firewall)とかで、攻撃をブロックしたりする。
これも、一定のルールに従って、閾値を超えたものについて通信を遮断したりする。
ただ、あくまでIPアドレスやIPレンジによる国レベルでの遮断になるので、サービスを提供する側からすると、サービスレベルの低下を気にしてか、躊躇するなんてこともある。

あるいはクライアント系。
AIをうたったウィルスチェックソフトも、最近目にすることはある。
ただ、これも、まだまだ名ばかりのAIでしかない。
AIを前面に出すなら、状況に応じた動きは必要だろう。
ポートの開け閉めとかさ。
ランサムウェアにやられようもんなら、暗号解除に励むとかさ。
もちろん、暗号化を阻止することもやるべきだが。

結局、セキュリティの世界は、常に攻撃する側が先手だ。
防御する側は、攻撃の種類を分析して、それに対応することしかできない。

ならば今こそ、攻撃的なセキュリティ対策が必要ではなかろうか。
防戦一方だけでなく、攻撃者への反撃。

あ、これAI AI WAR(えい!えい!おー!)の幕開けになってしまうね。

Javaは10で終焉を迎えそうなので、Java技術者は新たな言語に備えよう

Javaは10で終焉を迎えそうなので、Java技術者は新たな言語に備えよう

Java9が32ビットOSを捨ててから、時をたたずして、間もなくJava10が公開されようとしている。
そして、更にその半年後にはJava11が公開されるという。

メジャーリリースの高速化は世間の流れから、別に驚きはない。
ただ、Java11から、JDKが有償になるらしいじゃないか。
なんだ、それ!!

今や、システムは、セキュリティや可用性を含めて、実運用に耐えるなら、使えるOSSを積極活用したがる顧客は多い。
いや、そういう提案をしていかないと、なかなか価格競争に勝てない、といってもいいかもしれない。

そこへきて、開発者向けのJDKが無償でなくなるとか。
ライセンス形態をはじめとする詳細が不明であるが、Java離れが進むような予感がしてならない。

それを見越して、Java技術者は、今から次なる言語を覚えはじめた方がいいかもしれない。
RubyやPHP、pythonは、若干枯れつつある気がするが、現行Javaシステムをマイグレーションしようという候補には十分なり得る。

ただ、どうせなら、これからを見据えたものがいいかも、という気もする。

スポンサーリンク
 

例えば、小規模なシステムであれば、Go言語やNode.jsでも十分使える。
ただ、c10kにも耐えられるようなものになると、例えばErlangのVM上で動かせるElixirなんかも面白そうだ。
あるいは、restSQLなんかのクエリ言語なんかも面白そうだ。

ただ、いずれにしても、レンダリングはクライアントサイドでやるのが当たり前という前提にしている。
JavaScriptで、たとえばAngularやReact、あとは定番のjQuery。この辺の、JavaScriptフレームワーク職人になる、という道もあるかと思う。

そんなわけで、準備はお早めに。
個人的には、Elixirの勉強でも初めてみようかと思う。

追記
どうやら、大きな勘違いをしていたようなので、訂正。
正しくは、Java11から、Oracle JDKの無償版がなくなり、OpenJDK(無償)が提供される、とのこと。
なんかややこしいが、そういうことらしい。
ただ、そろそろ脱Javaするきっかけが欲しかったので、これを機に、新たな言語習得に繋げたいと思う。