タグ

ブックマーク / codezine.jp (50)

  • 生のポインタは使わないで! Modern C++のメモリ管理

    連載では、Modern C++と称されるC++について、Modern C++らしい言語仕様をピックアップし紹介していきます。第3回は、スマートポインタについて紹介します。高度なメモリ管理には生のポインタの使いこなしが必須という古い常識はもはや通用しません。メモリを効率よく、しかも安全に使うことを実現しているスマートポインタについて理解を深めます。 はじめに C言語から派生したオブジェクト指向プログラミング言語であるC++は、21世紀に入ってまったく別物とも言えるプログラミング言語に成長していきました。それは、Modern C++と称されています。1990年代にC++を触っていたプログラマが現在の仕様を知れば、隔世感に苛まれるのではないでしょうか。連載では、かつてはC++をたしなんでいたという方、今からC++言語を始めるという方に向けて、Modern C++らしい言語仕様をピックアップし

    生のポインタは使わないで! Modern C++のメモリ管理
  • プログラミング言語Crystal、初のメジャーリリースとなるバージョン1.0を公開

    Rubyに似た構文を使用し、変数の型やメソッド引数を指定する必要がなく、ネイティブコードへのコンパイルが可能なオープンソースのプログラミング言語・Crystalの開発チームは、最初のメジャーリリースとなる「Crystal 1.0」を3月22日(現地時間)にリリースした。 「Crystal 1.0」では言語の安定性が約束されており、少なくとも今後リリースされるバージョン1.xでは、下位互換性に念頭を置き、標準ライブラリの強化は行うものの、以前のバージョンで作成したコードは修正することなくコンパイルして利用できる。 おもな変更内容としては、文字列および文字リテラルがエスケープシーケンスでUnicodeサロゲートの半分を持つことができなくなったほか、std-libにおける非推奨とされていた定義のほとんどが削除され、マクロのgetterおよびpropertyに戻り値の型注釈が追加された。 そのほか

    プログラミング言語Crystal、初のメジャーリリースとなるバージョン1.0を公開
  • MASMとなでしこによるオリジナルコンパイラの制作 1

    はじめに 筆者が開発している日語プログラミング言語コンパイラ「KMYsofts japanese」(以下、「KJ」と表記)のように、マクロアセンブラを使用したコンパイラの制作は、比較的簡単です。なぜなら、機械語のしがらみにとらわれず、英語を入力するだけでアセンブラが勝手に機械語に変換してくれるからです。 そこで連載では、最近の日語プログラミング言語の中で高いシェアを占める「なでしこ」を使用して、BASICライクな自作言語のコンパイラを作成します。多少マイナーな言語かと思われるため、初めての方でも簡単に作成できるように、なでしこの簡単な文法についても併せて説明します。 対象読者 技術レベルは特に問いませんが、なでしこの簡単な文法を前もって習得していることが望ましいです。「自分で作ったプログラミング言語でソフトを作りたい!」と考えている方も歓迎します。 また、プラットフォームはWindo

    MASMとなでしこによるオリジナルコンパイラの制作 1
  • ScalaからJavaScriptコードを生成できる「Scala.js 1.0.0」リリース

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    ScalaからJavaScriptコードを生成できる「Scala.js 1.0.0」リリース
  • Rubyが魅力的でないとうちのビジネスが困る――クックパッドが取り組むRubyへの貢献とエンジニア育成 (1/2):CodeZine(コードジン)

    クックパッドは1998年にサービス開始し、2008年にRuby on Railsにリプレースしてからちょうど10年。その間、クックパッドRubyの会社として常にトップランナーを走り続けてきた。実際、「世界最大級のモノリシックRailsサービス」として知れ渡り、その開発で培ったノウハウをコミュニティに対して発信してきた。そんなクックパッドが、Rubyに対してどのように付き合っていったのか。Rubyを採用した経緯や課題、競争力の高いエンジニア集団で居続けるための戦略について、同社 技術部部長 兼 エンジニア統括マネージャーを務める庄司嘉織氏に聞いた。会社を挙げたRubyやオープンソースへの貢献やエンジニアとの関わり方も興味深い。 世界最大級のモノリシックRailsサービスと言われて クックパッド 技術部部長 兼 エンジニア統括マネージャー 庄司嘉織氏 クックパッド 庄司嘉織氏は2012年11

    Rubyが魅力的でないとうちのビジネスが困る――クックパッドが取り組むRubyへの貢献とエンジニア育成 (1/2):CodeZine(コードジン)
    sonota88
    sonota88 2018/09/02
    「例えば本番とは別に検証用で使えるAWSアカウントがある。庄司氏は「ほぼ無制限。100台のサーバーを立ち上げるにしても誰の許可も要らないようにしています。どんなに作っても、壊しても大丈夫。」
  • Ruby-Pythonブリッジライブラリ「PyCall」を使ってRubyでデータ分析をしよう!

    現在、Rubyはデータサイエンス分野では使いにくいプログラミング言語です。その主な理由として、実用的に使える環境が存在しないことが挙げられます。この状況を変えるには、データサイエンスの全工程をRubyで実施できる環境を整備しなければなりません。稿ではデータサイエンスでよく利用されるPythonのツール群をRubyから使用するための仕組みである「PyCall」を紹介します。 PyCall(GitHub) 1 はじめに 株式会社Speeeで研究者をしている村田です。現在はRubyをデータサイエンスで使えるプログラミング言語にするための仕事に取り組んでいます。 これまでRubyはデータサイエンスの仕事では役に立たないプログラミング言語でした。仕事で実用に耐えられるツールが無く、ユーザが増えず、開発者も集まらない悪循環が原因です。こうした悪循環を解消するには、実用的な道具や環境を早急に整備して、

    Ruby-Pythonブリッジライブラリ「PyCall」を使ってRubyでデータ分析をしよう!
  • DBエンジニアのミックさんが語る、RDBで階層構造データを扱う「入れ子集合モデル」の将来性

    これまで階層構造データはリレーショナルデータベースでうまく扱えませんでしたが、その解決策としてジョー・セルコが提案したのが「入れ子集合モデル」です。この手法を紹介した『プログラマのためのSQLグラフ原論』の刊行にあたり、翻訳されたDBエンジニアのミックさんに入れ子集合モデルの将来性についてうかがいました。 なぜRDBで木と階層構造を扱う手法が1冊の書籍に? ――『プログラマのためのSQLグラフ原論 リレーショナルデータベースで木と階層構造を扱うために』についてミックさんにうかがいます。最初に、書がどういうなのか教えていただけますか? ミック:内容としては、リレーショナルデータベース(RDB)でグラフ構造の一つである木と階層構造を扱うための方法論「入れ子集合モデル」をメインに解説しています。RDBには大きな問題があり、入れ子集合モデルがそれを解決しうる手法だと見込まれています。その問題と

    DBエンジニアのミックさんが語る、RDBで階層構造データを扱う「入れ子集合モデル」の将来性
  • AWKブーム第1世代は「アイドル辞書」で学んだ――日本GNU AWKユーザー会 斉藤さん

    CodeZineがPodcastを始めます。「かまぷとゆうこのデベロッパーズ☆ラジオ」略して「デブ☆ラジ」。この番組では、USP研究所のかまたひろこと、CodeZine編集部の近藤佑子が、ソフトウェアデベロッパーのみなさんに向けて、IT技術に関するちょっといい話をお送りします。音声に加えて、ダイジェスト版の記事もお届け。記念すべき第1回のゲストは、日 GNU AWK ユーザー会 斉藤博文さんです。 iTunesからの視聴はこちら! 近藤佑子(以下、ゆうこ) 今回が第1回の放送なんですけれども、この番組はですね、今年の2月にあったオープンソースカンファレンスのあとに、2人で飲んでて「やろう」って言ってね。やっと始められましたね。 かまたひろこ(以下、かまぷ) そうですね。吉祥寺のCAFE ZENONで。 ゆうこ かまたさんはその前にも対談の企画をやられてたんですよね。 かまぷ はい。『So

    AWKブーム第1世代は「アイドル辞書」で学んだ――日本GNU AWKユーザー会 斉藤さん
    sonota88
    sonota88 2016/06/15
    フィードが見つけられない
  • 「Git 2.8.0」がリリース、submodulesの並列フェッチが可能に

    「Git 2.8.0」では、新機能としてsubmodulesの並列フェッチが可能になる。submodulesは、他のレポジトリをレポジトリのサブディレクトリのように使える機能で、プロジェクトへのライブラリや外部の依存関係の統合に便利。しかし、多数のsubmodulesがある場合フェッチに時間がかかるが、今回の新機能により実行時間が短縮される。 また、.gitconfigでユーザー名とメールアドレスを指定している場合、.gitconfigの指定と異なるユーザー名やメールアドレスでコミットした際に、警告は表示されるものの、コミット自体は実行されてしまうが、「Git 2.8.0」では異なるユーザー名やメールアドレスでのコミットを禁止する設定が追加された。 さらに、今回のリリースではGit for Windowsプロジェクトにおける成果の還元によって、プラットフォームにまたがる新機能の追加を行いや

    「Git 2.8.0」がリリース、submodulesの並列フェッチが可能に
    sonota88
    sonota88 2016/03/30
  • Rails開発者のDHH氏、Ruby on Rails開発の基本方針を「The Rails Doctrine」として文書化

    Ruby on Railsの開発者であるDavid Heinemeier Hansson(DHH)氏は、Ruby on Rails開発の基方針を「The Rails Doctrine」として1月19日(現地時間)に公開した。また、「The Rails Doctrine」の公開とともに、Ruby on RailsのWebサイトがリニューアルされたほか、ロゴも変更されている。 The Rails Doctrine 「The Rails Doctrine」は、Ruby on Railsにおけるもっとも重要な支柱となる、以下の8項目で構成される。 Optimize for programmer happiness Convention over Configuration The menu is omakase No one paradigm Exalt beautiful code Value

    Rails開発者のDHH氏、Ruby on Rails開発の基本方針を「The Rails Doctrine」として文書化
    sonota88
    sonota88 2016/01/20
    「[Rails]
  • JetBrains、DB/SQL向けIDE「DataGrip 1.0」をリリース

    DataGripは、OracleSQL Server、DB2、Sybase、MySQL、PostgreSQLSQLite、Apache Derby、HyperSQL、H2など、主要なDBMSに対応している。 テーブルの作成や修正、およびカラムやキー、インデックスの管理が可能なUIを用意しており、作成したコードの実行や、DDLの直接実行にも対応する。 コードエディタには、コードコンプリート機能を備えるとともに、JOINに対して適切なファンクションやプロシージャといったパラメータや、INSERT文のテーブル構造の記述を提案してくれる。また、ライブ・テンプレート機能も搭載する。 このほか、リネーム機能やオブジェクトや変数の閲覧機能、強力なテーブルエディタ、柔軟なクエリ実行機能など、充実した機能を備える。 なお、DataGripはIntelliJをベースにしており、マルチカーソルや複数選択に対

    JetBrains、DB/SQL向けIDE「DataGrip 1.0」をリリース
    sonota88
    sonota88 2015/12/18
  • HTML5でクロスプラットフォームなデスクトップアプリを開発できる「Electron」とは

    Electron(旧Atom-Shell)とは、Web開発者がHTML5とNode.jsでMacWindowsLinuxデスクトップアプリを作れるクロスプラットフォーム実行環境です。Electronはオープンソースで無料で使える上に、MITライセンスであるため、商用利用も可能です。開発元はGitHub社です。 最近はJavaScriptHTML5の進化によって、多機能なWebアプリケーションが増えてきました。それに伴い、モバイルでは、WebViewやApache Cordovaなどを使ったハイブリッドアプリも注目されています。Electronはその流れの中から生まれた新しい実行環境です。 ElectronはChromiumブラウザを内蔵しているのが一番の特徴です。Chromiumブラウザは、Google製のChromeブラウザのオープンソース版にあたります。ウェブ開発者がChrom

    HTML5でクロスプラットフォームなデスクトップアプリを開発できる「Electron」とは
    sonota88
    sonota88 2015/07/08
  • 「はやぶさ2」は旅をしながら成長する ―JAXAのプログラマーに聞いた宇宙探査を支えるソフトウェアの作り方 |CodeZine×サイボウズ式

    小惑星を目指し、宇宙で一人旅を続ける小惑星探査機「はやぶさ2」。初代「はやぶさ」に続き、宇宙探査の新時代を切り開こうとしています。この重要なミッションをプログラミングの面からも支える、JAXAの佐伯孝尚さんにお話を聞きました。 小惑星イトカワから微粒子サンプルを持ち帰るという、人類初の偉業を成し遂げた初代「はやぶさ」の後継機として生まれた小惑星探査機。 はやぶさ2の目的地は、小惑星1999 JU3。2014年12月に打ち上げられ、2015年11月~12月の地球スイングバイ(地球の重力を利用して探査機の軌道を変更すること)に向けて、順調に宇宙の旅を続けている。 はやぶさ2のミッションは、はやぶさと同様に小惑星の物質を地球に持ち帰る、サンプルリターン。今回は地表の物質を採取するのに加えて、インパクター(衝突装置)を使って人工的なクレーターを作り、地下にある純度の高い物質を採取する。今回お話を聞

    「はやぶさ2」は旅をしながら成長する ―JAXAのプログラマーに聞いた宇宙探査を支えるソフトウェアの作り方 |CodeZine×サイボウズ式
    sonota88
    sonota88 2015/04/04
  • フロントエンド開発が捗るHTTP通信モニタリングツール「Charles」を使いこなす

    はじめに 「Charles」はHTTPのプロキシ・モニタを行えるGUIのツールです。似たようなツールとしてはFidllerが代表的ですが、CharlesはUIや操作性がシンプルです(その分機能は限定的です)。「HTTPをモニタする」というとなんだか取っ付きにくそうに感じるかもしれませんが、Charlesを使うことでその認識は大きく変わります。今回はこのツールのさまざまな使い方をWebフロントエンドの開発視点から紹介していきたいと思います。その便利さから弊社のWebフロントエンド開発チームにはなくてはならないツールとなっています。 Charlesとは Charlesは公式サイトの説明にもある通り、HTTPプロキシ/HTTPモニタを行うツールです。機能を大きく分類するとできることはその2点だけですが、かゆいところに手が届く細かな機能を多く持っています。公式サイトから引用すると、機能としては以下

    フロントエンド開発が捗るHTTP通信モニタリングツール「Charles」を使いこなす
    sonota88
    sonota88 2015/02/22
  • プログラミング言語「Go 1.4」がリリース、Androidを正式にサポート

    今回のリリースは、前回のメジャーリリースから6か月を経たもので、いくつかの仕様変更とともに、対応するOSやCPUアーキテクチャを拡大している。 もっとも重要な変更点は、コアとgolang.org/x/mobileレポジトリにおけるAndroidの正式なサポートで、今回の正式サポートによって、Go言語だけで簡単なAndroidアプリが作れるようになった。現段階では、高レベルな開発に使えるライブラリはほとんどサポートしていないが、Go言語によるAndroidアプリ開発をいち早く楽しめる。 言語仕様については、for-rangeループにおける文法を変更しており、「for range s {」の記述によって値やループインデックス、マップキーなどの定義なしでループできる。また、ソースコードを自動で作成可能なサブコマンドも新たに用意している。 このほか、数多くの機能向上とバグフィックスが行われた。 「

    プログラミング言語「Go 1.4」がリリース、Androidを正式にサポート
  • 【新刊紹介】CodeZine BOOKS『システムテスト自動化 標準ガイド』がAmazonで予約開始

    今日、テスト駆動開発やCI(継続的インテグレーション)の技術や環境が普及し、ソースコードのユニットテストやビルド時の結合テストでは、自動化が一般的に行われるようになりました。一方で、ソフトウェアをユーザーが操作したときに問題がないことを確認する「システムテスト」では、自動化が進んでいません。 書は、自動化が困難なソフトウェアテストの1つ「システムテストの自動化」の課題に取り組むための解説書です。この分野の権威である著者が、システムテストの自動化を実現するために考慮すべきこと、発生しうる問題、解決策や方針などを示します。その中には、ツールの選択方法や、開発チームへの普及手段なども含まれます。 システムテストの自動化を目指すエンジニアにはバイブルと言える1冊です。 仕様 書名: 『システムテスト自動化 標準ガイド』 著者: Mark Fewster、Dorothy Graham 訳者: テス

    【新刊紹介】CodeZine BOOKS『システムテスト自動化 標準ガイド』がAmazonで予約開始
  • DBUnitを使って、ユニットテストのテストデータを作成する

    弊社ではテストのエビデンスとして、JUnitの結果とコードのカバレッジを提出するルールにしておりますが、開発者それぞれの環境でallTestをするようなこともあります。その時に環境によっては、マシンのスペックが悪くallTestにけっこう時間が掛かってしまうこと、またその影響でマシンの負荷が高くなり、他の作業を並行してやれず仕事にならないようなことがありました(注1)。その対応としてJenkinsにブランチのallTestが流せるジョブを作って対応しました。 あと、Jenkinsのバージョンはこまめに更新した方が良いなと実感しました。バージョンアップする前はビルド、AllTest、ページビューなどが結構遅くて、周りの人からも遅いという声があがっていました。改善として、サーバのスペックをすぐに上げることは無理そうだったので、jvmのチューニングをしたりしましたがさほど効果はなく、Jenkin

    DBUnitを使って、ユニットテストのテストデータを作成する
  • Ruby用単体テストフレームワーク「test-unit 3.0.0」リリース

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    Ruby用単体テストフレームワーク「test-unit 3.0.0」リリース
    sonota88
    sonota88 2014/08/05
    Power Assertが加わったとのこと
  • 「JBehave」による振舞駆動開発(BDD)の実践

    対し、今回紹介するBDD(behavior driven development:振舞駆動開発)では、テスト対象の振る舞いに対してのテストを記述します。BDDでは、要求仕様にフォーカスし、よりWhatを意識したテストケースを作成できます。これにより、TDD以上に設計から実装へのトレーサビリティを確保できるようになります。 対象読者 Java開発者 必要な環境 JDK 7 Maven 3 JBehaveとは JBehaveを利用することにより、JavaでBDDを実践できるようになります。具体的には、storyファイルに記述した要求仕様をベースに検証ロジックを実装し、テストを行います。 事前準備 まずは、Mavenで空のJavaプロジェクトを作成します。以下のようにコマンドプロンプトでmvnコマンドを実行します。 <project xmlns="http://maven.apache.org/

    「JBehave」による振舞駆動開発(BDD)の実践
    sonota88
    sonota88 2014/01/30
  • 実践! PageObjectパターンによる「Selenium2」テストケース改善チュートリアル

    シリーズは、WebブラウザをUIとして利用した業務システムやアプリケーション(以下、Webシステム、Webアプリケーション)のテストをテーマとして、Webブラウザを使ったテストを自動化するOSSのツール「Selenium2」を紹介します。業務システム開発の現場で適用してきたノウハウを元に、これまでSelenium2について知らなかった人から以前使った経験がある人まで、より実践的な「使える」内容を盛り込んでいきたいと思います。 1. はじめに これまでの連載で、Selenium2を利用することにより、ブラウザテストの作成、自動実行がとても簡単にできることをお分かりいただけたかと思います。 しかし、実際に導入してみるといくつかの問題点に気が付くことでしょう。もっとも代表的な問題は、画面仕様の変更によるテストコードの修正や、テストの失敗です。Selenium IDEが生成するテストコードは画面

    sonota88
    sonota88 2013/12/16