投稿

1月 15, 2019の投稿を表示しています

10 年先を見据えたエンタープライズ IT インフラを考える

イメージ
10 年先を見据えたエンタープライズ IT インフラを考える : 執筆者: 佐藤 壮一(日本マイクロソフト株式会社 クラウド &エンタープライズビジネス本部 プロダクトマネージャー) ■ 2019 年に相次ぐ大きなイベント 2019 年は改元や消費税増税を控え、かつ 2020 年の東京オリンピック開催に向けた準備に対しても重要な年になります。視点を変えると 2019 年には SQL Server 2008 および SQL Server 2008 R2 のサポート終了があり、また、2020 年には Windows 7 と Windows Server 2008、Windows Server 2008 R2、さらには弊社製品にとどまらない同世代の様々なソフトウェアのサポート終了が迫っています。今年はエンタープライズ IT においても非常に大きな年になることは間違いないでしょう。本ブログ投稿ではまず、これらの製品がリリースされた 10 年前の背景と、この 10 年間の変化を振り返り、その上でこれからの 1 年間を考えることから始めたいと思います。 10 年前もまた、IT 業界は大きな変化の中にありました。特に代表的なものを挙げると以下の3つがあります。 32 ビット環境から 64 ビット環境への移行。 仮想化技術の一般化。サーバーを仮想マシンとして利用することが主流に。 ビジネス向け・管理用途アプリケーションの増加によるインフラ規模拡大と管理業務の増加。 これらの変化は IT 部門で管理できる限界に挑戦するともいえる変化であり、運用最適化と IT ガバナンス強化が重要なポイントとして謳われていました。その後、スマートフォンが本格的に登場し、各種スマートデバイスの爆発的な増加と通信速度の高速化が進み続けています。この新しい変化により、それまでの十分に管理された PC と、そこから接続される特定システムという形式から、非常に多数の有象無象のデバイスから、どこからでも接続されるスケールアウトを前提とした様々なシステムという分散コンピューティングの世界観へと変化してきました。今、我々はこの、PC - サーバーという世代から、分散コンピューティングという 新しい世代へのパラダイムシフト の最中にあると言えるでしょう。 このパラダイムシフトはシステムの更な

イベント開催のご案内 | 2019/1/15 号

イベント開催のご案内 | 2019/1/15 号 : マイクロソフトでは、様々な支援ができるよう多数のセミナー(ウェビナーおよび各地でスクール形式行われるセミナー)を開催しております。 遠方で参加が難しい方や当日都合が悪くなった方には、オンラインでご参加いただける形式のセミナーも多数実施しておりますので、お気軽にご参加いただき、お役立て下さい。(参加には事前のお申込みが必要になります) なお、過去のウェビナーは Azure サイトの歩き方ページ より、 [学習する] ― [過去の Web / 動画セミナー (2018 年 1 月以降)] から参照いただけます。 ※このエントリーは、期間内のイベントに限り、登録サイトが公開され次第順次アップデートされます。 セミナー 2019 年 2 月 19 日(火)   13:00-18:00(12:30 開場) [東京開催] Azure IaaS 応用編 - 高可用性の確保・運用管理・セキュリティ対策 [ハンズオン] このハンズオントレーニングでは、IT Pro を対象に Azure 仮想マシンの可用性の確保、運用管理、セキュリティ対策を Azure 基本機能と Microsoft Operations Management Suite(OMS)で実現する方法を解説と演習を通じて習得します。 参加のご登録はこちら > 2019 年 2 月 21 日(木)   13:00-16:00(12:30 開場) [東京開催] Cosmos DB と App Service によるグローバル分散アプリ構築 [ハンズオン] 本セミナーでは、Azure Cosmos DB を利用して地理的に離れた複数のリージョンに同一データベースをリアルタイムでレプリケーションするグローバル分散環境の構築と、.NET による Azure Cosmos DB 接続アプリケーションの実装から App Service へのデプロイし災害対策である DR 構成にも対応したクラウドネイティブなアプリケーションを実現するまでの流れをハンズオン形式で体験することができます。 参加のご登録はこちら > 2019 年 2 月 21 日(木)   16:00-18:20(15:45 開場) [東京開催] 今後 10 年の企業成長を加速させるクラウド ネ

