書籍概要

WEB+DB PRESS Vol.127

バックナンバー一覧

発売日
更新日

概要

特集1
実践リファクタリング
凝集度と結合度を学び,保守性と生産性を高める

凝集度と結合度は,保守性と生産性の高いコードを書くための尺度です。順次,選択,反復という要素を持つ構造化プログラミングをベースとした,現代の多くの言語に適用できます。オブジェクト指向固有のデザインパターンやSOLID原則以上に,日常的に使う機会が多いかもしれません。本特集では,関数の分け方の基準として凝集度と結合を学び,実際のコードをどのようにリファクタリングしていけば良いか解説します。

特集2
Elixirによる高速なWeb開発!
作って学ぶPhoenix

本特集では,ElixirとPhoenixでWebアプリケーションを開発する方法を解説します。Elixirは,低遅延で高い可用性を実現するプログラミング言語で,その文法はRubyから大きく影響を受けています。Phoenixは,ElixirにおけるデァクトスタンダードなWebアプリケーションフレームワークで,リッチなフロントエンドを持つ昨今の開発で求められる要素がすべて組み込まれています。特集を通してRealWorldという一つのWebアプリケーションを作ることで,ElixirとPhoenixについて実践的に学んでいきましょう。

特集3
入社した会社にすばやく適応する
事業構造,カルチャー,コードの把握

転職もしくは新卒エンジニアとして働き始めるとき,すばやく会社やチームに適応できるに越したことはありません。そのためには,その会社の事業や組織,開発についての情報のインプットと,自分自身の言葉によるアウトプットとで良い循環を生み出すことが重要です。本特集は,まったく違う文化,組織へ転職した筆者が,できるだけ早くパフォーマンスを出して貢献できるようになるために行ったことを紹介します。

目次

特集1
実践リファクタリング
凝集度と結合度を学び,保守性と生産性を高める

  • 第1章:良いコードとは何か
    リファクタリングで目指すべきもの……佐野 健介
  • 第2章:関数の役割の少なさを表す「凝集度」
    単機能を実現し,再利用性を高める……佐野 健介
  • 第3章:関数の独立性を表す「結合度」
    疎結合を実現し,意図せぬ影響を防ぐ……佐野 健介
  • 第4章:時間的凝集と論理的凝集への対応
    サーバサイド/クライアントサイドの実例で学ぶ……佐野 健介
  • 第5章:DRYと凝集度
    間違ったDRYと正しいDRYを見分ける……佐野 健介

特集2
Elixirによる高速なWeb開発!
作って学ぶPhoenix

  • 第1章:Elixirはじめの一歩
    インストール,よく使うコマンド,プログラミングスタイル……栗林 健太郎,高瀬 英希
  • 第2章:PhoenixによるWebアプリケーションの開発
    高性能! 高生産性! Elixir製のWebアプリケーションフレームワーク……大聖寺谷 一樹
  • 第3章:Ectoによるデータベースアプリケーションの開発
    使いやすくて高機能! Phoenixのデータベースライブラリ……山内 修
  • 第4章:phx.gen.authによる認証機能の開発
    カスタマイズも簡単! Phoenixの認証ライブラリ……隆藤 唯章
  • 第5章:LiveViewによるフロントエンドの開発
    JavaScriptほぼ不要! PhoenixのSPAライブラリ……齋藤 和也

特集3
入社した会社にすばやく適応する
事業構造,カルチャー,コードの把握

  • 第1章:適応の目的と基本戦略
    インプットとアウトプットの循環……丸山 亮
  • 第2章:知り方を知る
    人との会話,理解の言語化……丸山 亮
  • 第3章:事業を知る
    事業構造の俯瞰,ドメイン知識の吸収……丸山 亮
  • 第4章:組織を知る
    組織フレームワークの把握,カルチャーの体験……丸山 亮
  • 第5章:開発を知る
    開発スタイルの把握,施策のリリース……丸山 亮
  • 第6章:コードを知る
    メンタルモデルの構築,開発環境の改善……丸山 亮

一般記事

  • コミッタ直伝! 速習Ruby 3.1
    新文法,開発環境改善,性能向上……笹田 耕一
  • 速攻Laravel 9
    進化し続けるPHPフレームワーク,2年半ぶりのLTS!……後藤 和也

