タグ

ブックマーク / ascii.jp (64)

  • WindowsにLinuxカーネルが入るとWeb開発が変わる――de:code 2019基調講演で「WSL2」をデモ

    マイクロソフトは2019年5月29日~30日の2日間、都内で技術者向け年次イベント「de:code 2019」を開催している。29日朝に行われたキーノートには、日マイクロソフト 代表取締役 社長の平野拓也氏と、米マイクロソフトからMicrosoft 365担当バイスプレジデント ジャレット・スパタロウ氏、Azure担当バイスプレジデントのジュリア・ホワイト氏、テクニカルフェローのアレックス・キップマン氏が登壇した。 稿ではキーノートレポートの前編として、ジャレット・スパタロウ氏の講演内容を紹介する。中編ではジュリア・ホワイト氏によるAzure関連の講演、後編ではアレックス・キップマン氏と平野拓也社長の登場シーンをダイジェストで紹介する。 Microsoft Graphが生産性を上げる de:code 2019のキーノートに登壇した米マイクロソフト Microsoft 365担当バイ

    WindowsにLinuxカーネルが入るとWeb開発が変わる――de:code 2019基調講演で「WSL2」をデモ
  • Nintendo Switchのプッシュ通知を支えるテクノロジー

    テクノロジーに興味がある人なら、身近な製品の裏側って気になるもの。そんな知的欲求を満たしてくれるセッションが、昨年の夏に行なわれたre:Union 2018 Osakaには用意されていた。Nintendo Switchの裏側にあるシステムを紹介する「Nintendo Switch向けプッシュ通知システム『NPNS』」と題して、任天堂 ネットワークシステム部の渡邉 大洋さんが語ったセッションだ。フレンド登録したユーザーのゲームプレイ通知など、見慣れたあのメッセージは、こうやって送られていたのだ。 想定同時接続数1億台のリアルタイム通信インフラをAWSに構築 「実はこのセッション、AWS Summit Tokyoでもやったので聴いたことがある人がいるかもしれません。が、そこは今日初めて聴いたようなテンションで聴いてください」(渡邉さん) という出足で会場の笑いをさらった渡邉さんにならって私も書

    Nintendo Switchのプッシュ通知を支えるテクノロジー
  • 約60時間を非常用電源設備で乗り切った石狩データセンターの奇跡

    2018年9月6日に北海道を襲った震災により、停電状態に陥ったさくらインターネットの石狩データセンターに対し、9月8日ようやく電力供給が再開された。想定を超えた約60時間を非常用電源設備で乗り切り、インフラ事業者としての矜持を見せた石狩データセンターの「奇跡」について、改めてきちんと説明していきたいと思う。 卓越したオペレーション能力で「想定外」を「想定内」に 2011年11月に開設された石狩データセンターは、数多くのサーバーを収容するさくらインターネットの基幹データセンターになる。開設当時はソーシャルゲームの普及でサーバーの需要がうなぎ登りだったほか、環境に配慮したエコなデータセンターが求められていた。こうしたニーズに対応する石狩データセンターは、寒冷地のメリットを活かした外気冷却と東京ドーム1個分に相当する広大な敷地を用いたスケーラビリティが大きな売りだった。私も開設時と増設時で2回ほ

    約60時間を非常用電源設備で乗り切った石狩データセンターの奇跡
  • 池澤あやかの自由研究:深センは「スマホ決済社会が到来したら」を体現する街だった

    中国・深センといえば、世界一の電気街であり、世界中の工場が集まる街でもあり、ハードウェアスタートアップが生まれる街でもあります。さまざまな側面のある深センですが、今回注目したいのは「スマホ決済サービス」についてです。 アメリカクレジットカード社会、日は現金社会だと言われていますが、中国は完全にスマホ決済社会です。テンセントの「WeChat Payment」や、アリババグループの「Alipay」などのスマホ決済サービスが広く一般に普及しています。 「広く一般に」というのは誇張表現でもなんでもなく、デパートはもちろん、タクシーや個人営業のお店でもこれらのサービスを使って決済することができます。

    池澤あやかの自由研究:深センは「スマホ決済社会が到来したら」を体現する街だった
  • グーグルはAndroid Wear 2.0をどんな発想で開発した? 独占インタビュー (1/3)

    Android Wear エンジニアリング担当バイス・プレジデントを務めるDavid Singleton氏。今回のインタビューは、東京とマウンテンビューのグーグルオフィスを結んでビデオチャットで実施された AndroidをベースにしたウェアラブルOSである「Android Wear」が2.0にバージョンアップした。Android Wearは2014年3月にバージョン1が登場以降、細かなアップデートを繰り返してきたが、「2.0」は機能・UIの大幅な変更を含む、これまでにない大型アップデートとなっている。 機能の詳細はすでに別記事「スマートウォッチが大進化する「Android Wear 2.0」5つの変更ポイント」が公開されているが、それらの機能はどういった発想で開発されたのだろうか? そして、Android Wearの開発チームは、なにを重視して開発に臨んでいるのだろうか? グーグルでAnd

    グーグルはAndroid Wear 2.0をどんな発想で開発した? 独占インタビュー (1/3)
  • Go言語で知るプロセス(3)

    シグナルのハンドラを書く ここからは、実際にGo言語でシグナルを扱う方法を紹介します。 最初に注意点ですが、シグナルに関する設定はプロセス全体に及ぶグローバルな設定です。 また、シグナルはフォアグラウンドのプロセスに最初に送信されます。 したがって、自作のコードでシグナルのハンドラを書き、それをgo runを使って実行すると、シグナルは自作コードのプロセスではなくgoコマンドのプロセスに送信されてしまいます。 これを避けるため、シグナルをハンドルするコードはgo runでは実行せず、go buildコマンドで実行ファイルを作成してから実行してください。 手始めに、SIGINTとSIGTERMを受け取ってもすぐには終了せず、それぞれSIGINT、SIGTERMと表示するコードを下記に示します。 package main import ( "fmt" "os" "os/signal" "sys

    Go言語で知るプロセス(3)
  • ASCII.jp:Twitterのライバル? 実は、新しい「マストドン」(Mastodon)とは!|遠藤諭のプログラミング+日記

    ドイツの24歳の若者が作った 日テレビで『週刊パソコン丼』という番組をやらせてもらっていたことがあった。当時やっていた月刊アスキーがページ数的にパツンパツンなので、テレビにまではみ出した感じだった。ちょうどインターネットが使われはじめたタイミングの'96年~'97年、深夜時間帯の情報番組である。その中に、「私とパソコン」という30秒ほどのユーザー訪問コーナーがあった。 古谷徹さん、いしかわじゅんさん、チャック・ウィルソンさん、爆笑問題、谷山浩子さん、杉田かおるさん、ヒロコ・グレースさん、渡辺香津美さんなど、実に、たくさんの方々に出演いただいたのだが(約90人)、先日、そのうち何かを見ていたら、『サクラ大戦』シリーズなどで有名な広井王子さんの回があった。 モバイルギア(NECが発売していたフルキーボード端末)を取り出した広井氏は、「これからのコンピューターの使い方」と断った上で、「デジカ

    ASCII.jp:Twitterのライバル? 実は、新しい「マストドン」(Mastodon)とは!|遠藤諭のプログラミング+日記
  • ASCII.jp:ファイルシステムと、その上のGo言語の関数たち(3)|Goならわかるシステムプログラミング

    Go言語でシステムプログラミングの世界を覗くこの連載では、前々回からファイルシステムに関係する話題を扱ってきました。 今回の記事では、その総まとめとして、アプリケーションから見たファイルシステム周りの最深部を辿っていきます。 扱う話題は次の4つです。 ファイルロック ファイルのメモリへのマッピング 同期・非同期とブロッキング・ノンブロッキング select属のシステムコールによるI/O多重化 ファイルのロック(syscall.Flock()) ファイルのロックは、複数のプロセス間で同じリソースを同時に変更しないようにするために「いま使用していますよ」と他のプロセスに伝える手法のひとつです。 ファイルロックの最も単純な方法は、リソースが使用中であることをファイル(ロックファイル)によって示すというものでしょう。 たとえば、古いプログラマ(30代以上?)にはお馴染みのCGI(かつて動的なウェブ

    ASCII.jp:ファイルシステムと、その上のGo言語の関数たち(3)|Goならわかるシステムプログラミング
  • ファイルシステムと、その上のGo言語の関数たち(1)

    コンピュータにはさまざまなストレージが接続されています。 ハードディスクやSSD、取り外し可能なSDカード、読み込み専用のDVD-ROMやBlu-Ray、書き込み可能なDVD-RWなど、種類を網羅するのが困難なほどです。 種類はいろいろありますが、どのストレージも、基的にはビットの羅列を保存できるだけです。 そこで、そのストレージスペースを、特定の決まったルールで管理するための仕組みが必要になります。 たとえば、自分のローカルフォルダにあるテキストファイルをエディタで開き、編集して書き込みたいとします。 ストレージのどこかにテキストファイルの内容を表すビット列があるはずですが、その実体のある場所を、ファイル名から探し出せる必要があります。 また、そこから内容を読み込んだり、新しい内容を上書きすることが、アプリケーションから不自由なく実現できなければなりません。 そのためにOSに備わってい

    ファイルシステムと、その上のGo言語の関数たち(1)
  • Unixドメインソケット (1/2)

    今回はソケット通信の最終回ということで、Unixドメインソケットについて紹介します。 UnixドメインソケットはPOSIX系OSで提供されている機能です。 コンピュータ内部でしか使えない代わりに、高速に通信が行えます。 TCP型(ストリーム型)と、UDP型(データグラム型)の両方の使い方ができます。 WindowsではこのUnixドメインソケットをそのまま使うことはできません。 似た概念の機能として、「名前付きパイプ」というものが存在します。 以降の説明では、まずUnixドメインソケットについて説明したあとで、 Windowsの名前付きパイプについても説明します。 (Windowsメインの方は、前半のUnixドメインソケット固有の説明については軽く流して読んでください。) Unixドメインソケットの基 TCPとUDPによるソケット通信は、外部のネットワークに繋がるインタフェースに接続しま

    Unixドメインソケット (1/2)
  • GoでたたくTCPソケット(後編)

    ソケットの使い方そのものはシンプルです。 繋いでしまったら、書き出し、読み込み、クローズしかありません。 APIリファレンスを読めれば、とりあえず使うことはできるでしょう。 ですが、ソケットまわりのパフォーマンスはユーザの体感に直結します。通信が切れる、タイムアウトなどのエラーが発生する可能性も多々あります。 最大の効率を得るには、ボトルネックを中心に最適化を行うしかありません(これは『ザ・ゴール』というビジネス書で「制約理論」として示されている問題でもあります)。 今回は、前回に引き続き、HTTPの機能を再現しながらソケットの使い方について学んでいきます。 HTTPの歴史を通して、ソケットの実行効率を向上させる方法を具体的に見ていきましょう。 圧縮 HTTPの速度アップ手法としてよく使われているのが圧縮です。 昔よりもインターネットやWifiの性能は向上しましたが、それでもCPUを使って

    GoでたたくTCPソケット(後編)
  • GoでたたくTCPソケット(前編)

    このうち、アプリケーションを作るために気にする必要があるのはトランスポート層よりも上のレイヤーだけです。 実際のインターネット通信では、ケーブルや無線を通してIPパケットの形でデータがやり取りされますが、 アプリケーションで直接IPパケットを作ったりするわけではありません。 HTTPやTCPのレベルで決められているルールに従って通信をすれば、それより下のレイヤーで必要になる詳細を気にすることなく、 ネットワークの向こう側にあるアプリケーションとやり取りができるわけです。 Go言語では、HTTP、TCP、UDPについて組み込みの機能が提供されています1。 実用的なアプリケーションでは、それらの機能を使って、自分のアプリケーションに必要なプロトコルを実装していくことになります。 HTTPとその上のプロトコルたち 今回の記事の目標は、ネットワークを扱うプログラムにとって低レベルなソケットをGo

    GoでたたくTCPソケット(前編)
  • Goから見たシステムコール (1/2)

    今回は、システムコールそのものについて深く掘り下げていきます。 システムコールとは何者で、ないとどうなるのか? システムコールを呼び出すコード(Go言語アプリケーション側)を探索しよう システムコールから、実際にOSカーネル内で仕事をする関数が呼び出されるまでのステップは? システムコールの呼び出しをモニターするツールの紹介 とはいえ、Goでアプリケーションプログラムを書くほとんどの人は、直接システムコールを呼び出すコードを書くわけではないでしょう。 また、OSを改造してシステムコールを自分で作成することもまれでしょう。 そのため、今回の記事にはサンプルコードを使ったハンズオンはあまりなく、手を動かしてコード化するネタはありません。 この連載のテーマは「プログラマの視点から、具体的で役に立ちそうな低レイヤーの情報を提供する」ことですが、今回に限っては座学的な内容です。 謝辞 今回の執筆にあ

    Goから見たシステムコール (1/2)
  • Rubyで電卓を作る

    こんにちは。Rubyを作りながらRubyを学ぼうという連載企画、第4回です。 前回は、関数を使った木の扱い方について紹介しました。 今回の目標は、関数と木についてもう少し掘り下げつつ、「四則演算の木」を扱うプログラム、 すなわち電卓アプリをRubyで作ることです。 ●Rubyのライブラリと、そのインストールについて 今回は題に入る前に、ちょっとRubyのライブラリについて話をしましょう。 プログラミング言語では、全員が使うわけでもない機能は後付けで必要な人だけが 追加できるようになっていて、Rubyにもそのような仕組みがあります。 それがライブラリです。 この連載ではRubyを作りながらRubyを学んでいるわけですが、 今回の記事では、ちょっとゼロから作るのは面倒な機能を使いたいので、 その機能を筆者のほうでminrubyという名前のライブラリにしておきました。 そこで、minruby

    Rubyで電卓を作る
  • Rubyで「木」を扱う

    こんにちは。Rubyを作りながらRubyを学ぼうという連載企画、第3回です。第1回と第2回では、Rubyインタプリタとは何か、Rubyでプログラムを書いて動かす方法、そして「変数」「分岐」という基的な言語機能について学びました。 ここで、ちょっと根源的な質問について考えてみてください。 プログラミングとは、いったいなんなんでしょう? この質問の答えは、どういう話をしているかによって、かなりいろいろなものが考えられます。 とはいえ、ものすごくざっくりとした答えとして、「プログラミングとは『何かを都合よくいじること』である」というものがありえるでしょう。 ゲームのプログラムなら、「何か」に相当するのはキャラクターとか弾とかで、その状態をプレイヤーの操作などに応じて変化させていくことでプログラミングします。 前回の記事で書いたプログラムで「何か」に相当するのは、「数」や「文字列」です。それらを

    Rubyで「木」を扱う
  • 「よくないスタートアップ」が伸びた理由 労務管理で中小・ベンチャー企業を支えるSmartHR (1/3)

    労務の手続きをクラウド化するスタートアップが、中小・ベンチャー企業の間で支持を広げている。 背景には、企業経営での入退社の書類作成や社会保険・雇用保険への加入などさまざまな労務手続きがある。この一連の手続き、実は非常に煩雑で、現場の労務管理責任者に大きな負担を強いている。そのような状況を改善すれば、経営者や人事担当者は来の業務に専念し、より価値ある仕事を成し遂げられるのではないか。 この課題に答えるのが、労務管理クラウド『SmartHR』(スマートエイチアール)だ。画面のフォームに従って情報を入力すれば書類が自動作成され、電子申請まで行ってくれるため役所との往復は不要になる。人事データベースとしても使用可能。ありそうでなかったこのクラウドサービスは、2015年11月に一般公開されると瞬く間に契約者数を伸ばし、現在500社以上もの企業で導入されている。 SmartHRを開発・提供しているの

    「よくないスタートアップ」が伸びた理由 労務管理で中小・ベンチャー企業を支えるSmartHR (1/3)
  • 低レベルアクセスへの入り口(1):io.Writer

    今回は、Go言語がOS直上の低レイヤーを扱いやすくするために提供している io.Writer インタフェースの紹介をします。Go言語がシステムプログラミングを簡単に行える言語でありつつも、それなりに少ない記述量で比較的高速で、それでいて多くのことが達成できるのは、これから説明するようなインタフェースにより、低レイヤーが扱いやすい構造になっているからです。インタフェースと、インタフェースに対して提供されるさまざまなサービス関数が、Go言語の安い、早い、うまいの秘密です。 io.WriterはOSが持つファイルのシステムコールの相似形 前回の記事では "Hello World!" プログラムの関数呼び出しをデバッガーでたどり、最後にシステムコール syscall.Write() が呼び出されているようすを見ました。OSでは、このシステムコールを、ファイルディスクリプタと呼ばれるものに対して呼び

    低レベルアクセスへの入り口(1):io.Writer
  • Goで覗くシステムプログラミングの世界

    プログラミングの勉強にあたってよく言われるのは、「流行に左右されるような技術の尻を追いかけるよりも、土台となる技術を身につけることが大切」ということです。 例えば、ウェブブラウザで動くJavaScriptを書くときは、流行しているライブラリの書き方を暗記するよりも、 ブラウザがどのようにCSSHTMLを解釈してスクリーンに文字や絵を描き出していく(レンダリングしていく)のかを理解することが大切です。 さもないと、ライブラリの流行が変わるだけで勉強したスキルが失われてしまいかねません。 データベースでも同じことがいえます。SQLの文法を学ぶことよりも、データベースがどのようにスケジューリングを行い、 どのようにデータを探索していくのかを学ぶほうが、パフォーマンス・チューニングのコツなどもひらめきやすくなるでしょう 1 。 「土台となる技術を身につける」を、もう少しちゃんと言い換えれば、「今

    Goで覗くシステムプログラミングの世界
  • Ruby超入門(前編)

    こんにちは。 この連載では、ちょっと変わったRuby入門を書いていきます。 想定読者は、Rubyを学びたいプログラミング初心者です。 Ruby以外の言語でプログラミングしたことがあると理解がはかどると思いますが、 Rubyを知らなくてもわかるように、なるべく丁寧に説明していくつもりです。 Rubyをある程度知っている読者には、最初の数回は退屈かもしれませんが、 回を重ねていくにつれ、より深くRubyを知ることができるはずです。 Rubyとは? Rubyは「プログラミング言語」です。 プログラミング言語とは、コンピュータにやらせたい仕事を書くための言語です。 つまり、Rubyを覚えて、Rubyでコンピュータへの指示を書けば、 コンピュータはその指示を実行してくれます。 この指示書のことを「プログラム」と言い、特にRubyで書かれたプログラムを「Rubyプログラム」と言います。 ところで、Ru

    Ruby超入門(前編)
  • Ruby作者まつもとゆきひろ氏2万字インタビュー (1/5)

    ゲストを招き、プログラミングの魅力やはじめ方のアドバイス、いま注目している技術などを語っていただくシリーズ。第1回目は、日を代表するプログラマーであるRubyアソシエーション理事長のまつもとゆきひろ氏に登場いただく。プログラミングをする上でかならず必要となるプログラミング言語。それを作るのはどんな人なのか? 聞いてみよう。前後編の2回に分けてお届けする。 ゲスト:まつもとゆきひろ(Rubyアソシエーション理事長) 聞き手:角川アスキー総合研究所 父親のガジェットを息子がぶんどって使う ──プログラミングをはじめたのは、たしか子供の頃だったとお聞きしたのですが。 まつもと「ええ、父親がいわゆるガジェット好きで、小学校6年のときに当時10万円くらいした“L-Kit16”を買ってきたんですよ、日橋(大阪の電気街)で。半田ゴテでそのキットを作ったけど、父親はすぐに飽きてしまいました。でも、小学

    Ruby作者まつもとゆきひろ氏2万字インタビュー (1/5)