タグ

ブックマーク / www.buildinsider.net (15)

  • インターフェースを「契約」として見たときの問題点 ― C#への「インターフェースのデフォルト実装」の導入(前編)

    C#におけるインターフェースとは、ある型が持つべきメソッドを示す「契約」であり、実装は持てない。だが、このことが大きな問題となりつつある。今回から全3回に分けて、C#がこの問題にどう対処しようとしているかを見ていく。 ← 前回 連載 INDEX 次回 → 現在、「C#にインターフェースのデフォルト実装(Javaでいうデフォルトメソッドに相当する機能)を追加しよう」という話がある。C#にこの機能を導入するに当たっては、C#コンパイラーだけではなく、.NETランタイムの修正が必要になる。 この機能の説明に入る前に、前編では、そもそもインターフェースというものが必要とされる理由や、その内部的な仕組みについて説明したい。 インターフェース 多くのプログラミング言語で、クラスとは別にインターフェース(interface: 境界面、接点)*1というものが用意されている。この2つの違いはおおむね、以下の

  • nullが生まれた背景と現在のnullの問題点 ― null参照問題(前編)

    Cの系譜を継ぐC#ではnullが長らく使い続けられてきたが、最近ではその存在が大きな問題だと認識されている。前後編でこの問題を取り上げ、今回(前編)はnullを取り巻く事情について考察する。 ← 前回 連載 INDEX 次回 → 近年、nullの存在は、billion dollar mistake(10億ドル規模の損失をもたらす過ち)と呼ばれるくらい忌避されるものになっている。 nullは、低コストでそこそこ安全に参照を扱えるという意味で悪くない妥協ではあるが、技術が進歩した現在ではもう少し賢い参照の扱い方があるはずである。C#のように、これまでnullを認めてしまっているプログラミング言語で、今からそれを完全になくすというのは現実的ではないが、nullに起因する問題を少しでも避ける手段はこれからでも追加していけるだろう。 今回は、nullが生まれるに至った背景から始め、nullが抱える問

    InoHiro
    InoHiro 2017/01/11
  • Unicodeと、C#での文字列の扱い

    進化の過程で煩雑な文字コード体系になっているUnicodeは、プログラミングでの取り扱いが面倒だ。C#とUnicodeの関係はどうなっているのか? C#が抱える課題とその解決策について見てみよう。 ← 前回 連載 INDEX 前編では、文字コード、そしてUnicodeがこれまでにどのような進化の道程を歩んできたかを見た。そこで説明したように、文字コード自体が結構な複雑さになっている。当然、プログラミング言語における文字列の扱いにも面倒が付きまとう。 後編である今回は、C#のstring型がどういう実装になっているかや、現状抱えている課題、それに対して検討している解決策などについて説明していく(以下、文字コードは全て16進数で表記する)。 文字列型 まずは、プログラミング言語内部での文字列の扱いについて話そう。Unicodeの歴史で話した通り、もともと、Unicodeは2Bytes固定長の文

  • Unicodeとは? その歴史と進化、開発者向け基礎知識

    まず、Unicodeで規定されている文字1つ1つには、最大で21bits(16進数で5~6桁)の数値が割り振られている。この数値をコードポイント(code point: 符号点、符号位置)という。 ちなみに、Unicodeでは、コードポイントの数値で文字を表すための表記として、「U+16進数」という書き方を使う。例えば、「a」であればU+61、「あ」であればU+3042と表記する(以下、文字コードは全て16進数で表記する)。 一方で、この21bitsのコードポイントがそのままテキストファイルに保存されるわけではない。一定のルールでバイト列に符号化することになる。詳細については、後々、Unicodeの歴史を追いつつ説明していくが、おおむね以下の3つを押さえておけばいいだろう(加えてコードポイントがビッグエンディアンで格納されるか、リトルエンディアンで格納されるかも重要になる。が、今回と次回は

  • C# 7、そしてその先へ: 非同期処理(前編) - Task-like - Build Insider

    C#の進化の中でも「非同期メソッド」はコーディング方法を大きく変えるほど革新的だったが、そこにはまだ課題もある。C# 7~将来のC#で、非同期処理はどう進化するのか、前後編で見ていこう。 ← 前回 連載 INDEX 次回 → C# 5.0/VB 11で追加された非同期メソッドは、プログラミング作業に大きなインパクトを与えた革新的な機能である。C#開発での非同期処理は劇的に楽に書けるようになった。また、C#の非同期メソッドを参考にして、ECMAScriptやC++にも同様の構文が提案されている。 ただ、要望はあるのに現状の非同期メソッドではできないことも残されている。大きなものは以下の2つである。 (1)戻り値の型にvoid、Task、Task<T>しか認めていない (2)非同期シーケンス(awaitとyield returnの混在)に対応していない どちらも、C# 5.0の直後からずっと要

    InoHiro
    InoHiro 2016/09/01
  • 誰でも簡単に超高速なクエリができるBigQueryとは?

    この2つの技術は、グーグル独自の技術というわけではない。しかし、ハードウェアから構築している、既存のグーグルのクラウド技術を活用し、パブリックなクラウドサービスとして提供可能なレベルの実装になっている点がGoogle BigQueryの強みとなっている。 BigQueryの特徴 他の類似サービスとの比較 巨大データを処理する技術としては、同じグーグルが使ってきたMapReduceというものがある。MapReduceとBigQueryを比べると、MapReduceが巨大なデータを安定的に処理できるプログラミングモデルであることに対し、BigQueryはアドホックにトライ&エラーしながらクエリを実行するサービスであることが異なっている。 MapReduceは、非構造化データを、プログラミングモデルを通して扱うことができ、巨大なテーブルの結合や巨大な出力結果のエクスポートも可能である半面、処理時

    InoHiro
    InoHiro 2015/03/31
  • Windows 10に搭載される新ブラウザー“Microsoft Edge(旧Spartan)”とは?(Web制作者視点)

    Spartanとは何か? IEはどうなるのか? Web制作への影響は? また、これらの疑問の鍵を握る「レンダリングエンジン」についてもまとめる。 「Windows 10 技術プレビュー(Technical Preview) 2015年1月版(日語、ビルド9926)」(以降、Windows 10 TP)が、1月24日ごろに公開された。その発表イベントの中で「Windows 7/8/8.1やWindows Phone 8.1などからWindows 10へのアップグレードが発売から1年は無料」と発表されたことが、大きな話題となっている。このキャンペーンにより、エンドユーザーのWindows OS環境が、その1年で一気にWindows 10に最新化される可能性があるだろう。実際にそうなれば、Windowsアプリを作るデベロッパーや、Webサイトを制作するエンジニアにとっては、最新テクノロジが使い

  • 無料でダウンロードできるIT技術系電子書籍(EPUB/PDF)一覧

    2015年に入り、「Amazon.co.jp: Kindle無料マンガ雑誌」がスタートするなど、や雑誌を電子書籍で読む機会が増えてきている。特に「紙の書籍よりも、電子書籍の方が大きく割安になっている場合は、電子書籍で買う」という人も多いのではないだろうか(特にIT業界の人は)。実際に自分もAndroidタブレットやiPhoneなどを使って電子書籍を読むことが増えてきた。 まだ電子書籍を読む習慣がないという人は、今春から試してみてはいかがだろうか。紙の書籍ではあり得ないが、電子書籍であれば無料で提供されているものもある。稿ではそんな「無料*1でダウンロードできるIT技術電子書籍」を一挙にまとめて紹介する(※特に主要な出版社のものを取り上げている。「これがないぞ」というのがあればお知らせいただけると幸いだ)。 なお以下では、英語書籍が圧倒的に多いので、逆に日語書籍にのみ【日語】と

    無料でダウンロードできるIT技術系電子書籍(EPUB/PDF)一覧
    InoHiro
    InoHiro 2015/03/03
  • C# 6.0で知っておくべき12の新機能

    Visual Studio 2015正式版のリリースで利用可能になったC#言語の最新バージョン「6.0」の新機能を解説する。CTP 5→正式版に合わせて改訂。 連載 INDEX 次回 → 「C# 6.0」と呼ばれているC#の最新バージョンは、Visual Studio 2015*1で利用可能になっている。 この最新バージョンでは、「.NET Compiler Platform」(コード名:“Roslyn”)と呼ばれる新しいコンパイラーが導入されており、静的解析APIの提供など、コンパイラーまわりに大きな変更が行われている。一方、言語機能に目を向けると、async/awaitという大きな機能が追加されたC# 5.0に比べると、一つ一つの新機能自体は小さい。しかし、それらはプログラムをより書きやすくするための機能なので、C#開発者にとってはやはり重要なアップデートとなっている。 そして、これら

    InoHiro
    InoHiro 2015/02/09
  • 人気上昇中のJavaScriptライブラリを調べてみた【2015年版】

    altJSの人気が混戦で面白い! 2014年中に人気が急上昇してきており、「2015年では必須の知識」となりそうなJavaScriptライブラリをランキング形式で発表。 ← 前回 連載 INDEX 次回 → こちらのページで【2016年版】も発表! ■ 2015年が始まり、心機一転で「今年こそはWeb開発を頑張ろう」と思っている人も少なくないだろう。そんな方々に向けて稿では、2014年中に人気が急上昇してきており、「2015年では必須の知識」となりそうなJavaScriptライブラリをランキング形式で発表する(※昨年の2014年版はこちら)。 なお、稿のランキング決定では、検索キーワードの流行を調査可能な「Googleトレンド」(「すべての国」「過去 12 か月間」「すべてのカテゴリ」「ウェブ検索」という条件で絞り込み)を使って、ライブラリの人気をジャンルごとに比較した(※ライブラリ名

  • 最先端のC#環境で働く開発者が感じたVisual Studio 2015移行への期待

    最先端のC#環境でゲーム開発を行っているグラニでは、Visual Studio 2015 Previewを見て何を感じたのか。LINQとReactive Programmingで有名なneuecc氏によるコラム、始動。 連載 INDEX 次回 → 筆者がCTOを務める株式会社グラニではusing CSharp;をスローガンに、最先端のC#環境でアプリケーション開発を行っています。しかし、日進月歩のこの世界、.NETもまた速いスピードで進化を続けています。ということは、足を止めてしまえば、すぐに最先端は普通の環境に、普通の環境はレガシーな環境になってしまいます。と、いうのはさすがに言い過ぎとしても、そのぐらいの気概で取り組んでいます。 グラニは、C#では国内でも有数の熱い環境だと自負しますが、今回から始まるこのコラムでは、そんな最先端のC#環境においてどんなテクノロジを利用していくことを検討

    InoHiro
    InoHiro 2014/12/18
  • [Underscore.js]さなざまなコレクション操作を行う

    コーナーは、技術評論社発行の書籍『JavaScriptライブラリ実践活用[厳選111]』の中から、特にBuild Insiderの読者に有用だと考えられる項目を編集部が選び、同社の許可を得て転載したものです。 『JavaScriptライブラリ実践活用[厳選111]』の詳細や購入は技術評論社のサイトや目次ページをご覧ください。

  • プログラミングやマークアップで特に役立つ、Sublime Textの標準機能 - Build Insider

    Expand Selection to WordでのTipsをいくつか紹介する。 例えば1つおきに編集したい場合などは、Ctrl(Win)/Command(Mac)+Kキーで選択がスキップできる(図2.1)。また、Ctrl(Win)/Command(Mac)+Dキーを入力しすぎて、想定よりも多く選択してしまった場合は、Ctrl(Win)/Command(Mac)+Uキーで、選択をUndoできる。ちなみに、Ctrl(Win)/Command(Mac)+Uキーは、Ctrl(Win)/Command(Mac)+ZキーではUndoできないものをサポートしているので、ここで解説している例だけでなく、例えば複数行選択で↓キーを押しすぎた場合などでも利用できる。 また、同じ文字列を一気に複数選択する場合は、Alt+F3キー(Win)/Ctrl+Command+Gキー(Mac)で行える。 Expand S

    InoHiro
    InoHiro 2014/08/05
  • TypeScript早わかりチートシート【1.5.3対応】 - Build Insider

    TypeScript 1.5正式リリース。最新言語仕様を速習しよう! TypeScriptを使うときに役立つ情報がまとまったチートシート(1クリックで試せるサンプル付き)。 稿はTypeScript 1.5.3を対象に解説を行います(※2016/11/08追記:姉妹サイトの@IT Insider.NETで「特集:TypeScript 2.0概説」 を掲載していますので、稿と併せてご参照ください )。 早いもので、TypeScript 1.0がリリースされた2014年4月3日から、1年以上が経ちました。今年の頭あたりに記事のTypeScript 1.0版からの更新の依頼が来た時は、(記事改訂は想定していなかったので)びっくりしました。情報をメンテし、良い情報がWeb上に残るよう運営するのは大変であろうな、と想像に難くないですが、筆者としてはうれしい限りです。 さて、去る2015年3月5

    TypeScript早わかりチートシート【1.5.3対応】 - Build Insider
    InoHiro
    InoHiro 2014/05/08
  • Jenkinsをインストールして使ってみよう[Mac/Linux/Windows]

    継続的インテグレーションツール「Jenkins」の使い方を基礎から解説する連載がスタート。初回は、Jenkinsの概要とインストール手順、簡単なジョブの登録方法を説明する。 連載 INDEX 次回 → Jenkinsとは何か? 「Jenkins」というツールをご存じだろうか? 情報に敏感な読者であれば「継続的インテグレーション(CI)」という言葉とともにネット上で一度や二度は見たことがあるかもしれない。しかしながら「継続的インテグレーション」という言葉の難解さや「Javaで作成されている」という点で、敷居が高く感じられ、導入を見送っているプログラマーの方もいるのではないだろうか。 そんな方々にとって、連載がJenkinsを使うきっかけになれば幸いだ。連載では、Jenkinsの使い方を基礎から説明する。その説明用のプログラミング環境としてはRubyを採用しているが、他の環境の方にも参考と

    Jenkinsをインストールして使ってみよう[Mac/Linux/Windows]
    InoHiro
    InoHiro 2013/11/01
    次回以降に期待
  • 1