連載

  • 現場のPython ── システム開発も! 機械学習も!
    【第11回】データサイエンスのためのテスト入門 ……pandasやNumPyのテスト機能を使って快適に実験しよう……古木 友子
  • Goに入りては…… ── When In Go...
    【第29回】JSONストリーミングAPI ……複雑な構造体も楽々パース!……牧 大輔
  • Ruby 3標準添付ライブラリ紹介
    【第5回】HTTP,SMTPを手軽に扱う ……Net::HTTP/Net::SMTP……西山 和広
  • PHPで複雑さに立ち向かう
    【第5回】変更を容易にするコード部品化の技法……ファイル・関数での分割からOOP機能の活用,@psalm-internalまで……五十嵐 進士
  • 見なおそう! モダンJavaの流儀
    【最終回】今,覚えておくべき新しい言語仕様 ……レコードクラス,シールクラス,switch式,パターンマッチング……櫻庭 祐一
  • フロントエンド羅針盤 ── Web体験向上へのアプローチ
    【最終回】品質の優れたプロダクトを継続的に提供 ……チームで使えるデザインシステムを作る……原 一成

コラム

  • 縁の下のUIデザイン ── 少しの工夫で大きな改善!
    【最終回】ユーザーに使い方を文字で説明するためのUI……池田 拓司
  • 漫画から学ぶマネジメント
    【最終回】『宇宙兄弟』の南波六太から学ぶ逆境への立ち向かい方……是澤 太志
  • ちょっと気になる隣の技術畑
    【第4回】神話と楔形文字と,ときどきUnicode ……ゆーさん……日高 正博
  • はまちちゃんとわかばちゃんのREADER'S FORUM ── 読者のページ
    【第78回】……はまちや2,竹原

サポート

ダウンロード

(2022年2月14日更新)

■ご注意
  • 本コーナーは,本誌記事参考用資料としてのご提供を目的としております。
  • 本誌記載の内容およびサポートサイトで公開しているサンプルコードに基づく運用の結果について,記事の筆者,プログラムの作者/提供元,(株)技術評論社は一切の責任を負いかねます。ご自身の責任のもと,ご使用ください。
  • 各サンプルファイル/ソースコードには,個別に,ライセンスやREADMEファイルなどで注意事項/制限事項が添付されている場合がございます。その場合,該当のライセンス,注意事項/制限事項を優先して適用とさせていただきますので,ダウンロード後,内容をご確認ください。

特集1「実践リファクタリング」

特集2「作って学ぶPhoenix」

一般記事「速攻Laravel 9」

連載

  • 「現場のPython ── システム開発も! 機械学習も!」
    本記事で使用されたソースコード
  • 「Goに入りては…… ── When In Go...」
    本記事で使用されたソースコード
  • 「PHPで複雑さに立ち向かう」
    本記事で使用されたソースコード(執筆者GitHubリポジトリ)

正誤表

本誌の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2022年3月17日最終更新)

特集2「作って学ぶPhoenix」
第3章「Ectoによるデータベースアプリケーションの開発」
P.54右段の下から11行目

lib/realworld/blogs/article.ex
lib/realworld/blogs.ex

(以下2022年3月10日更新)

特集2「作って学ぶPhoenix」
第4章「phx.gen.authによる認証機能の開発」
P.60「Articleのリレーション設定」の5行目

shcemaブロック内にbelongs_to :author, Userを追加する
schemaブロック内にbelongs_to :author, Userを追加する

特集2「作って学ぶPhoenix」
第4章「phx.gen.authによる認証機能の開発」
P.60「Articleのリレーション設定」の9行目

これで、auhor_idをキーにUserをauthorとして関連付けることができました。
これで、author_idをキーにUserをauthorとして関連付けることができました。

(以下2022年2月14日更新)

特集1「実践リファクタリング」
第1章「良いコードとは何か」
P.13「反復」のコード

for i := 0; i++; i < 10 {
for i := 0; i < 10; i++ {

特集1「実践リファクタリング」
第2章「関数の役割の少なさを示す「凝集度」」
P.17「偶発的凝集の問題点」のコード

fmt.Prinln(twice(5))
fmt.Prinln(b)
fmt.Println(twice(5))
fmt.Println(b)

特集1「実践リファクタリング」
第2章「関数の役割の少なさを示す「凝集度」」
P.17「偶発的凝集の改善方法」のコード

fmt.Prinln(twice(num))
b = num * 100
fmt.Prinln(b)
fmt.Println(twice(num))
b := num * 100
fmt.Println(b)

特集1「実践リファクタリング」
第3章「関数の独立性を表す「結合度」」
P.22「外部結合」のコード

printf("a: %d", a)
fmt.Printf("a: %d", a)

特集1「実践リファクタリング」
第3章「関数の独立性を表す「結合度」」
P.23「スタンプ結合」のコード

func main () {
  user := User{Name: "山田"、Age: 25}
  printUser(user)
}
func printUser(user User) {
  fmt.Prntf("Name:%v, Age: %v", user.Name, user.Age)
}
func main () {
  user := User{Name: "山田", Age: 25}
  printUser(user)
}
func printUser(user User) {
  fmt.Printf("Name:%v, Age: %v", user.Name, user.Age)
}

商品一覧