タグ

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

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

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

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

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

    advblog
    advblog 2017/01/11
  • 歳を取ってもエンジニアを続けられるのか

    エンジニアが年を取るとはどんなことだろう。年を取ることのデメリットとメリット、加齢に対する心構えを筆者自身の経験を基に語ってくれた。 ← 前回 連載 INDEX 次回 → 今回は割と語り尽くされた感のある話題であるが、歳を取ってもエンジニアが続けられるのかという話をしてみたい。最初に結論から言ってしまえば、歳を取ってもエンジニアは「もちろん続けられる」なのだが、そうはいっても老化というのは否応なしに全ての人の身に降りかかってくる(将来は遺伝子研究が進んで老化というものがなくなるのかもしれないが)。 30半ば過ぎの方は、最近物忘れが段々と増えてきたり、あるいはもともと視力の良い方であれば近くが見えづらくなってきたりと、このままエンジニアという職を続けてよいのだろうかと不安を抱えているかもしれない。今回は、老化への対処について具体的に取り上げたい。また、老化には負の側面だけでなく、プラスとなる

    advblog
    advblog 2016/08/26
  • Windows Subsystem for Linuxとは? そのインストールと使い方 - Build Insider

    Windows上のBashシェル入門【Windows 10 Fall Creators Update対応】(1) Windows Subsystem for Linuxとは? そのインストールと使い方 Fall Creators Updateで正式版として提供されることになった「Windows 10上で動作するLinuxサブシステム」によるBashシェルの基礎を理解・マスターすることをゴールとして、Windows Subsystem for Linux(WSL、旧称:Bash on Ubuntu on Windows)の概要から、インストール方法までを解説。また、よくある疑問をQ&A形式で短くまとめる。 連載 INDEX 次回 → “Windows Subsystem for Linux”(以下、WSL)は、2016年4月の発表当時から「WindowsにBashシェルが入る!」と大きな話題

    Windows Subsystem for Linuxとは? そのインストールと使い方 - Build Insider
    advblog
    advblog 2016/08/23
  • LINQでBigQuery: データスキャン量を抑えたクエリの実行方法

    膨大なデータへのクエリで、スキャン量を減らしてクエリの課金額を抑えるには? テーブルワイルドカード関数とテーブルデコレーターを説明する。 ← 前回 連載 INDEX 次回 → BigQuery特有のクエリ構文 前回の記事では、LINQ to BigQueryを使ったクエリの実行について説明した。今回は前回説明しきれなかった、テーブルワイルドカード関数およびテーブルデコレーターについて説明したい。 データスキャン量を抑えるための機能 テーブルワイルドカード関数やテーブルデコレーターといった機能はBigQuery独特の機能であるが、この機能が活用される背景には、BigQueryのテーブルはレコードの追記のみが可能で、更新や削除ができないことがある。 日々レコードが追加されていくテーブルを、同じテーブルのまま利用していくと仮定しよう。まずレコード数が増えるため、同じクエリであってもデータスキャン

    advblog
    advblog 2016/06/27
  • 10分間で分かった気になれるXamarin概要

    稿は、Sansan主催の第6回.NET勉強会「『Xamarin』って何? Wエバンジェリストによる特濃『Xamarin』勉強会 ~C#によるマルチデバイス・クロスプラットフォーム開発の最前線~」の第1セッション「1時間で分かった気になれるXamarin概要」の内容をそのまま起こしたレポート記事を、最新のXamarin事情に合わせてアップデートしたものです(ちなみに第2セッションは「Xamarinで今日から始めるクロスプラットフォーム開発」でした)。 元のレポート記事はSansanから提供され編集部で編集・校正を加えたものでしたが、今回の改訂では、セッション登壇者人である田淵氏自らが元のレポート記事に加筆・修正を行いました。なお、最新状況でも変更のない内容は、元の文章および章立てのままになっています。 モバイル向けクロスプラットフォーム開発環境―“no silver bullet” ――

    advblog
    advblog 2016/06/24
  • 各言語に広まったRx(Reactive Extensions、ReactiveX)の現状・これから - Build Insider

    ではなぜネットフリックスがマイクロソフト発祥のテクノロジを利用するようになったのだろうか。実は、RxJavaの初期の開発者であるJafar Husain氏は、もともとマイクロソフトに勤めていて、世界で最初にReactive Extensionsを紹介した人物でもあるのだ。その後にネットフリックスに転職し、RxJavaの誕生に深く関わることになる。 一方でオリジナルのRx.NETの作者であるErik Meijer氏もまた、マイクロソフトを辞めた後に、HackやDartなどの新興言語の支援に関わる他、Principles of Reactive Programmingといった学習コースをScalaの作者であるMartin Odersky氏らと開講するなど、言語の枠を超えて活躍している。 Rxとマイクロソフトのオープンソース 昨今のマイクロソフトのオープンソースへの傾倒を疑うものはもはやいないだ

    advblog
    advblog 2016/05/12
  • DevOpsとは何か? そのツールと組織文化、アジャイルとの違い

    両氏はこのプレゼンテーションの中で、それぞれの役割の違いから対立することの多い開発者(以下、Dev)と運用者(以下、Ops)の対立構造を次のように示した。 Devの役割が“システムに新しい機能を追加する”である一方、Opsの役割は“システムの安定稼働”である。そのため、Devが新しい機能を追加したくても、Opsはシステムの安定稼働のために変更を加えたがらない、という対立構造が作られてしまっていた。 しかしDevとOpsのそれぞれのミッションは(DevOpsの概念と同じく)、どちらも「システムによってビジネスの価値をより高めるだけでなく、そのビジネスの価値をより確実かつ迅速にエンドユーザーに届け続ける」ことである。そのミッションを達成するための手段が、上記のとおりDevは“システムに新しい機能を追加する”であり、Opsは“システムの安定稼働”なのである。つまり、同じ「ミッション」を掲げている

    DevOpsとは何か? そのツールと組織文化、アジャイルとの違い
    advblog
    advblog 2016/05/10
  • 次期C# 7: 複数データをまとめるための言語機能、タプル型

    メソッドが複数の値を戻す場合など、複数のデータを緩くまとめて、扱いたい場合はよくある。C#の次バージョンではこれを簡潔に記述するための機構として「タプル型」が導入される。 ← 前回 連載 INDEX 次回 → 現在、C#への機能追加に当たって、いくつかのテーマが設けられている。その中でも大きなものの1つが「データ処理」である。データ処理というと、C# 3.0でLINQと関連して多くの言語機能が取り入れられたが、まだまだ検討すべきことは多く残されている。 今回は、そんなデータ関連の提案の1つであるタプル型について紹介していこう。 タプルとは タプル(tuple)という単語は、倍数を表す「double, triple, quadruple, ...」などを一般化したN-tupleという言葉に由来する。単純に「複数のもの」という意味の言葉だ。つまり、「データを複数束ねたもの」程度の意味であり、「

    advblog
    advblog 2016/02/09
  • なぜ勉強会・カンファレンスに参加するのか? 良かった勉強会・残念だった勉強会

    参加しない人(2)が2割近くいるが、それを除く8割以上という大多数のエンジニアが勉強会に参加していることが分かった(※アンケートに回答していただける積極的なエンジニアによる回答結果であるので、その点は割り引いて考えた方がよいかもしれない)。 参加しない人を除外すると(=参加する人だけ集計すると)、1+3+4+5の4回答(=年に2~12回の参加)だけで約9割を占めており、「年に1回のみ」や「1カ月に何回も」参加するようなどちらかに片寄った人は比較的少ないようである。「年に2~3回」と回答した人が26%と比較的多いが、参加する人だけで平均の頻度を概算すると2カ月に1回程度になりそうだ(※厳密な回数を聞いていないので、概算となる)。 ▲調査項目の一覧に戻る 参加する目的(業務上か/個人的かに大別) 4人に3人は、勉強会には個人的な目的で参加しているようだ。 1個人的な目的(例:仕事とは関係ないが

    advblog
    advblog 2015/12/22
  • Vorlon.jsとは? ブラウザーでWebデバッグできるお手軽な開発者ツール

    Vorlon.jsという開発者ツールを知っているだろうか? このオープンソースツールを使えば、PCブラウザーで各種Webデバッグが行える。その機能概要と基的な使い方を解説。 Vorlon.jsとは Vorlon.js(読み方: ヴォーロン・ジェーエス)とは、ChromeのDevToolsやIE/EdgeのF12開発者ツールと同じく、Webブラウザーの表示内容やネットワーク状態をデバッグするためのツールである。 最も特徴的なのが、ブラウザー上で動作することだ。PCブラウザーのデバッグはもちろん、スマホなどのモバイルデバイスのデバッグを、ケーブルをつなげることなく、Macを準備することなく、実現できるのが大きなメリットだろう。 マイクロソフトが開発したオープンソースプロジェクトであり、Node.jsとSocket.IOといったオープンな標準のみを使って開発されていて、プラグインの追加が容易で

    advblog
    advblog 2015/11/13
  • 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#開発者にとってはやはり重要なアップデートとなっている。 そして、これら

    advblog
    advblog 2015/07/22
  • Windows 10 IoT Core(最新Creators Update版)で何ができるのか?

    最新Creators Update版のWindows 10 IoT Core(OS)は、どのような機能を持つのか? Raspberry Pi 3にインストールして試した結果を画像キャプチャして示しながら、その特徴と機能をまとめる。 安価な小型コンピューターであるRaspberry Pi(ラズベリーパリ、略してラズパイ)を活用すれば、お金を掛けずに手軽に電子工作が楽める。例えば、LEDを点滅させるような簡易なものから、ロボットのような機械の制御といったものまで、想像と工夫次第で「何でも」と言ってよいほどさまざまなモノが製作できる。特に、センサーなどから取得したデータをクラウドに送信して、蓄積されたビッグデータを分析・活用するIoT(Internet of Things)のデバイス製作には、お勧めできる。 もちろんIoT向きのエッジデバイスとしては、Arduino(アルデュイーノ)なども有力な

    Windows 10 IoT Core(最新Creators Update版)で何ができるのか?
    advblog
    advblog 2015/05/21
  • 「using CSharp;」な企業を支える技術方針とベスト.NETライブラリ

    「最先端のC#技術活用」を掲げる会社の開発現場では、どのような技術やライブラリが、どんな理由で使われているのか。C#開発者必読の、勉強会レポート。 連載 INDEX 次回 → 2015年3月25日(水曜日)、Build Insider主催&グラニ共催の勉強会「Build Insider MEETUP with Grani 第1回」を開催した(場所は、六木ヒルズ森タワー15Fにあるグラニのファンスペース)。この勉強会では、下記の2つのセッションがあった。 1A Framework for LightUp Applications of Grani 2Grani's way of thinking Infrastructure 稿は、グラニCTO(最高技術責任者)の河合 宜文 氏が登壇した1のセッション内容の中から、筆者が重要だと感じたポイントを簡潔にまとめたものである。文章によるレポート

    「using CSharp;」な企業を支える技術方針とベスト.NETライブラリ
    advblog
    advblog 2015/04/17
  • Xamarin逆引きTips - Build Insider

    Xamarin Workbooksを使用するには?(REPL&リッチテキスト編) C#のREPLアプリとして対話型でコード実行ができるだけでなく、そのコード実行をコンテンツに含めたリッチ文書が作成できるXamarin Workbooksの基的な使い方を解説。 Plugins for Xamarinを使いこなすには?(Device Motion ― 磁気センサー/コンパス編) デバイス固有の機能に簡単にアクセスできるPlugins for Xamarinの一つ、「Device Motion Plugin」プラグインを紹介。今回は、Magnetometer(磁気)センサー、Compass(コンパス)の機能を使う方法を説明する。

    Xamarin逆引きTips - Build Insider
    advblog
    advblog 2015/03/07
  • 無料でダウンロードできるIT技術系電子書籍(EPUB/PDF)一覧

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

    無料でダウンロードできるIT技術系電子書籍(EPUB/PDF)一覧
    advblog
    advblog 2015/03/04
  • Xamarin.Formsでタッチイベントを処理するには?(iOS/Androidの各種ジェスチャー対応)

    *1 なおTipsは、Windows上でVisual Studio 2013を使用してXamarin.Forms開発をすることを前提としている(※編集部注: Mac上のXamarin Studioでも同様の手順で、稿の内容が実現できることは確認している)。使用しているXamarin.Formsのバージョンは、プロジェクト作成時に利用されている「1.3.1.6296」である。 1. シナリオ 最初に、画面にImageビューを配置し、これをタップしたときのイベントを処理する。続いて、Xamarin.Formsで処理できないイベントであるロングタップ(長押し)を、レンダラーの実装によって取り扱う方法を解説する。 2 .Xamarin.Formsプロジェクトを作成する メニューバーの[ファイル]-[新規作成]-[プロジェクト]から表示したダイアログで、[テンプレート]-[Visual C#]-

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

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

    advblog
    advblog 2015/01/10
  • 今年の一番人気はどれ? Advent Calendar 2014ランキング[累計SNSポイント順]

    2014年も各所で盛り上がったAdvent Calendarの中で、SNS上で最も人気が出たのはどれか? また、全Advent Calendar記事の中の、SNS人気度Top 10を発表する。 昨日の12月25日、今月初日から各所で開始されたAdvent Calendarが終了した。あちこちでさまざまな投稿記事が人気になっていたが、総合すると、 一体どのAdvent Calendarの人気が一番高かったのだろうか? これが気になったので、稿では独自に調査してみた。その結果内容から、上位の10個を紹介し、さらに11~200位までのリストを公開する。また、全記事の中で最も人気が高かった記事のトップ10も紹介する。 主な調査対象は、「Adventar: 2014年のAdvent Calendar一覧」と「Qiita: 2014年のAdvent Calendar一覧」の2つで、この他、かなり少数

    advblog
    advblog 2014/12/26
  • ハッカソン/アイデアソンの開催方法、成功させるポイントと課題

    (3)アイデアソン/ハッカソンを構成する4要素 アイデアソン/ハッカソンには、1サービス開発要素、2技術トライアル要素 、3交流要素、4スキルアップ要素、という4つの要素によって成り立っている。 1サービス開発要素: 新たなサービスやビジネスを生むことを目的とするもので、新規事業創出の意図も含まれる。 2技術トライアル要素: 新たな技術の拡散や活用、ブラッシュアップを図るもので、参加者が新たな技術を試したり、既存技術のブラッシュアップを図ったりすることを指す。 3交流的要素: 異分野の人や専門家、組織内外の日常は関わることの少ない他者との共同作業と、共体験を通じた相互交流を通じて、チームビルディングの重要性や協働能力の向上、共創体験を通じて相互理解を図ることである。 4スキルアップ要素: 成長の余地がある技術者などが日常業務ではチャレンジすることのできない自由な開発の場を通じて、スキルアッ

    advblog
    advblog 2014/09/14