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

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

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

    生のポインタは使わないで! Modern C++のメモリ管理
  • WebAssemblyでPOSIXの機能を利用可能にする仕様「WASIX」が公開

    Wasmerは、WebAssemblyでPOSIX(Portable Operating System Interface)の機能を利用可能にする新しい仕様「WASIX」を5月30日に公開した。WASIは、WebAssemblyWindowsmacOSLinuxで動作可能にするための仕様であるWASIを拡張したものだ。WASIでは、OSのファイルシステムやネットワークなどを安全に利用可能にするAPIを定義している。 WASIXは、マルチスレッド処理やバークレーソケット、プロセスのフォーク、DNSによる名前解決など、POSIXが定義する機能の多くをWebAssemblyで利用可能にする。現在のところWASIXはRustとC言語で利用でき、ZigやAssemblyScriptへの対応も予定している。 WASIXを利用したプログラムを作成するには、上記の対応言語でWASIXのAPIを使っ

    WebAssemblyでPOSIXの機能を利用可能にする仕様「WASIX」が公開
  • LLaMAのオープンソース実装OpenLLaMA、3000億トークンでトレーニングされたチェックポイントをリリース

    OpenLM Researchは、米Meta AIが開発した大規模言語モデル「LLaMA(Large Language Model Meta AI)」のライセンスに基づく、オープンソースの大規模言語モデルOpenLLaMAのパブリックプレビューとなる「OpenLLaMA 7B」の、3000億トークンでトレーニングされたチェックポイントを、5月3日(現地時間)にリリースした。 今回リリースされた300Bチェックポイントは、既存の実装と広く互換性を持たせることを目的に、BOSトークンの影響を受けにくくしている。 トレーニングは、1.2兆を超えるトークンを含むLLaMAトレーニングデータセットを再現した、TogetherによるRedPajamaデータセットによって行われており、モデルアーキテクチャ、コンテキスト長、トレーニングステップ、学習率スケジュール、オプティマイザなど、元のLLaMAペーパ

    LLaMAのオープンソース実装OpenLLaMA、3000億トークンでトレーニングされたチェックポイントをリリース
  • 自力でWebサイトを作れるようになるブロックコーディングとは? HTML/CSSの脱初心者を目指して

    HTML/CSSの知識を習得しても、いざWebサイトを構築しようとすると手が止まってしまう。それは知識の体系化ができていないから、と語るのが『HTML/CSSブロックコーディング』の著者である笠井枝理依さんです。笠井さんは書で、そうした悩みを解決する手法としてサイトの要素をブロック単位で分解してコーディングしていくブロックコーディングを解説しています。今回は書からWebサイトをブロックに分解する方法を紹介します。 書は『HTML/CSSブロックコーディング デザインをすらすら再現できる』の「Ch01 モックアップをブロック分解」を抜粋したものです。掲載にあたって編集しています。 モックアップとは モックアップとは皆さんが考えるところの「デザイン」であり、日では「デザインカンプ」と呼ばれることもよくあります。Webページがどのように表示されるのか、実際にブラウザで表示される場合と遜色

    自力でWebサイトを作れるようになるブロックコーディングとは? HTML/CSSの脱初心者を目指して
  • 不正指令電磁的記録とは? 開発者が自分の身を守るために知っておきたい法律知識【伏石ちゃんは意図に反したい】

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

    不正指令電磁的記録とは? 開発者が自分の身を守るために知っておきたい法律知識【伏石ちゃんは意図に反したい】
  • 好きで打ち込めることを探すこと――ちょまど氏のキャリアを形成した「オタ駆動開発」とは【Developers Boost 2019】

    2019年11月30日、翔泳社主催の若手エンジニア向けカンファレンス「Developers Boost(デブスト)~U30エンジニアの登竜門~」が開催された。基調講演では、マイクロソフトのCloud Developer Advocateで「ちょまど」こと、千代田まどか氏が登壇。30歳以下(U30)の若手エンジニアに向け、「これが私の戦い方」をテーマに自身のキャリアを語り、若手エンジニアの成長と交流をブーストした。 マイクロソフト Cloud Developer Advocate 千代田まどか(ちょまど)氏 「推し」には時間・労力・お金を惜しまず、全力を注ぐ マイクロソフトでCloud Developer Advocate(クラウド デベロッパー アドボケイト)として、国内・海外で多数の講演をこなし、「Developers Summit 2017」ではベストスピーカー賞 総合第1位を獲得して

    好きで打ち込めることを探すこと――ちょまど氏のキャリアを形成した「オタ駆動開発」とは【Developers Boost 2019】
  • 非同期処理の基本とアクターモデルが解決する課題とは

    はじめまして、マーベリック株式会社のリチャード 伊真岡です。この連載では非同期処理に役立つアクターモデルを学ぶため、JavaScalaから使えるOSSであり、アクターモデルの実装を提供するAkkaを紹介します。連載の前半では非同期処理とActorの基礎的な部分を、後半では非同期処理から分散システムへと話を進めていきます。分散システムは現代のシステム構築において重要性を増しているので、Akkaが非同期処理のツールから始まって、どんな分散システムのアーキテクチャーのパターンを可能にしてくれるのかを紹介したいと思います。連載の第一回である今回は非同期処理の現状や歴史をおさらいし、そしてアクターモデルによって非同期処理の中でも、どういった問題が解決されるのかお話します。 非同期処理とは 現代のアプリケーション開発では非同期処理を扱う機会が数多くあるといえるでしょう。非同期処理[1]とは、処理を開

    非同期処理の基本とアクターモデルが解決する課題とは
  • ExpoではじめるReact Native開発環境の構築

    対象読者 JavaScriptとWeb開発の基礎に理解がある方 Reactを用いたJavaScriptアプリケーション開発の経験者 Androidアプリ開発の経験者 iOSアプリ開発の経験者 前提環境 筆者の検証環境は以下の通りです。 macOS Mojave 10.14.2 Node.js 11.7.0/npm 6.5.0 expo-cli 2.6.14 Node.js環境が準備できていない方は別途インストールしてください。Mac環境であればnvmやnodebrew、Windows環境であればnvm-windows等のバージョン管理ツールの利用をおすすめします。 React Nativeでできること 前回の記事では、React Nativeがブラウザの方法論でUIを実装しつつも、UI以外の構造としてはモバイルアプリに近いものであると説明しました。では、実際にJavaScriptで利用でき

    ExpoではじめるReact Native開発環境の構築
  • 「形式手法」の“論理の力”による開発効率と品質の向上事例

    社会人エンジニア向けの教育プログラム「トップエスイー」から、エンジニアの皆さんに対して有用な情報をお届けするコーナーです。ところで、形式手法という言葉はご存じでしょうか? 一般には「数理論理学に基づき、効率よく高品質なソフトウェアを開発するための手法の総称」などといわれます。とはいえ「数理論理学」といわれてもなかなか実感ができないと思います。さらに「総称」と述べましたが、セミナーや書籍などで勉強した方も、その中の一つの手法や観点のみに触れたのではないかと思います。記事ではAmazon Web ServiceやFacebook等の具体的な事例にも触れ、形式手法と呼ばれるアプローチのいくつかの方向性・可能性について紹介します。「形式手法」という広すぎる言葉はいったん忘れて、難しい専門用語に振り回されないよう、できるだけ一般的な言葉での説明を補足します。 「網羅的テストが可能な擬似コード」を用

    「形式手法」の“論理の力”による開発効率と品質の向上事例
  • デブサミ2017アワードの受賞者が決定、総合1位はデブサミ初登壇のちょまど氏

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

    デブサミ2017アワードの受賞者が決定、総合1位はデブサミ初登壇のちょまど氏
    kybernetes
    kybernetes 2017/03/28
    簡単なモバイルアプリを作るものが優勝するくらい日本のエンジニアのレベルが低いんだよ。
  • コードがレガシーになる原因のほとんどは、人間に関係している~『レガシーソフトウェア改善ガイド』より

    ※いずれも『レガシーソフトウェア改善ガイド』より抜粋(記事掲載に合わせ一部改変)。 このについて 書のスコープは欲張りなもので、放置されたレガシーコードベースを、あなたの組織に価値をもたらす保守が可能で十全に機能するソフトウェアへと変身させるのに必要なことを、すべて伝授しようというのです。もちろん、1冊ので、すべてを完全に網羅しようとする試みは、達成できるわけがないのですが、私はレガシーソフトウェアの問題点に対して、さまざまな角度からアプローチすることで、それに挑んでいます。 コードがレガシーに(というのは、大ざっぱに言って、保守が困難に)なるには、多くの理由がありますが、ほとんどの原因は、技術ではなく人間に関係しています。もし人々のコミュニケーションが十分でなければ、人が組織を離れるとき、コードについての情報が失われます。同様に、開発者、管理者、そして組織全体が、仕事の優先順位を正

    コードがレガシーになる原因のほとんどは、人間に関係している~『レガシーソフトウェア改善ガイド』より
  • 超高速WordPress仮想マシン「KUSANAGI」に学ぶ、PHP+MySQLアプリチューニングの秘訣

    連載について WordPressは、W3Techsの統計情報によると世界中のおよそ26%のWebサイトで利用されているオープンソースCMSソフトウェアであり、CMSソフトウェアに限定するとおよそ59%と過半数以上のシェアを有しています。WordPressは当初、GPLライセンスで誰もが無償で利用できることもあり、ブログソフトウェアとして広く利用されてきましたが、最近では、その開発生産性の高さや圧倒的なマーケットシェアを背景に、CMSソフトウェアとしてまたWebアプリケーションフレームワークとしても利用されており、エンタープライズ領域での採用も加速しています。 一方で、WordPressPHPMySQLベースの動的なCMSソフトウェアであり、Webシステムそのものとして活用できるというメリットがある反面、エンタープライズ領域での利用が増えるに従って、動作速度としてのパフォーマンス、セキ

    超高速WordPress仮想マシン「KUSANAGI」に学ぶ、PHP+MySQLアプリチューニングの秘訣
  • 関数型リアクティブプログラミング言語Elmに学ぶ フロントエンド開発の新しい形 【前編】

    前編では、Elm言語の基礎とFRPのエッセンスについてコードを通じて学びます。 後編では、実際にElmを使ってアプリケーションを作る方法と、その際に重要になるアーキテクチャを学びます。 なお、執筆時点でのElmのバージョンは0.15.1です。 注意! Elmはバージョン0.17で大きな変更がありました。現在は「関数型リアクティブプログラミング」のための言語ではありません。 参考:A Farewell to FRP(さらば FRP) また、言語自体のシンタックスやライブラリのAPIも以前とは大きく変わっています。これからElmを始める方は、必ず公式ドキュメントを参照してください。 公式ガイド FRPとは何か リアクティブプログラミングの直感的な説明としてよく挙げられるのが、Excelのような表計算ソフトです。 例えば、セルの間にC1 = A1 + B1という関係があるとします。 このように宣

    関数型リアクティブプログラミング言語Elmに学ぶ フロントエンド開発の新しい形 【前編】
  • 護衛艦のシステムはスマホの普及で変化した――護衛艦プログラマーに聞く、艦船を動かすソフトウェア|CodeZine×サイボウズ式

    国防の要である「護衛艦」。護衛艦の動作にもソフトウェアは重要な役割を担っています。護衛艦を動かすシステムはどのようなものなのか、システムにどんなトレンドがあるのかについて、「護衛艦プログラマー」こと、三菱スペース・ソフトウエア株式会社の中島康貴さんにお話を聞きました。 中島康貴(なかしま・やすたか)さん 三菱スペース・ソフトウエア株式会社 鎌倉事業部第一技術部に所属。横浜国立大学工学部卒業、専門は航空宇宙工学。入社後は防衛分野の大規模組み込みリアルタイムシステムの新規開発及び保守改修のプロジェクトに携わり、現在、同社でエンジニアとして活躍中。 護衛艦のシステムは、ほぼ「組み込みリアルタイムシステム」 ――護衛艦を動かすシステムにはどのようなものがあるのでしょうか。 護衛艦の航行を導く航法統制システム、レーダーや武器の統制システム、そして艦内情報の共有システムなどがあります。これらシステムの

    護衛艦のシステムはスマホの普及で変化した――護衛艦プログラマーに聞く、艦船を動かすソフトウェア|CodeZine×サイボウズ式
  • 「Stack Overflow」がユーザー動向に関する調査結果を公開、最もよく利用している言語はJavaScript、習得したい言語はSwift、C++11、Rustなど

    調査への回答を行ったユーザーの年齢のうち、もっとも多かったのは25~29歳(28.5%)で、20~24歳(24.5%)、30~34歳(17.8%)が続く。国別の平均年齢では、アメリカが31.6歳、イギリスが30.3歳、カナダが30.3歳などとなっており、男性が9割以上を占めている。 プロフェッショナルのプログラマとしての経験は、2~5年(32.4%)がもっとも多いが、11年以上(24.2%)、6~10年(23.2%)と経験豊かなユーザーが多いことがわかる。なお、男女の比較では、女性は2年以内、男性は2~5年がもっとも多いという結果であった。 プログラミング技術の習得方法に関する質問では、自分で学習したユーザー(41.8%)が最多で、コンピュータサイエンスの学士課程(37.7%)、業務におけるトレーニング(36.7%)がそれに続く。 来の業務とは別のプロジェクトや、オープンソースプロジェク

    「Stack Overflow」がユーザー動向に関する調査結果を公開、最もよく利用している言語はJavaScript、習得したい言語はSwift、C++11、Rustなど
  • PHP 7のパフォーマンスが高い理由

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

    PHP 7のパフォーマンスが高い理由
  • Chefで3分クッキング! Webサーバ構築のレシピをRubyで書いてみよう

    連載は、SI業界に入ったばかりの新米業務アプリケーション開発者や、SI業界を目指す学生さんを対象とした、インフラ構成管理ツールを使ってコードでインフラを構築するための講座です。また、インフラエンジニア/システムオペレータで、物理環境でのインフラ構築/運用管理は経験があるけど、プログラミングが苦手という方にも読み進めていただけるように、文法などの解説を入れながら説明します。今回は、Chefというツールのご紹介と、Chefを使ってWebサーバを構築する方法について説明します。 はじめに 前回は、コードでインフラ構成を行う第一歩としてVagrantを使ってローカルPCに仮想環境を構築する手順をご紹介しました。 今回は、Chefというツールのご紹介と、Chefを使ってWebアプリケーションの開発環境にWebサーバであるApache httpdやPHPの実行環境などをインストールする方法について説

    Chefで3分クッキング! Webサーバ構築のレシピをRubyで書いてみよう
  • 「PostgreSQL 9.4」がリリース、データ型にJSONBをサポート、GINインデックスの性能が改善

    最新版では、新たなデータ型として「JSONB」(バイナリJSON)を追加しており、データストアのリレーショナル/非リレーショナルの選択は不要で、両方を同時に利用できる。JSONBは、高速なルックアップと、Generalized Inverted Indexes(GIN)を利用した簡易な検索クエリ記述をサポートし、JSONデータを一般的なデータベースと同等か、それ以上のパフォーマンスで扱える。さらに、テーブルとドキュメントの容易な統合を実現する。 ほかにも、複数マスタのPostgreSQLクラスタ作成をサポートする、双方向レプリケーションのように利用可能な、レプリケーションの読み取り/フィルタリング/操作に対応するAPIの提供を行う。また、レプリケーションスロットや時間差レプリカ、レプリカサーバにおける管理機能などの向上も行っている。 なお、GINインデックスの進化によって、インデックスサイ

    「PostgreSQL 9.4」がリリース、データ型にJSONBをサポート、GINインデックスの性能が改善
  • ユーザーの操作は発見の宝庫! ユーザビリティーテストでユーザー視点に立った開発をしよう

    「ユーザビリティーテスト」という言葉を聞いて何を想像しますか? マジックミラー付きの実験室でユーザーが操作している様子を観察する。そういった大掛かりなイメージを持たれがちですが、ちょっとした準備で、自分たちのオフィスで日常的に実施することができます。製品が完成した時やサービスをリリースする直前だけ行うのではなく、小さな機能の実装単位でユーザビリティーを確かめてみましょう。今回は、ユーザビリティーテストとは何なのか、やることで何がわかるのか、いくつかの具体例を元にイメージを掴んでみます。 はじめに あなたの作っている製品やサービスは、当にユーザーにとって使いやすいものになっているでしょうか。ユーザーにとってよいものだと信じて作っているものでも、それは開発者やデザイナー(あなた)の思い込みかもしれません。ユーザーが実際に使っている様子を観察することでその思い込みを解消したり、ユーザーが行う操

    ユーザーの操作は発見の宝庫! ユーザビリティーテストでユーザー視点に立った開発をしよう
  • 総務省、オープンデータ推進のためAPI利用可能な統計データを拡充

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

    総務省、オープンデータ推進のためAPI利用可能な統計データを拡充