PRESS』編集部が自信を持ってお届けするシリーズです。「関数プログラミング」は,関数型言語プログラマのみならず,すべてのプログラマにとっても急激に身近なものになってきました。みなさんがよく知るメジャーな命令型言語の最近のバージョンでも,関数プログラミングのエッセンスを取り入れた機能が入ってきています。関数型言語を使わない人であっても,使っている言語の新機能をうまく取り入れて開発を続けていくためには,関数プログラミングを学ぶ必要が出てきたということでもあります。関数プログラミングは,その名のとおり「関数」を基本単位とし,関数の組み合わせでプログラムを構成します。関数プログラミングというスタイル自体は,実用的な言語であれば,恐らくどの言語でも可能です。関数プログラミングを行いやすいのは,そのために作られた関数型言語ということになるでしょう。耳にあるいは目にしたことがあるかもしれませんが,関数プログラミングにはさまざまな噂が存在します。火のない所に煙というわけでもありませんが,これらの噂が出てくるにはそれなりの理由が存在します。──簡潔で,正しいコードを書くために』の執筆された2014年は,広く使われているオープンソースソフトウェアの深刻な脆弱性が立て続けに発覚しました。みなさんの中にも対応に追われることになった方がいるのではないでしょうか。「if」の話をしても,まったく詮無きことではありますが,複雑な仕様に対してもコードが簡潔に保ちやすい言語,あるいは,プログラマの些細なミスも敏感に検出する安全な言語が使われていたならば,もしかすると防げていたものがあったかもしれません。噂に挙げられたような特性がもし本当であるのならば,関数プログラミングは,世界中の人々が脆弱性対応のために浪費してしまった時間を,丸々なかったことにできたかもしれないのです。本書は,関数プログラミングや関数型言語とは一体どういうものなのかを明らかにします。その中で,前述したような噂が出てくる理由も示します。最終的に,みなさんの道具箱の中の一つとして,関数プログラミングの基礎を加えます。この道具は,実際に関数型言語を使う場合のみならず,みなさんが普段使っている言語にまで活かせる道具となるはずです。関数プログラミングや関数型言語に関する書籍は,すでにいくつか存在しています。本書では,関数型言語としてHaskellを説明に用います。関数プログラミングの基礎のほか,以下の2点に力を入れています。本書の想定読者は,これまでに他の言語をそれなりに使ってきていて,これから関数プログラミング/関数型言語も志す方々および学生の方々です。本書では,よく知られた言語との比較を多めにすることで,関数型言語が持つ利点/欠点などの差異が明確になるようにしました。ここには,単純な比較だけではなく,関数型言語の特定の有用な機能を別のメジャーな言語に取り入れようとするとどうなるかといった話も含まれます。,「関数プログラミングにおける思考方法」は,よく知られた構造化プログラミングやオブジェクト指向プログラミングのそれとはかなり違います。他の関数プログラミング関連書籍を読んだことのある方でも,ともすれば「どう考えて書いていったらよいか」設計方法/思考方法がピンとこない方がいるかもしれません。書き方がわかっても,考え方が伴わなければ,プログラムとはそうそう書けるものではありません。そのため本書では,関数型言語で関数プログラミングを行う際,どのように考えを進めていけば関数型言語らしい簡潔なコードになるかを説明しています。読者のみなさんが,本書から安全なプログラムを記述するための知見を手にし,関数型言語によって,あるいは,みなさんが関わることになる言語に知見を取り入れることによって,より良い未来を築き上げていく一助になればと思います。キヤノンソフトウェア(株)を経て,現在は(株)朝日ネットにて,HaskellでのWebアプリケーション開発や,開発環境/インフラの構成管理などに携わっている。してAgdaで仕事ができないものか虎視眈々と隙を窺っている。golfチョットデキル。べてのエンジニアのための,プログラミング技術情報誌です。~テスト管理の効率を上げ,脆弱性診断を自動で行う~早期リリースが注目される中で,ソフトウェアの品質やセキュリティ面への対応も重要になってきたと感じます。本連載では,安全性・安定性を加えた開発サイクルについて考えていきます。ゆるく,不定期に更新予定です。本特集では,2018年10月にリリースされたばかりのバージョン11と,現場の主力として使えるバージョン10にフォーカスし,この7年間で大きく進化したPostgreSQLの魅力を余すことなくお伝えします。TopicsUbuntuコミュニティに興味があるユーザ向けに,ML・Wiki・フォーラムなどの最新の話題を1週間分厳選してお届けします。......押さえておきたい輻輳制御アルゴリズム本連載ではTCP/IPの中でも特に,新たなアルゴリズム登場の背景として,ネットワーク環境の変化や,TCP輻輳制御アルゴリズムの変遷と概要をみていきます。Linuxの統合認証にも新たな変化がありました。この連載ではAD-Linux統合認証の最新状況を紹介します。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。Linuxのメンテナーを務める筆者が,Linuxやオープンソースソフトウェアと過ごす日々をエッセイ風味で綴った連載。100回を期に「続・玩式草子」として新たなスタートを切ることとなりました。