CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。
![「自分はわかるからOK」というオレオレ表記が開発を遅らせ、プロダクトの評価まで下げてしまう](https://cdn-ak-scissors.b.st-hatena.com/image/square/5b04f5a6e780f93a5f8a7277a040c7bd6fb702f0/height=288;version=1;width=512/https%3A%2F%2Fcodezine.jp%2Fstatic%2Fimages%2Farticle%2F19627%2F19627_share.png)
はじめに C言語から派生したオブジェクト指向プログラミング言語であるC++は、21世紀に入ってまったく別物とも言えるプログラミング言語に成長していきました。それは、Modern C++と称されています。1990年代にC++を触っていたプログラマが現在の仕様を知れば、隔世感に苛まれるのではないでしょうか。本連載では、かつてはC++をたしなんでいたという方、今からC++言語を始めるという方に向けて、Modern C++らしい言語仕様をピックアップし紹介していくことで、今のC++言語の姿を理解していただきます。 対象読者 かつてはC++をたしなんでいたという方 今からC++言語を始めるという方 モダンなプログラミング言語のパラダイムに興味のある方 必要な環境 本記事のサンプルコードは、以下の環境で動作を確認しています。 macOS Sonoma/Windows 11 Xcode Command
型システムに関する新機能リスト 本連載は、TypeScriptのバージョン3から5.2までのアップデート内容を、テーマごとにバージョン横断で紹介する連載です。第3回である今回紹介するのは、TypeScriptの根幹ともいえる型システムの変更点です。具体的には、以下の内容を順に紹介します。 ジェネリクスと「...」に関する新機能 constキーワードに関する新機能 型定義におけるテンプレート文字列 Mapped型での再マッピング インデックスシグネチャの新しいキー catchブロック変数でunknownが可能 returnのない関数の戻り値 ジェネリクスと「...」に関する新機能 最初に紹介するのは、ジェネリクスと「...」演算子に関する新機能です。 ジェネリクスとスプレッド演算子の組合せ 例えば、個人情報を表す型定義としてPersonalBaseDataがあり、プロパティとしてid(num
ウェブサイトやモバイルアプリの、エンドユーザーからみた動作を確認するテストはE2Eテスト(End-to-End Test)と呼ばれ、このE2Eテストの自動化ツールは、アジャイル開発の普及もあって、今では多くの開発現場で活用されるようになりました。ブラウザ操作の自動化ツールSelenium(セレニウム)は日本でも有名になり、ご存じの読者も多いでしょう。しかし近年、E2Eテスト自動化の世界では、Seleniumに代わる新たなツールがたくさん登場し、急速に利用者を増やしています。この記事では、これらの新しいE2Eテスト自動化ツールのトレンドについて紹介します。 E2Eテスト自動化トレンドの変遷 筆者はテスト自動化ツールを作る仕事にもう15年近く関わっていますが、これまでのトレンドを見ていくと、「非OSS(非オープンソースソフトウェア)の時代」「Seleniumの時代」「多極化の時代」の3つに分け
書店員との対話で、メール技術書の不足に気づく 増井氏は技術士として関連知識の教育を提供するとともに、プログラマーとしても活躍している。ネットワークや情報セキュリティの分野でテクニカルエンジニアとしての役割を果たし、情報処理技術者試験やビジネス数学検定1級などの資格試験にも多数合格。ソフトウェア開発では、ビジネス、数学、ITを融合させ、コンピュータの効率的かつ正確な使用法を支援している。 教育の一つとして本を執筆する活動もしており、『Obsidianで“育てる”最強ノート術』(技術評論社刊)『1週間でシステム開発の基礎が学べる本』(インプレス刊)『「技術書」の読書術』『図解まるわかり セキュリティのしくみ』『図解まるわかり プログラミングのしくみ』(翔泳社刊)など多数の書籍を執筆。個人でも同人誌づくりをしたり、シェア型のリアル書店で自身の書籍を販売したりするなどの活動も行っている。 増井氏は
数年前からMicrosoftは、Windows onlyから脱却してマルチプラットフォーム戦略を打ち出しています。その戦略はデスクトップ向けのGUIアプリにもおよび、マルチプラットフォームで動作するアプリの開発ができる、さまざまなライブラリやフレームワークが提供されるようになってきました。本連載では、Windows環境におけるマルチプラットフォームGUI技術(.NET以外も含む)について、(主にC#の)サンプルコードを交えて解説します。 はじめに Windows環境で開発可能なマルチプラットフォームGUI技術を解説してきた本連載も、次回で最後になりました。最後は、Avalonia UIを紹介します。これまでと異なり、Avalonia UIは、マイクロソフトが関わったフレームワークではありません。とはいえ、.NET上で動作するオープンソースのフレームワークであり、幅広い環境に対応しています。
#include <thread> #include <chrono> #include <string> #include <iostream> /* * フツーの関数 */ void global_fun(int n) { using namespace std; cout << "global_fun: " + to_string(n) + " 秒後に終了します...\n"; this_thread::sleep_for(chrono::seconds(n)); cout << "global_fun: おしまい\n"; } /* * ラムダ式 */ auto lambda_exp = [](int n) { using namespace std; cout << "lambda_exp: " + to_string(n) + " 秒後に終了します...\n"; this_thre
本連載では、Modern C++と称されるC++について、Modern C++らしい言語仕様をピックアップし紹介していきます。第3回は、スマートポインタについて紹介します。高度なメモリ管理には生のポインタの使いこなしが必須という古い常識はもはや通用しません。メモリを効率よく、しかも安全に使うことを実現しているスマートポインタについて理解を深めます。 はじめに C言語から派生したオブジェクト指向プログラミング言語であるC++は、21世紀に入ってまったく別物とも言えるプログラミング言語に成長していきました。それは、Modern C++と称されています。1990年代にC++を触っていたプログラマが現在の仕様を知れば、隔世感に苛まれるのではないでしょうか。本連載では、かつてはC++をたしなんでいたという方、今からC++言語を始めるという方に向けて、Modern C++らしい言語仕様をピックアップし
アルメニア出身で米サンフランシスコ在住の開発者であるAsh Vardanian氏は、Python/C/C++向けライブラリ「StringZilla」のバージョン1.1.3を8月31日(現地時間)に公開した。StringZillaはApache 2.0ライセンスと3条項BSDライセンスで公開しているオープンソース・ソフトウェア。ユーザーはどちらかのライセンスを選んで利用できる。 StringZillaは、大規模な文字列データを単語ごとに区切ったり、区切った単語をソートするなどの機能を提供している。StringZillaの最初のバージョンであるバージョン1.0.0が公開されたのは2023年7月13日。それに先立ってVardanian氏が公開したブログポストでは、StringZillaの基本的な考え方を解説している。 StringZillaは、長い文字列が対象であっても最初の4文字が合致していれ
このように、(1)(2)と「vector<int>」を2回も書かなければなりません。特に(2)では、右辺の型は分かっているんだから、左辺はそれに合わせてよ! という文句が出そうです。 初期化漏れを防止する このように、同じ意味の型を何回も書くのはかったるいな! というときに型推論は役立つわけですが、もっと切実な理由があります。それは、変数の初期化漏れの防止です。JavaでもRustでもそうなんですが、変数は宣言しっぱなしでOKです。宣言しっぱなしというのは、明確な初期化が行われていないという意味です。こうなると、その変数を参照しようとするといろいろとまずいことが起きてきます。 基本データ型とかなら、どんな値か分からない ポインタ型とかなら、どこを指しているか分からない(ダングリングポインタ) なので、実行時にプログラムが不可解な動作をしたり、いきなり落ちたりするわけです。しかし、コンパイラ
Linux Foundationは、edXプラットフォームを通じて、オープンソースやその他のソフトウェアの安全な使用・開発についての無料オンラインコース「セキュア ソフトウェア開発」を提供している。今回発表されたのは、第2部の「セキュア ソフトウェア開発:実装(LFD105-JPx)」。 本トレーニングは3部から構成されており、6月から第1部「セキュア ソフトウェア開発:要件、設計、再利用(LFD104-JPx)」が提供されていた。 同トレーニングの対象は、ソフトウェア開発者、DevOpsプロフェッショナル、ソフトウェアエンジニア、Webアプリケーション開発者、および安全なソフトウェアの開発方法の学習に関心のある人々。限られたリソースで、情報セキュリティを向上させるための実践的な手順に焦点を当てている。攻撃に強いソフトウェアを開発するためのセキュリティの基本、脆弱性が悪用された場合の実践的
目次 はじめに 1. Windowsフックのテクニック 2. CreateRemoteThread+LoadLibraryのテクニック プロセス間通信 3. CreateRemoteThread+WriteProcessMemoryのテクニック このテクニックを使ってリモートコントロールをサブクラス化する方法 CreateRemoteThread+WriteProcessMemoryのテクニックはどこで使用すべきか おわりに 付録 References はじめに CodeGuruのサイトにはパスワードスパイのチュートリアルがいくつか投稿されていますが、それらはいずれもWindowsフックを利用しています。このようなユーティリティを作成するには、他に方法はないのでしょうか? 実はあります。しかし別の方法を説明する前に、この問題について簡単に復習しておきましょう。 コントロールのコンテンツを読
今回はいよいよ最終回となります。前回は非機能要件についてアーキテクチャを設計してきました。今回は代表的なユースケースを選定して、アーキテクチャの詳細な設計を蒸留していきます。また、開発者ビューについても設計を行います。利用者側の要件から出てきにくい、開発上に必要となる設計、テスト設計などを実施します。 ソースコード 実際に動作するソースコードは、GitHub上に公開しているので、ぜひご覧ください。ビルドや実行方法については、リンク先のREADME.mdをご覧ください。また、実際に動作させるためには次の2つのライセンスが必要です。 ComponentOne for WPF SPREAD for WPF 4.0J これらは試用ライセンスを発行することができます。 本稿だけで読み進められるように記載していますが、すべてのコードを詳細に解説しているわけではありません。本稿を読んだ後、あらためて動作
言語を指定せずに求人を出したら、応募が殺到 森氏はまず、「技術選定」という言葉の意味を再確認した。プロジェクトで効率よく、そして効果的に開発実装を進めるために、適切な技術(言語、データベース、クラウド・サービスなど)を選ぶことといった意味になる。しかし森氏は現実には別の条件も付くと言う。 「社内で作った既存のライブラリを使用すること」「社内事情のため、OSはWindows Serverにすること」「開発ベンダーを代えることはできないので、工数を確保できる言語を選ぶこと」など、過去のしがらみや技術的負債に引っ張られてしまうのが現実だ。そして、開発後の保守などを考えれば、それは仕方のないことだともいう。 現実の技術選定はどうしても過去のしがらみや技術的負債に引っ張られてしまう ペイルドは4年前に、新事業で提供するWebサービスのサーバー・サイドの開発言語としてRustを選んだ。Rustを選んだ
プログラミングを仕事にし始めると、楽しむことよりも効率的に作業をこなすことを優先し、好奇心からではなく業務に必要だからという理由で知識と技術を身につけている方もいるかもしれません。最初は自分で書いたコードが動作するだけで楽しかったのに、いったいどうしてこうなってしまったのか……? ですが、日々の仕事に嫌気が差している方でも、発見と喜びの味は格別だとご存知のはず。もう一度、心からプログラミングを楽しいと思いたい――そんな方のために、翔泳社では10月13日(火)に『プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問』を刊行しました。 本書にはエンジニアに人気のスキル評価サービス「CodeIQ」の連載「今週のアルゴリズム」から問題を収録、さらにオリジナル問題を追加。解いていくだけで高速化・単純化・一般化のためのアルゴリズムを習得することができます。言語は問いません、得
21世紀に入ってまったく別物と言えるプログラミング言語に進化したC++。本連載では、Modern C++と称されるC++について、Modern C++らしい言語仕様をピックアップし紹介していきます。第1回は、かつてのC++の当たり前が今では通用しないことを紹介します。たとえばインスタンスの生成にnewを、破棄にdeleteをというのが常道でしたが、もはやそれらは非推奨なのです。導入として、このようなかつては常識だったことが非推奨になっているという状況を、いくつかのトピックスを通じてお話しします。 はじめに C言語から派生したオブジェクト指向プログラミング言語であるC++は、21世紀に入ってまったく別物とも言えるプログラミング言語に成長していきました。それは、Modern C++と称されています。1990年代にC++を触っていたプログラマが現在の仕様を知れば、隔世感に苛まれるのではないでしょ
はじめに この記事を読んでいるということは、あなたはまず間違いなくWindowsソフトウェア開発者ですね。そして、あなたはきっと、ソフトウェアを書きたいという強い情熱に支えられてソフトウェアを書いているのでしょう。私が一日中コーディングに没頭しているのは、ただコーディングが好きだからです。同じように感じている人は多いのではないでしょうか。日々をこんなに楽しく過ごす方法がほかにあるでしょうか。 しかし、それこそが落とし穴です。少し立ち止まって、ソフトウェアを書くことの経済的側面を考えてみてください。我々はこの仕事を好きでやっているわけですが、食べさせなければならない家族や、支払わなければならない請求書もありますし、ときには休日に出かけたりしたいというのが本音のはずです。これは偏った見方ではなく、我々のソフトウェアを使用している人も、自分たちの仕事に関して同じように考えていると思われます。たと
IT業界のプロジェクトを成功に導くためのノウハウを網羅的に解説した書籍『プロジェクトマネジメントの基本が全部わかる本』(翔泳社)。著者でパラダイスウェアの代表取締役である橋本将功さんは、プロジェクトマネージャーが直面する課題として大きく3つ、「現場で使える知識体系がない」「無茶ぶりされる」「スキルの属人化」を挙げています。これらの課題を解決するために何が必要なのでしょうか。本書から、プロジェクトマネージャーが持つべきスキルセットと、プロジェクトの成功と失敗をどう定義すればよいのかを紹介します。 本記事は『プロジェクトマネジメントの基本が全部わかる本 交渉・タスクマネジメント・計画立案から見積り・契約・要件定義・設計・テスト・保守改善まで』の「序章 プロジェクトマネジメントのスキルの全体像」と「第1章 プロジェクトとはなにか─基本的な知識と考え方をおさえよう」から一部を抜粋したものです。掲載
RapidXMLのページから拾ってきたversion 1.13のZIPファイルを解いて出てきたのはヘッダが4本、HTMLドキュメントとライセンス条項……これだけ? なんともそっけない構成ですがヘッダを#includeするだけで使えるみたい、軽量ライブラリの鑑です。ヘッダのタイムスタンプが2009年5月で、きょうびのコンパイラが素直に食ってくれるか少々不安でしたが、お試しコードをVisual C++ 2017が、するりと呑んでくれたので一安心。 parseのキホン RapidXMLでXMLをパースするのは、とっても簡単。xml_documentを用意し、メンバ関数:parse()にXML文字列を食わすだけ。 #include <rapidxml.hpp> #include <iostream> #include <string> using namespace std; // 以降、Rapi
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く