re:Invent 2016 での FINRA による講演: AWS によってシステムパフォーマンスを 400 倍向上した方法 | AWS (日本語字幕) (11:55)

re:Invent 2016 での FINRA による講演: AWS によってシステムパフォーマンスを 400 倍向上した方法 | AWS (日本語字幕) (11:55) : 詳細はこちら » https://amzn.to/2RuM30s 金融業界規制当局である FINRA は、AWS を全面的に採用しており、AWS クラウドを使用することで、システムパフォーマンスを 400% 向上するなど、株式市場監視システムの大幅なパフォーマンス向上を達成しています。

re:Invent 2016 での FINRA による講演: AWS によってシステムパフォーマンスを 400 倍向上した方法 | AWS (日本語字幕) (11:55)

re:Invent 2016 での FINRA による講演: AWS によってシステムパフォーマンスを 400 倍向上した方法 | AWS (日本語字幕) (11:55) : 詳細はこちら » https://amzn.to/2MeoV0E 金融業界規制当局である FINRA は、AWS を使用して毎日数十億のブローカー取引記録を収集および分析しています。

Autodesk による事例講演 | AWS (日本語字幕) (15:16)

Autodesk による事例講演 | AWS (日本語字幕) (15:16) : 詳細はこちら » https://amzn.to/2Rx9CGl Autodesk は、自社ソリューションを拡張するために AWS 上の高性能コンピューティングを活用しています。

re:Invent 2015 での Capital One による講演 | AWS (日本語字幕) (7:14)

re:Invent 2015 での Capital One による講演 | AWS (日本語字幕) (7:14) : 詳細はこちら » https://amzn.to/2Fs8lda Capital One の CIO である Rob Alexander 氏が、アメリカの大手銀行の1つが、ミッションクリティカルなアプリケーションに AWS クラウドの広さと深さ、高可用性、スピード、そして弾力性をどのように使用しているかを説明します。

ExcelやCSVからkintoneアプリを作成した際のフィールドコード

