ブックマーク / gihyo.jp (85)

  • 第3回 AWS::XRayによる解析とその実装 / 多くのCPAN Authorに育てられ、息をするようにCPANモジュールを書けるようになり、そして分かったこと | gihyo.jp

    3年半ぶりに東京に返ってきたYAPC~YAPC::Tokyo 2019 第3回AWS::XRayによる解析とその実装 / 多くのCPAN Authorに育てられ、息をするようにCPANモジュールを書けるようになり、そして分かったこと 全29の多彩なトーク YAPC::Tokyo 2019レポート、第3回です。 今回のYAPCは全部で29のトークがあり、テクニカルな話題、コミュニティの話題、エンジニアの話題など、さまざまな観点のトークが用意されました。 今回はテクニカルなトーク、そして、ベストトークを受賞した今回の珠玉のトークをお届けします。 これまでの模様はこちらをご覧ください。 第1回 型にはまらない型の話、Perl to Go 第2回 Perl5の静的解析入門、ゲストトーク「2つのDXPerlでもX-Rayが使えるように 今回、まずレポートするのは、LINE社主催のISUCONにお

    第3回 AWS::XRayによる解析とその実装 / 多くのCPAN Authorに育てられ、息をするようにCPANモジュールを書けるようになり、そして分かったこと | gihyo.jp
  • 第2回 Perl5の静的解析入門、ゲストトーク「2つのDX」 | gihyo.jp

    静的解析と人の歩み寄りがコードの治安を守る お弁当が配布されたランチスポンサーセッションの終了後、Room 1へ移りmacopyさんの「Perl5の静的解析入門」を聞きに行きました。Perl5のソースコードの静的解析には興味があり、個人的に楽しみにしていたトークの1つです。 macopy氏はPerlをテーマに、静的解析と人の歩み寄りについて自身の考えを発表しました macopyさんは、そもそも静的解析とはどういうものなのかというところから話し始めました。静的解析とは、質的にはコードをただの文字列として扱うことです。通常、Perlで書かれたプログラムはperlコマンドによって実行されるものですが、静的解析では文字列を読むだけで実行をしません。静的解析の利点として挙げられていたのは、コードの「見たままを扱える」こと。プログラムは実行できる形式に変換される過程で最適化され、不要な情報がどんどん

    第2回 Perl5の静的解析入門、ゲストトーク「2つのDX」 | gihyo.jp
  • 第53回 Cを用いたPerl拡張入門―Inline::Cで体験してみよう!(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは上川慶さんで、テーマは「Cを用いたPerl拡張入門」です。 稿のサンプルコードは、誌「WEB+DB PRESS Vol.108」のサポートサイトから入手できます。 Cを用いたPerl拡張入門 筆者たちPerl Mongerは先人たちが築き上げてきたモジュールを使いながらPerl製のプログラムを作成します。しかしながら、すべてのモジュールがPerlだけで作成されているわけではありません。中にはCの力を借りてPerlの拡張を行っているものもあります。 Cを用いてPerlを拡張する理由 ではなぜ、Cを用いてPerlを拡張する必要があるのでしょうか。それには次の点が挙げられるでしょう。 ホットスポットの改善 ホットスポットとは、処理の中でとても時間がかかっている部分を指します。みなさんが今までにPerlで記述した処

    第53回 Cを用いたPerl拡張入門―Inline::Cで体験してみよう!(1) | gihyo.jp
  • 第51回 Test2で変わるモダンなテスト―拡張性を持ったテスティングフレームワークとTest2::V0の使い方(2) | gihyo.jp

    前回の(1)はこちらから。 実例を交えた使い方 Test2::V0には、比較以外にもテストを書くときによく使うツールセットが用意されています。ここで代表的なものを紹介します。 オブジェクトのモック 外部APIに接続する処理をテストする際に、クラスやオブジェクトのメソッドを書き換えて特定のレスポンスを返すようにモックすることがあります。直接メソッドを書き換える方法もありますが、それではテスト後に書き換えたメソッドを戻すことやネストしたときの扱いに気を付ける必要があります。 mock関数を使うと、宣言されたスコープ内でのメソッドの上書きできます。 package Foo { sub doit { 'A' } } { my $mock = mock 'Foo' => ( override => [doit => sub { 'B' }], ――(1) ); is +Foo->doit, 'B',

    第51回 Test2で変わるモダンなテスト―拡張性を持ったテスティングフレームワークとTest2::V0の使い方(2) | gihyo.jp
  • 第51回 Test2で変わるモダンなテスト―拡張性を持ったテスティングフレームワークとTest2::V0の使い方(1) | gihyo.jp

    Perl Hackers Hub 第51回Test2で変わるモダンなテスト―拡張性を持ったテスティングフレームワークとTest2::V0の使い方(1) 連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはakiymこと秋山卓巳さんで、テーマは「Test2で変わるモダンなテスト」です。新たなテスティングフレームワークであるTest2を使ったテストの書き方や活用方法について紹介します。 稿のサンプルコードは、誌「WEB+DB PRESS Vol.106」のサポートサイトから入手できます。 Perlでのテスト Perlではテストを書く際に、Test::Moreというモジュールが広く使われています。これは、プログラムの実行結果が期待しているものと一致しているかをチェックするためのシンプルなモジュールで、テスト結果をTAP(Test Anything Protocol

    第51回 Test2で変わるモダンなテスト―拡張性を持ったテスティングフレームワークとTest2::V0の使い方(1) | gihyo.jp
    perlcodesample
    perlcodesample 2018/10/18
    Perl
  • 第50回  Minillaを使ったモダンなCPANモジュール開発(3)

    (1)はこちら、(⁠2)はこちらから。 CPANへのリリース さて、いよいよCPANへのアップロードを行っていきましょう。 Changesを書く まずは、リリース前にモジュールの変更履歴をChangesファイルに書きます。Minillaが出力したChangesのひな型に{{$NEXT}}という文字列がありますが、その次行以降に続けて箇条書きで変更内容を記述します。 この{{$NEXT}}部分がリリース時にv0.0.1 2018-02-17T18:42:09Zのようにバージョン番号とリリース時間に自動置換され、CPANモジュールに同梱されます。 アップロード用の設定ファイルを配置する CPANモジュールをPAUSEにアップロードするための設定も必要です。.pauseというファイルをホームディレクトリ上にパーミッション0600で作成し、次のようにPAUSEアカウントとパスワードを記述します。

    第50回  Minillaを使ったモダンなCPANモジュール開発(3)
  • 第50回  Minillaを使ったモダンなCPANモジュール開発(2) | gihyo.jp

    前回の(1)はこちらから。 CPANモジュールの作成 それでは、実際にCPANモジュールを作成していきましょう。 モジュールの命名規則 まずはモジュールの名前を決めましょう。CPANの世界では、階層化された説明的な名前が使われる傾向にあります。たとえば、MarkdownのモジュールであればText::Markdownというように「Text」が付くといった具合です。そこまで強い強制力はありませんが、ガイドラインもあります。 Perlの世界はご存じのとおりTMTOWTDI(There's more than one way to do it.)(⁠注1)ですし、ほかの言語の影響も受け、最近は個性的な名前のCPANモジュールも増えてきました。それ自体は悪いことではありませんが、慣れないうちはガイドラインや、既存のモジュールをお手にしてモジュール名を考えるとよいでしょう。 CPANモジュールには

    第50回  Minillaを使ったモダンなCPANモジュール開発(2) | gihyo.jp
  • 第50回  Minillaを使ったモダンなCPANモジュール開発(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。記念すべき第50回のハッカーは、連載の監修を務め、数多くのモジュールをCPANにアップロードしている松木雅幸(Songmu)さんで、テーマは「Minillaを使ったモダンなCPANモジュール開発」です。 Perlで何かを開発する際には、たとえ公開する予定がなくともCPANに公開するモジュールと同じディレクトリ構成で開発するのがお勧めです。稿ではMinillaというCPANモジュール作成のためのツールを使って、迷いなく開発を進める方法について説明していきます。 稿で作成するサンプルのCPANモジュールは、筆者のGitHubリポジトリにてソースコードやコミットログを公開しています。また、CPAN上にも実際にリリースされています。 Minillaとは? MinillaはCPANモジュールのオーサリングツールです。2013年に開

    第50回  Minillaを使ったモダンなCPANモジュール開発(1) | gihyo.jp
  • 第40回 Perl開発への動的な型制約の導入(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは、はてなPerlを利用したWebアプリケーションを開発している@shiba_yu36こと柴崎優季さんで、テーマは「Perl開発への動的な型制約の導入」です。 稿のサンプルコードは、WEB+DB PRESS Vol.94のサポートサイトから入手できます。 なぜ動的な型制約を導入したいのか 動的な型制約とは、関数の引数や変数に受け付ける型を制約として記述しておき、プログラムの実行時に制約を満たしているかのチェックを行うしくみのことです。静的な言語ではコンパイル時に型チェックを行っているのですが、それを動的な言語で実行時に行います。 動的な型制約をPerlへ導入する方法の解説に入る前に、節でまず、なぜPerlに動的な型制約を導入したいのかについて説明します。 型がないことによる問題 Perlを使うメリットにはた

    第40回 Perl開発への動的な型制約の導入(1) | gihyo.jp
  • 第48回 Perlでの今風のゲームサーバ開発とテスト(2) | gihyo.jp

    前回の(1)はこちらから。 Test::mysqldを使ったゲームサーバのテスト 多くのWebサービスや、ソーシャルゲームアプリのサーバ内のデータストアに用いられているMySQLですが、MySQLを使う機能を含んだアプリケーションのテストにはいくつか手法があります。 代表的な手法は、直接MySQLを使うアプリケーション内のレイヤと、そのレイヤを使う別のレイヤとの関係を、依存性注入などの手法により疎結合にする方法です。テストではMySQLを直接使うのではなく、モック化されたレイヤに入れ替えます。 ただ、この手法は、筆者の担当しているサービスではMySQLを使うレイヤを分離するのが難しく、採用できませんでした。 そこで使っているのが、テスト専用のmysqldです。テスト専用のmysqldを使うことで、テストを実行する環境に依存せず、テストの並列実行も可能になります。 Test::mysqldで

    第48回 Perlでの今風のゲームサーバ開発とテスト(2) | gihyo.jp
  • 第48回 Perlでの今風のゲームサーバ開発とテスト(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは谷脇真琴さんで、テーマは「Perlでの今風のゲームサーバ開発とテスト」です。 MySQLを使ったコードのテストの構築のしかたや、普通のWebサービスには見られないマスタデータに対するテストなど、Perlによるゲームサーバの開発によって得られた知見を紹介します。 稿のサンプルコードは、WEB+DB PRESS Vol.102のサポートサイトから入手できます。 ゲームサーバのAPI開発 ゲームと一口に言っても、家庭用据え置きゲーム機や携帯ゲーム機、スマートフォンなど、さまざまなプラットフォームにゲームがリリースされています。筆者はその中でも、スマートフォン向けのゲームアプリの開発チームにいます。いわゆる、ソーシャルゲームアプリと言われているものです。 現代のゲームアプリでは、アプリがデータを保存するためや、ほかの

    第48回 Perlでの今風のゲームサーバ開発とテスト(1) | gihyo.jp
  • 第48回 Perlでの今風のゲームサーバ開発とテスト(3) | gihyo.jp

    (1)はこちら、(⁠2)はこちらから。 マスタデータのテスト ゲーム運営において必要になってくるのがアイテム定義などを含むマスタデータの管理です。ここでは、マスタデータの管理やテストの手法について述べていきます。 マスタデータはゲームサーバにおいて、ゲームの挙動を決める要素の一つです。プログラムコードと違い、プログラマー以外が入力できる形式で書かれる場合があり、ときには専用の入力ツールや、Unityエディタなどのゲーム開発環境に統合された内製ツールが入力に用いられることがあります。 マスタデータの例 筆者のプロジェクトでは、マスタデータはCSV(Comma-Separated Values、カンマ区切り)の形式で記述され、そのままMySQLのテーブルにレコードとして挿入できる形で表現されます。以下に、ゲーム内アイテムを表現するマスタデータの例を示します。 id,name,effect_ty

    第48回 Perlでの今風のゲームサーバ開発とテスト(3) | gihyo.jp
  • 第47回 Anikiで学ぶ実践的なO/Rマッパの作り方(3) | gihyo.jp

    (1)はこちら、(⁠2)はこちらから。 Aniki─⁠─これまでになかった抽象度を実現したO/Rマッパ これまでのO/Rマッパが持つ問題を解消するために筆者が新しく開発したO/RマッパがAnikiです。(⁠3)ではAnikiの設計と実装について、特徴的な部分とその考え方を説明します。 既存のO/Rマッパとの違い AnikiはこれまでのO/Rマッパと比べて、抽象度の低いデータベース操作ができるO/Rマッパとして設計されています。すべてのデータベース操作を行うメソッドは、抽象的な操作の名前ではなくデータベースにどのようなSQLを発行するかというより低レベルな操作で命名されています。たとえば、Anikiのデータベース操作を行うメソッドの名前はselectやinsert_and_fetch_rowなどにしています。これにより、O/Rマッパに明るくない人でも、どこでどのようなSQLが発行されるのかが

    第47回 Anikiで学ぶ実践的なO/Rマッパの作り方(3) | gihyo.jp
  • 第47回 Anikiで学ぶ実践的なO/Rマッパの作り方(2) | gihyo.jp

    前回の(1)はこちらから。 O/Rマッパを作る前に (2)では、O/Rマッパを作る前にどのようなことを検討するべきかを説明します。 既存のO/Rマッパとの違いを明確にする 既存のものとまったく同じ問題を解決したところで、単なる車輪の再発明になってしまいます。既存のものと何が違うのかを明確にする必要があります。 そのためには、前例の調査や検証なども必要になるでしょう。CPANモジュールに含まれるChangesやGitHubの過去のissueなどを見ることで、先人の経験をある程度得ることができます。また、近所のPerl MongersやYAPC(Yet Another Perl Conference)などに参加して、有識者の意見を聞くのもよいでしょう。 当に作る必要があるのかを検討する その問題は新しいO/Rマッパを作るに値するほどのものなのかを検討しましょう。既存のO/Rマッパに問題を解決

    第47回 Anikiで学ぶ実践的なO/Rマッパの作り方(2) | gihyo.jp
  • 第46回 Perl 5.26で変わること(3) | gihyo.jp

    (1)はこちら、(⁠2)はこちらから。 Perl 5.26で新たに追加されたもの このように非互換性の話ばかりしているとPerl 5.26へのアップグレードをためらう声も出てきそうですが、Perl 5.26にはセキュリティ上のメリットだけでなく、性能的なメリットや便利な新機能などもあります。 インデント付きヒアドキュメント ある程度まとまった分量の、特に複数行にわたる文字列を扱いたい場合は、ヒアドキュメントを利用するのが定番です。

    第46回 Perl 5.26で変わること(3) | gihyo.jp
  • 第46回 Perl 5.26で変わること(2):Perl Hackers Hub|gihyo.jp … 技術評論社

    前回の(1)はこちらから。 encodingプラグマの仕様変更とその対策 Perl 5.26には、ほかにも古いバージョンのPerlからアップグレードするとエラーになる変更がいくつかあります。encodingプラグマの仕様変更もその一つです。 従来はencodingプラグマにエンコーディングを渡しておけば、UTF-8以外の文字コードで書かれたモジュールやライブラリでも適切にPerlの内部表現に変換されていました。 # 日Windows環境でShift_JISのままコードを書いても、 # encodingを使えば正規表現などを正しく扱えた use encoding "cp932"; my $string = "表示"; $string =~ s/表/掲/; # プラグマなしだと5C問題[6]でエラー print length($string); # 2 この挙動はPerl 5.22で廃止対

    第46回 Perl 5.26で変わること(2):Perl Hackers Hub|gihyo.jp … 技術評論社
  • 第46回 Perl 5.26で変わること(1):Perl Hackers Hub|gihyo.jp … 技術評論社

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはcharsbarこと石垣憲一さんで、テーマは「Perl 5.26で変わること」です。 Perl 5.26リリース 去る2017年5月30日にPerl 5.26がリリースされました。これは1987年にPerl 1.0が生まれてから30年、モダンPerl運動のきっかけとなったPerl 5.10が2007年に生まれてから10年という節目のリリースです。2016年春に新たにパンプキン[1]に就任したSawyer X氏のリードのもとでリリースされる最初の安定版[2]でもあります。 Perl 5はかれこれ20年以上も同じメジャーバージョンを使い続けていることからも察せられるように、後方互換性が比較的よく保たれている言語です。それでも、節目節目では新機能の追加とともに多かれ少なかれ互換性が失われるような変更が行われてきました

    第46回 Perl 5.26で変わること(1):Perl Hackers Hub|gihyo.jp … 技術評論社
  • 第45回 Perlで作るコマンドラインツール―オプション、サブコマンド、設定ファイルへの対応(2) | gihyo.jp

    Perl Hackers Hub 第45回Perlで作るコマンドラインツール―オプション、サブコマンド、設定ファイルへの対応(2) 前回の(1)はこちらから。 設定ファイルの利用 ここでは、Perlを使って設定ファイルの読み込みを行う手法について紹介していきます。 設定ファイルはなぜ必要か コマンドラインツールでは、実行するたびに変わってくるものがあります。たとえば実行結果をメールで送信するツールなら、メールアドレスは実行ユーザーごとに変わりますし、同じユーザーでも常用しているメールアドレスが変更になった場合は変える必要があります。ファイルを変換するツールなら、どのファイルを変換するのかやファイルの保存場所が毎回変わります。こういった値は、コードに直接書くのではなく、設定値としてプログラムの外部から渡せるようになっているのが良いプログラムです。 設定値を渡す方法として、すでにコマンドライン

    第45回 Perlで作るコマンドラインツール―オプション、サブコマンド、設定ファイルへの対応(2) | gihyo.jp
  • 第45回 Perlで作るコマンドラインツール―オプション、サブコマンド、設定ファイルへの対応(1) | gihyo.jp

    Perl Hackers Hub 第45回Perlで作るコマンドラインツール―オプション、サブコマンド、設定ファイルへの対応(1) 連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはふしはらかんさんで、テーマは「Perlで作るコマンドラインツール」です。 稿のサンプルコードは、誌サポートサイトから入手できます。 コマンドラインツールを作ろう 連載を読まれているみなさんは、コマンドラインツールを使ったことのある人がほとんどかと思います。また、コマンドラインツールを作ったことのある人も多いでしょう。Perlはほとんどの環境に標準で導入されていて、強力なテキスト処理を備えていることもあり、シェルスクリプトで書くのはしんどいかなという程度のものから、かなり複雑で高負荷な処理を要するものまで、幅広くコマンドラインツールの記述に使われています。 今回は、コマンドライ

    第45回 Perlで作るコマンドラインツール―オプション、サブコマンド、設定ファイルへの対応(1) | gihyo.jp
  • Perlではじめる プログラミング超入門

    このの概要 「かんたんIT基礎講座」シリーズのPerl入門書で,2011年発売の「ゼロからわかるPerl言語超入門」の改訂版にあたります。Perlをテーマに,プログラミングの技術をゼロから身につけられます。作例として簡単なゲームを作るなど,楽しみながら学習できる内容にもなっています。また,各章末には練習問題を用意しており,取り外し可能な解答集も付属しています。独習用のテキストにはもちろん,授業や講座などのテキストとしてもお勧めです。 こんな方におすすめ はじめてプログラミングを学習する人,Perlでプログラミングを行いたい初心者 CHAPTER 1 Perlの概要 1-1 プログラミングとは何か 1-2 Perlとは何か 1-3 Perlで何ができるか 1-4 Perlの基構造 CHAPTER 2 Perl開発実行環境の構築 2-1 Perl開発実行環境の構築方法 2-2 Perl開発

    Perlではじめる プログラミング超入門