イメージ
ExcelやCSVからkintoneアプリを作成した際のフィールドコード : あけましておめでとうございます。 うえるです。 前回の投稿からしばらく時間が空いてしまいましたが、 第3弾です!! 今回は備忘録的な投稿になります。 Excelからkintoneアプリを作った際、実際困ったことを解決できたので、 メモ代わりに投稿します。 背景 kintoneアプリ作成方法の1つに「Excelを読み込んで作成」って機能ありますよね? この機能を使った際に困った事が起きてしまいました>< もうタイトル通りです。 アプリ作成 ①アプリ作成画面から「Excelを読み込んで作成」 ②「作成を開始する」 ③すべてにチェックを入れ「アップロードへ進む」 ④フィールドタイプを変更したりします。  ※投稿用に簡単なExcelファイルを用意しました。 ⑤作成だ! 完成した! ここまでは何事も無く作成できましたが... 問題発生! 作成したフィールドコードを見てみると、 これはいけない... 後々JavaScriptなどでカスタマイズする際に苦労しそうですね(´;ω;`) 例で作成したアプリのフィールドは5つでしたが、 これが数十、数百とフィールドがあった場合一つ一つ手で治すのはちょっと厳しいですよね? JavaScriptで自動フィールドコード登録 アプリIDなどの変数宣言 const APP_ID = kintone.app.getId(); const LABEL_BUTTON = "Button"; if(document.getElementById(LABEL_BUTTON)) return; const myButton = document.createElement("button"); myButton.id = LABEL_BUTTON; myButton.innerHTML = "フィールドコード設定"; let body = {}; let obj = {}; ボタンをクリックしたときの動作 フィールドコードで使用できない文字は無理やり「_」にリプレイスさせてます。 myButton.o

【GAS修行⑦】Googleフォーム連携の読書管理Slack BOT作成

イメージ
【GAS修行⑦】Googleフォーム連携の読書管理Slack BOT作成 : ・GAS熟練者への道。 ・先人達のコードの「写経&コピー」の駆使の成果物のまとめ。 ・第七弾 ・ 第一弾 ・ 第二弾 ・ 第三弾 ・ 第四弾 ・ 第五弾 ・ 第六弾 はこちら。 経緯 ・「七回目か。作れるものは大量にあれど、個人的に必要なアプリはそこまでないな。」 ・「今回はスクレイピングではなくて、他のGoogle Apps連携のツールにしよう。」 ・「決めた。これさえあれば、秒速で管理名誉職人ですな。」 →そういうわけで、今回もサンプルアプリと仏様サイトを発見。 https://qiita.com/pchan52/items/574e930a3cc42cf7f8b9 →「また参考(※マルコピ)に作るか。」 →取り組み開始。 概要 Googleフォーム(読書アンケート)に回答すると、回答内容をSlcakに通知してくれる。 →読書家として境地上げが可能。 結果 ・実際の画面はこちらです。 作成環境 Google App Script Incoming WebHooks ※Slackがない場合は、一人用のSlackを開設しましょう。(何かと役に立つ。) 手順 Google Apps Scriptの設定 GoogleドライブからGoogleフォームを起動。 ※Googleアカウントを持っていない人は、作成する。 Googleフォームの質問等を下記のように作成 ※自分の好きな内容でも良いが、これをベースにコードを書いていく。 フォーム作成後、これに紐づいたスクリプトエディタ起動。 フォームページ内の上部メニューの「点三つ」をクリックして、「スクリプトエディタ」をクリックして、起動。 起動したプロジェクトに名前をつける ※プロジェクト名が反映されるわけではないが、自分がわかる名前をつける。 →保存。(最初の3行のままで良い。) 一旦置いておく。 Slack Incoming WebHooksの設定 Incoming WebHooksのトークンを発行。 Slack内のアプリを追加したいチャンネルに行き、アプリ名をクリックして、「アプリを追加する」をクリック。

Azure Functions + TypeScript 公式に型定義が追加されたらしい

イメージ
Azure Functions + TypeScript 公式に型定義が追加されたらしい : Azure Functions の型定義 2019/01/15の段階で、出来立てホヤホヤです。 npmjs はこちら https://www.npmjs.com/package/@azure/functions github はこちら https://github.com/Azure/azure-functions-nodejs-worker/tree/dev/types/public このパッケージには、Azure Functions でTypeScriptを使用するための型定義が含まれています。 これらのタイピングは、Azure Functions Functions コードに渡される一般的なオブジェクト用です。 Azure FunctionsはTypeScriptの開発をサポートしていますが、TranspilationなしでTypeScriptコードを直接実行することはサポートしていません。 とのことです。とりあえず手動でトランスパイルして試します。 bash mkdir func cd func func init # 1. dotnet # 2. node # 3. python Choose option: 2 # node # Writing .gitignore # Writing host.json # Writing local.settings.json # Writing /Users/hoge/func/.vscode/extensions.json func new #Select a template: # 5. HTTP trigger # 6. Azure Queue Storage trigger # Choose option: 5 # HTTP trigger # Function name: [HttpTrigger] returnName # Writing /Users/hoge/func/returnName/index.js # Writing /Users/hoge/func/returnName/sample.dat # Writing /Use

リードソロモン符号(= RS符号) を実装してみた(JavaScript)

リードソロモン符号(= RS符号) を実装してみた(JavaScript) : 勉強したので習作。誤り訂正符号に関する勉強の集大成。QRコードで利用される。エンコードまではできたけど復号はできていない。 1. 全体像 解きたい課題 : ノイズにより誤る可能性があるので 検査用に長さ7 のバイト列を付け加えることで、最大で247バイトのデータ(つまり、符号長の最大長は 254バイト)を送信する。符号の内 3つのバイトが壊れてもそれを検知・訂正する(バイトが壊れるとは、バイトを構成する8つのビットのうち、どれか 1つ以上のビットが反転する状態のこと)。 本稿での実践 : 参考資料p73 の再現。19バイトの情報に 7バイトをくっつけて 26バイトの符号を作る 送りたい情報19バイト: 0x80, 0x44, 0x85, 0xA7, 0x49, 0xA7, 0x8B, 0x6C, 0x00, 0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11, 検査用の符号をくっつけて26バイトにする: 0x80, 0x44, 0x85, 0xA7, 0x49, 0xA7, 0x8B, 0x6C, 0x00, 0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11, 0xEC, 0x11, 0xF9, 0xBB, 0x0B, 0xA1, 0x4B, 0x45, 0xF4 1. αを巡る計算ドリル αの正体を知ることよりも重要なのは、 αの性質を知ること: 性質1:$α^0, α^1, α^2, ..., α^{254}$ の255種類の数は全部違う(同じものがない) 性質2:$α^{255} = 1$ が成立するので、後は何乗しても種類が増えない 僕らは、1バイト=256種類のデータを何らかの形で数学の世界に持ち込みたい。そのまま自然数、つまり 1~256 に対応付けるというのも一つの方法なんだけど、 $\lbrace {α^i | i = 0, 1, ...254 } \rbrace$ に 0 を付け加えた集合に対応付けたほうが色々やりやすい(と数学者がいってるのでそれを信じる)。 α が住んでいる世界には、このようにαを何回もかけてできる 25

Azure Functions + TypeScript 公式に型定義が追加されたらしい

イメージ
Azure Functions + TypeScript 公式に型定義が追加されたらしい : Azure Functions の型定義 2019/01/15の段階で、出来立てホヤホヤです。 npmjs はこちら https://www.npmjs.com/package/@azure/functions github はこちら https://github.com/Azure/azure-functions-nodejs-worker/tree/dev/types/public このパッケージには、Azure Functions でTypeScriptを使用するための型定義が含まれています。 これらのタイピングは、Azure Functions Functions コードに渡される一般的なオブジェクト用です。 Azure FunctionsはTypeScriptの開発をサポートしていますが、TranspilationなしでTypeScriptコードを直接実行することはサポートしていません。 とのことです。とりあえず手動でトランスパイルして試します。 bash mkdir func cd func func init # 1. dotnet # 2. node # 3. python Choose option: 2 # node # Writing .gitignore # Writing host.json # Writing local.settings.json # Writing /Users/hoge/func/.vscode/extensions.json func new #Select a template: # 5. HTTP trigger # 6. Azure Queue Storage trigger # Choose option: 5 # HTTP trigger # Function name: [HttpTrigger] returnName # Writing /Users/hoge/func/returnName/index.js # Writing /Users/hoge/func/returnName/sample.dat # Writing /Use

Google検索結果の一覧をCSVでダウンロードするブックマークレット

イメージ
Google検索結果の一覧をCSVでダウンロードするブックマークレット : Googleの検索結果を手軽に一覧でCSV保存したい Google検索はとても便利なので、日常的に利用しているのですが、 検索結果をまとめて一覧化したいことがありますよね。 検索画面に表示されるサイト名やページタイトル、URLをCSVファイルとして一覧で取得できれば、 ExcelやNumbers、Calcなどで使えて便利です。 スクレイピングやAPIで取得するなどの方法もありますが、 個人で利用するには、簡便に取得できれば十分でしたので、 ブラウザから誰でも利用できる、ブックマークレットを作りました。 使い方 ブラウザで新しいブックマークを作り、次の内容をURL欄に貼り付けます。 ブックマークの名前は、 Google検索結果CSVダウンロード などで良いでしょう。 Googleの検索結果画面で、登録したブックマークをクリックすると動作します。 javascript:(()=>{const b=d=>'"'+d.map(g=>g.replace(/"/g,'""')).join('","')+'"',c=new Blob([new Uint8Array([239,187,191]),[b(['href','decoded','title','breadcrumb','date','description'])].concat(Array.from(document.querySelectorAll('div.rc')).map(d=>{const g=d.querySelector.bind(d),h=g('div.r a').href,i=g('div.s span.f'),j=g('div.s span.st');let k=h;try{k=decodeURI(h)}catch(l){}return b([h,k,g('div.

Armadillo-IoT G3でAWS IoTを動かす

イメージ
Armadillo-IoT G3でAWS IoTを動かす : Armadillo-IoT G3(以下、Armadillo)より、AWS IoTに接続するまでの手順を紹介します。 AWS IoTはインターネットに接続したデバイスとAWSの双方向通信を可能にするサービスです。 AWS IoTへのモノの登録 AWS IoTでは「モノ」という単位でデバイスを管理します。 モノとしてArmadilloを登録することで、ArmadilloからAWS IoTが使用可能となります。 実際に登録する手順を記載します。 AWSマネジメントコンソールにログイン後、 https://aws.amazon.com/iot にアクセスします。 左のペインから「管理」を選択します。 ページから「作成」をクリック後、遷移したページで「単一のモノを作成する」を選択します。 モノの名前を入力し、ページ下部の「次へ」をクリックします。 証明書の作成をクリックします。 3つのファイルすべてをダウンロードします。その後、証明書を有効化します。そして、ページ下部の「完了」を選択します。 左のペインの「安全性」から「ポリシー」を選択します。 ポリシーの名前と、アクション(iot:*)を入力後、許可にチェックを入れ、「作成」をクリックします。 左のペインの「安全性」から「証明書」を選択します。 先ほど作成した証明書の右上の「・・・」をクリックし、ポリシーのアタッチを選択します。 先ほど作成したポリシーにチェックを入れ、アタッチをクリックします。 https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/managing-device-certs.html#server-authentication よりAmazon ルート CA 1をダウンロードし、root-CA.crtにリネームしてください。 これで、AWS IoTへのモノの登録が完了します。 Armadillo上での準備 ArmadilloにPython3をインストールします。 [Armadillo ~]# apt update [Armadillo ~]# apt install python3 pipを用いて、「AWS IoT Pytho

gulpでの独自関数を実行する

gulpでの独自関数を実行する : gulpで独自の処理をいれたい時がありますよね。 そんな時の覚書。 through2 https://qiita.com/morou/items/1297d5dd379ef013d46c 上記記事がとてもわかりやすく書いてありました! これを参考にプラグインは作成できましたが、そんな大層なものは不要なときはthrough2を使って記述しましょう。 gulpfile.js const through = require('through2'); gulp.task('deploy', (cb) => { gulp.src(['src/**'], { base: '.' }) .pipe(through.obj((file, enc, callback) => { if (file.isNull()) { // 何もしない return callback(null, file); } if (file.isStream()) { // ストリームの場合はエラー this.emit('error', new Error('Streams not supported!')); }else if (file.isBuffer()) { // ファイルの内容をcontentsに読み込み let contents = String(file.contents); // 独自の処理を記述する // ・・・ return callback(null, file); } })); }); このようにthrough.objを使用すれば処理が記述できます!

Node.jsでデスクトップ通知(gulpもね)

Node.jsでデスクトップ通知(gulpもね) : gulpでdeploy作業を行なっているのですが、処理に時間がかかるので、なんか通知みたいなのできないかなと思い、調べてみると良いモジュールがあったのでそのメモ。 node-notifier node-notifierを使うとNode.jsでデスクトップ通知ができるようです。 https://github.com/mikaelbr/node-notifier さっそくインストールしてみます。 $npm install --save-dev node-notifier package.jsonに追加されます。 package.json "devDependencies": { "node-notifier": "5.3.0", } node-notifierを使用する 使用するときは以下のように使います。 const notifier = require('node-notifier'); notifier.notify({ title: 'タイトル', message: 'メッセージ', }); アイコンやサウンドも設定できるようです。 const notifier = require('node-notifier'); const path = require('path'); notifier.notify({ title: 'タイトル', message: 'メッセージ', icon: path.join(__dirname, '/images/hogehoge.png'), // 画像 sound: 'Funk', // Basso, Blow, Bottle, Frog, Funk, Glass, Hero, Morse, Ping, Pop, Purr, Sosumi, Submarine, Tinkから選択 // trueだとデフォルトのBottle }); 他にも色々オプション

AWSのKubernetes環境(EKS)をコマンド一発で作る

AWSのKubernetes環境(EKS)をコマンド一発で作る : Amazon Elastic Container Service for Kubernetes(EKS)がGAになって半年ちょっとが経ち、ようやく重い腰を上げて作ってみました。 ただドキュメント( Getting Started with Amazon EKS )がなかなか読みにくく、長いのでCloudformationやAWS CLIを使ってコマンド一発で自動で起動できるようにしてみました。 前提 必要なツール kubectl AWS CLI やる気 環境 macOS ソースコード ソースコードはgithubにあげています。 https://github.com/monkeydaichan/eks-sample os1ma さんのソースをforkする形で利用させてもらってます。 やっていく EKSは限られたリージョンでしか構築できません。今回はオレゴン(us-west-2)に構築しました。 それではEKSを作っていきましょう。 EKSの起動 eks-start.shを実行すると、env/env.shで環境変数を設定してEKSが作られていきます。 作られるリソースの名前を変更したい場合はここを変更してください。 $ ./eks-start.sh シェルを実行して20分ぐらいでEKSの構築が終わります。 EKSの構築が終わったら下記のコマンドでKUBECONFIGを設定します。 変数EKS_KUBE_CONFIG_FILEはenv/env.shでセットしている内容に読み替えてください。 $ KUBECONFIG=EKS_KUBE_CONFIG_FILE KUBECONFIGのセットが終わったら、nodeの情報が取れます。 $ kubectl get node ダッシュボードにアクセス コマンドだけじゃ嫌よ。というかたはダッシュボードをデプロイしてください。 $ cd resource/dashboard $ ./deploy.sh tokenとURLが表示されます。 URLにアクセスしてtokenを入力するとダッシュボードにログインできます。 サンプルアプリケーション AWSがサンプルアプリケーションを公開し

なぜsuper(props) を書くの? - React界のカリスマ「Dan Abramov」のブログ

なぜsuper(props) を書くの? - React界のカリスマ「Dan Abramov」のブログ : なぜ私たちは super(props) を書くの? 以下は Why Do We Write super(props)? の日本語訳です。 (翻訳、おかしい部分があるかもしれませんが自己責任でお願いいたします。) Hooks が最新でアツいって聞いたよ。皮肉なことだけどクラスコンポーネントの楽しい事実について述べてブログをスタートしたい。どうだ! これらの潜在的問題はReactを効率的に使うためには重要じゃない。でも、もしどうやって動いているか深く掘り下げることが好きなら面白いかもね これが最初のやつ。 私は人生で super(props) 何度も書いたよ class Checkbox extends React.Component { constructor(props) { super(props); this.state = { isOn: true }; } // ... } もちろん、 class fields proposal なら儀式(constructor)をスキップできる。 class Checkbox extends React.Component { state = { isOn: true }; // ... } 2015年に React 0.13 がプレーンクラスのサポートを追加したとき、こんな感じの構文が 計画 されていたよ。コンストラクタの定義と super(props) の呼び出しは常にクラスフィールドが人間工学に基づいた代替手段を提供するまでの一時的な解決策だった。 でも、ES2015の機能のみを使って例に戻りましょう。 class Checkbox extends React.Component { constructor(props) { super(props); this.state = { isOn: true }; } // ... } なぜ私たちはsuperを呼ぶの?呼ばなくてもいいの?もし呼ばないといけないなら、 props を呼ばなかったらなにが起こるんですか?他に何か議論はあ