PowerShellで1年度分の週ごとの営業日を整理する

これは何

年度初めで予定を作成する際、縦軸に項目、横軸に年月の表で整理することがよくあると思いますが、このとき、横軸の粒度はどうするでしょうか。

ざっくりでよければ、月単位、月を3分割(10日ごと)、月を4分割(1週間ごと)などにすると思いますが、週単位で作成する場合は、その営業日数も把握しておきたいところです。

祝日は「国民の祝日に関する法律」で定められていますが、春分の日秋分の日は天文学的に定まるため、「何月何日」や「何月の第何曜日」となっておらず、総務省から前年の2月に公表されています。幸いなことにcsvファイルもダウンロード可能です。

www8.cao.go.jp

ということで、この国民の祝日のファイルをダウンロードして、週ごとに営業日数を整理するスクリプトは以下のようになります。

$nendo = 2024

# 未ダウンロードであれば、総務省のWebサイトから国民の祝日のファイルをダウンロード。
# https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html

$url = "https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv"
$localFile = "syukujitsu.csv"

if(-not (Test-Path $localFile)){
    Invoke-WebRequest -Uri $url -OutFile $localFile
}

# 国民の祝日のファイルから対象年度分を配列に抽出。12/29~1/3 も休日扱いに。
# 国民の祝日は年間16日なので、2年分抽出して、16*2未満であればエラー。

$holidays = Import-Csv $localFile -Encoding Default
$holidays_array = @()
$holidays|%{
    $aholiday = [DateTime]$_."国民の祝日・休日月日"
    if($aholiday.Year -eq $nendo -or $aholiday.Year -eq $nendo + 1){
        $holidays_array += $aholiday
    }
}

if($holidays_array.Count -lt 16*2){
    throw "国民の祝日が設定できていません。"
}

$holidays_array += New-Object DateTime $nendo,12,29
$holidays_array += New-Object DateTime $nendo,12,30
$holidays_array += New-Object DateTime $nendo,12,31
$holidays_array += New-Object DateTime ($nendo+1),1,1
$holidays_array += New-Object DateTime ($nendo+1),1,2
$holidays_array += New-Object DateTime ($nendo+1),1,3

# 開始日と終了日を指定して、週ごとの営業日数と合わせて出力。
# 開始と終了の週は特殊処理。

$startDay = New-Object DateTime $nendo,4,1
$lastDay = New-Object DateTime ($nendo+1),3,31

$aDay = $startDay
$eigyo = 0

while($aDay -le $lastDay)
{
    if($aDay.DayOfWeek -ne [DayOfWeek]::Sunday -and $aDay.DayOfWeek -ne [DayOfWeek]::Saturday -and -not $holidays_array.Contains($aDay)){
        $eigyo += 1
    }

    if($aDay.DayOfWeek -eq [DayOfWeek]::Sunday){
        if($aDay.AddDays(-6) -lt $startDay){
            "{0}/{1}~{2}/{3},{4}" -f $startDay.Month, $startDay.Day, $aDay.Month, $aDay.Day, $eigyo
        }else{
            "{0}/{1}~{2}/{3},{4}" -f $aDay.AddDays(-6).Month, $aDay.AddDays(-6).Day, $aDay.Month, $aDay.Day, $eigyo
        }
        $eigyo = 0
    }elseif($aDay -eq $lastDay){
        "{0}/{1}~{2}/{3},{4}" -f $aDay.AddDays(-$aDay.DayOfWeek+1).Month, $aDay.AddDays(-$aDay.DayOfWeek+1).Day, $aDay.Month, $aDay.Day, $eigyo
    }

    $aDay = $aDay.AddDays(1)
}

固定長テキストのCSV変換

PowerShellCSVを扱う方法は以下にまとまっている。

qiita.com

これを踏まえて、シフトJISの固定長テキストをCSVに変換するスクリプトは以下のようになる。「-Delimiter "`t"」を付ければ、タブ区切りも可能。

Get-Content 'data.dat' -Encoding Default|%{
    [PSCustomObject]@{
        col01 = $_.Substring(0, 2)
        col02 = $_.Substring(2, 2)
        col03 = $_.Substring(4, 2)
    }
}|Export-Csv 'data.csv' -Encoding Default -NoTypeInformation

SQL Server 2017 の更新プログラムの話

SQL Serverの最新の更新プログラムとバージョン履歴

SQL Server 2017 の更新プログラムは「サービスパック(SP)」でなく、「一般配布リリース(GDR)」と「累積的な更新プログラム(CU)」で提供される。GDRは「セキュリティ更新プログラム」と呼ばれることもある。

learn.microsoft.com

よって、更新プログラムを適用する際、セキュリティ対応のみのRTMベースラインか、機能追加・拡張のあるCUベースラインのどちらかを選択することになる。どちらを選択しても累積的なので、最新版のみを適用すればよい。ビルド番号により、CUベースラインから、RTMベースラインには移行できないようになっている。RTMベースラインから、CUベースラインへの移行は可能。

GDR には、RTM ベースラインまたは CU ベースラインを指定できます。 各ベースラインの最新の GDR バージョンは累積的であり、対応するベースラインに対する以前のすべての GDR からの修正が含まれています。

learn.microsoft.com

SQL Server ベースライン

今インストールされている SQL Server のベースラインはselect @@version で分かる。「RTM-GDR」と表示されればRTMベースライン、「RTM-CUxx」「RTM-CUxx-GDR」と表示されればCUベースライン。また、バージョン番号「メジャー.マイナー.ビルド.リビジョン」の3つめ「ビルド番号」が、2000番台ならRTMベースライン、3000番台ならCUベースラインである。

ライフサイクル

SQL Server のサポートは約10年間で、5年間のメインストリームサポートと5年間の延長サポートからなる。SQL Server 2017 のサポート関係の日付は以下のとおり。

日付
サポートの開始日 2017年9月29日
メインストリームの終了日 2022年10月11日
延長された終了日 2027年10月12日

learn.microsoft.com

KB5016884 - SQL Server 2017 の累積的な更新プログラム 31

累積的な更新プログラム 31 は、Microsoft SQL Server 2017 の最後の累積的な更新プログラムです。 SQL Server 2017 は、2022 年 10 月 11 日以降に延長サポートに移行されます。

延長サポートに移行した時点でCU31だったので、これが最後のCUとなる。これ以降の更新プログラムは、GDRで提供される。よって、累積的な更新プログラムを適用した環境では、バージョン表記SELECT @@VERSIONは「RTM-CU31-GDR」となる。

learn.microsoft.com

なぜこの記事を書いたか

SQL Server 2017 に対して、累積的な更新プログラムを適用していたが、累積的な更新プログラムが CU31 で打ち止めになって以降、GDR が2つ出ており、順番に2つインストールする必要があるのか、それとも最新の方だけインストールすればよいのか、わからなかったからです。KBの個別記事の概要を見ると対応する脆弱性しか修正しないように見えてしまいます。実際、Reddit でこれを誤解したコメント「順番に2つ適用する必要がある」がありましたが、前述のとおり累積的なので、最新の方のみのインストールでOKです。Hyper-V で「Windows Server 2019 評価版 + SQL Server 2017 Express RTM + CU31」の環境を作って、「Windowsの更新時に他のMicrosoft 製品の更新プログラムを受け取る」を指定した場合、最新の「KB5029376」のみが下りてくることを確認しました。

ビルド番号またはバージョン Update ナレッジ ベース番号 リリース日
14.0.3456.2 CU31 KB5016884 2022 年 9 月 20 日
14.0.3460.9 CU31 + GDR KB5021126 2023 年 2 月 14 日
14.0.3465.1 CU31 + GDR KB5029376 2023 年 10 月 10 日

PowerShellでディレクトリサイズ一覧を取得する方法をChatGPTに聞いてみる

Powershellディレクトリサイズ一覧を取得するプログラムを書いてください。


PowerShellを使用して、ディレクトリサイズの一覧を取得するスクリプトを以下に示します。このスクリプトは、指定したディレクトリ内の各サブディレクトリのサイズを計算し、一覧表示します。

# ディレクトリのパスを指定します
$targetDirectory = "C:\Your\Directory\Path"

# ディレクトリ内の各サブディレクトリのサイズを取得して一覧表示します
Get-ChildItem -Path $targetDirectory -Directory | ForEach-Object {
    $directory = $_
    $directorySize = (Get-ChildItem -Path $directory.FullName -File -Recurse | Measure-Object -Property Length -Sum).Sum
    [PSCustomObject]@{
        DirectoryName = $directory.Name
        SizeInBytes = $directorySize
        SizeInKB = [math]::Round($directorySize / 1KB, 2)
        SizeInMB = [math]::Round($directorySize / 1MB, 2)
        SizeInGB = [math]::Round($directorySize / 1GB, 2)
    }
} | Format-Table -AutoSize

このスクリプトを使用するには、$targetDirectory 変数にディレクトリのパスを指定してから、PowerShellで実行してください。それにより、ディレクトリ内の各サブディレクトリの名前とサイズが表示されます。サイズはバイト、キロバイト、メガバイト、ギガバイトの単位で表示されます。


自分で書いたのと似たようなスクリプトになりますね。結果は以下のとおり。単位を変えて表示してくれるのが親切。

DirectoryName SizeInBytes  SizeInKB SizeInMB SizeInGB
------------- -----------  -------- -------- --------
assembly        199413658  194739.9   190.18     0.19
authman                           0        0        0
Framework       299379653 292362.94   285.51     0.28
Framework64     325518552 317889.21   310.44      0.3

ワンライナーに書き直してください。

ワンライナーディレクトリサイズの一覧を取得するPowerShellコマンドは次の通りです。

Get-ChildItem -Directory -Recurse | ForEach-Object { [PSCustomObject]@{ Path = $_.FullName; SizeInMB = [math]::Round((Get-ChildItem $_.FullName -File -Recurse | Measure-Object -Property Length -Sum).Sum / 1MB, 2) } } | Sort-Object SizeInMB -Descending | Format-Table -AutoSize

このコマンドは、指定したディレクトリ以下のすべてのサブディレクトリのサイズをMB単位で表示し、サイズが大きい順に一覧表示します。ディレクトリのパスとサイズ(MB)が表示されます。


うーん、これは期待したものとは違ってしまっている。

Path                                                                                                                                                          SizeInMB
----                                                                                                                                                          --------
C:\Windows\Microsoft.NET\Framework64                                                                                                                            310.44
C:\Windows\Microsoft.NET\Framework                                                                                                                              285.51
C:\Windows\Microsoft.NET\Framework64\v4.0.30319                                                                                                                 217.13
C:\Windows\Microsoft.NET\Framework\v4.0.30319                                                                                                                   199.99
C:\Windows\Microsoft.NET\assembly                                                                                                                               190.18
C:\Windows\Microsoft.NET\assembly\GAC_MSIL                                                                                                                      139.44
C:\Windows\Microsoft.NET\Framework64\v2.0.50727                                                                                                                  74.45
C:\Windows\Microsoft.NET\Framework\v2.0.50727                                                                                                                    67.39
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\NativeImages                                                                                                        45
C:\Windows\Microsoft.NET\Framework\v4.0.30319\NativeImages                                                                                                       38.77
C:\Windows\Microsoft.NET\assembly\GAC_64                                                                                                                         25.74
C:\Windows\Microsoft.NET\assembly\GAC_32                                                                                                                         24.99
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WPF                                                                                                              22.92
C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF                                                                                                                22.56
C:\Windows\Microsoft.NET\Framework\v4.0.30319\ja                                                                                                                 14.97
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ja                                                                                                               14.97
C:\Windows\Microsoft.NET\Framework\v3.0                                                                                                                          11.85
...

ディレクトリサイズ一覧をワンライナーで

下記に方法はいくつか整理していたが、スクリプトファイルが実行できない環境ではどうするか、ということで。

pipin68k.hatenablog.com

ls .|%{ [pscustomobject]@{name=$_.Name;size=(ls $_.Fullname -Force -Recurse|measure -Property Length -Sum).Sum} }|sort size

エラーを非表示にしたい場合は、以下を先に実行しておく。

$ErrorActionPreference = "SilentlyContinue"

出力の例。

PS C:\Windows\Microsoft.NET> ls .|%{ [pscustomobject]@{name=$_.Name;size=(ls $_.Fullname -Force -Recurse|measure -Property Length -Sum).Sum} }|sort size

name        size
----        ----
authman
assembly    199413658
Framework   299379653
Framework64 325518552


PS C:\Windows\Microsoft.NET>

参考

WSLのAlmaLinux8でLaravel10のサンプルプロジェクトを起動するまで

前提

  • Windows10 Pro(x64)
  • WSL2インストール済み
  • MicrosoftStoreからAlmaLinux8インストール済み
  • WSLは初回起動してユーザー作成済み

Docker と Laravel Sail は使いません。またこの環境は SELinux が有効でなく、Firewall も動いていませんので、ご留意ください。 また、WSLの環境については、よければ下記を参照ください。

WSLについての覚書 - pipin68k’s blog

AlmaLinuxの初期状態確認

パッケージは minimal となっているのか、hostname,ip addrといった基本的なコマンドが使えない。また、systemd が有効になっていない。

hostname -> NG
ip addr -> NG
whoami -> OK
ping www.google.com -> OK
sudo systemctl -> NG
dnf list --installed -> OK

systemd 有効化

Microsoftのサイトを参照して、設定ファイル(/etc/wsl.conf)を作成し、WSLを再起動してこれを有効にする。サイトに記載のとおり、WSLのデフォルトのUbuntuではこの作業は不要のようだが、現時点でのAlmaLinux8では必要。

[boot]
systemd=true

PowerShellからシャットダウンする。ターミナル等からアクセスすれば自動的に起動する。

wsl --shutdown

参考

基本的なコマンドのインストール

locateは好みで。

sudo dnf install hostname iproute
sudo dnf install zip unzip
sudo dnf install mlocate
sudo dnf update
hostname -> OK
ip addr -> OK
sudo systemctl -> OK

Apache2のインストール

インストールして、起動して、サービス登録する。

sudo dnf install httpd
sudo systemctl start httpd
sudo systemctl enable httpd

Windows側から「http://localhost 」にアクセスして、テストページが表示されることを確認する。

PHP8.2のインストール

インストール可能なPHPを確認する。

dnf module list php
Last metadata expiration check: 0:16:35 ago on Sun Aug 27 10:08:06 2023.
AlmaLinux 8 - AppStream
Name                     Stream                     Profiles                                      Summary
php                      7.2 [d]                    common [d], devel, minimal                    PHP scripting language
php                      7.3                        common [d], devel, minimal                    PHP scripting language
php                      7.4                        common [d], devel, minimal                    PHP scripting language
php                      8.0                        common [d], devel, minimal                    PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Laravel10はPHP8.1以降が必要なので、Remiレポジトリを追加してPHP8.2をインストールする。

sudo dnf install epel-release
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf module list php
Remi's Modular repository for Enterprise Linux 8 - x86_64
Name              Stream                   Profiles                                   Summary
php               remi-7.2                 common [d], devel, minimal                 PHP scripting language
php               remi-7.3                 common [d], devel, minimal                 PHP scripting language
php               remi-7.4                 common [d], devel, minimal                 PHP scripting language
php               remi-8.0                 common [d], devel, minimal                 PHP scripting language
php               remi-8.1                 common [d], devel, minimal                 PHP scripting language
php               remi-8.2                 common [d], devel, minimal                 PHP scripting language
sudo dnf module install php:remi-8.2

Laravel10に必要なモジュールをインストールする。公式サイトに記載のサーバ要件はこれで満たせるはず。

sudo dnf install php-pdo

Apacheと同様にFastCGIの起動とサービス登録をしておく。Apacheを再起動する。

sudo systemctl start php-fpm
sudo systemctl enable php-fpm
sudo systemctl restart httpd

サービスが「running」となっていることを確認する。

systemctl list-units --type=service

参考

PHPが有効か確認

httpd.conf を探して、DocumentRootを確認する。

sudo updatedb
locate httpd.conf
sudo cat /etc/httpd/conf/httpd.conf |grep DocumentRoot

PHP情報確認用ページ(/var/www/html/info.php)を作成する。

<?php
  phpinfo();

Windows側から「http://localhost/info.php 」にアクセスして、PHPが有効なことを確認する。

参考

sqlite3のインストール

Sqliteを使いたいので、インストールしておく。

sudo dnf install sqlite
sqlite3 -version # 3.26.0 2018-12-01 12:34:55 ... 

Composerのインストール

公式サイトの案内どおり。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
composer -v # Composer version 2.5.8 2023-06-09 17:13:21

参考

Laravelプロジェクト作成

composer で、Laravel プロジェクトを作成する。内部的には、git clone をしている模様。

composer create-project laravel/laravel sample-app
cd sample-app
php artisan -V # Laravel Framework 10.20.0

個別環境設定ファイル(.env)で、DBにsqliteを使うように変更。

+DB_CONNECTION=sqlite
-DB_CONNECTION=mysql
-DB_HOST=127.0.0.1
-DB_PORT=3306
-DB_DATABASE=laravel
-DB_USERNAME=root
-DB_PASSWORD=

migrateを実行すると、sqliteデータベースを作成するか聞かれるので、YESする。

php artisan migrate
php artisan serve

Windows側から「http://localhost:8000 」にアクセスして、サンプルプロジェクトが表示されることを確認する。

参考

node.js のインストール

アセットのコンパイルに必要なのでインストールしておく。npmもインストールされる。

dnf module list nodejs
Last metadata expiration check: 11:29:36 ago on Sun Aug 27 10:30:09 2023.
AlmaLinux 8 - AppStream
Name           Stream         Profiles                                      Summary
nodejs         10 [d]         common [d], development, minimal, s2i         Javascript runtime
nodejs         12             common [d], development, minimal, s2i         Javascript runtime
nodejs         14             common [d], development, minimal, s2i         Javascript runtime
nodejs         16             common [d], development, minimal, s2i         Javascript runtime
nodejs         18             common [d], development, minimal, s2i         Javascript runtime

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
sudo dnf module install nodejs:18/common
node -v # v18.16.1
npm -v # 9.5.1
npm install -g npm

上記のあと、プロジェクトのルートフォルダ(package.jsonがある)でnpm install することで、node.jsからのデバッグ実行npm run dev(ただし、これはフロントエンドのデバッグ実行)とアセットのコンパイルnpm run buildが可能になっている。

cd sample-app
npm install

参考

各出版社の電子書籍販売状況

Kindle の技術書でテキスト検索しようとしたら、固定レイアウトで検索できないことに気づいて、「テキスト検索できない技術書の電子書籍って、意味なくない?1」という疑問をもち、同様の意見がないかWeb検索してみると、「固定レイアウトだとできることが限られるので、購入時には注意が必要」とか「IT技術者向けに電子書籍PDFとiPadの組み合わせが最強」といった、穏当な意見が多いようだ。「固定レイアウトKindle」憂慮派の意見は下記を参照。全面的に同意である。また、固定レイアウトのePubもまったく同じ問題を抱えている。

note.com

よって、今後は「固定レイアウトのKindle」ではなく、出版社から「PDF」か「固定レイアウトでないePub」を買おう、ということで、IT系の技術書の出版社の電子書籍の販売状況について整理した。各サイトから1冊買ってみたが、書籍や時期によってサービスの状況が異なる可能性があるので、その点はご留意願いたい。あと、買った後は、GoogleDriveにアップロードして端末間で共有し、iPad及びiPhoneの「ブック」から開くのが簡便だと思う。手書きの書き込み環境を整えやすいため PDFが人気のようだが、自分は iPhone でも読みやすい ePub の方が好み。

各出版社の電子書籍販売状況

オライリー

項目 内容
サイト https://www.oreilly.co.jp/ebook/
ファイル形式 PDF,EPUB(書籍による)
DRM フリー
"O'Reilly Japanの書籍がすべてDRM Free、可搬性と検索性に優れたEbookでご活用いただけます。"
支払い方法 PayPal
登録情報 PayPalアカウントがあれば、メールアドレスのみ
提携先 紙書籍の販売はオーム社に委託。
関連情報 米国のオライリーDRMフリーの電子書籍の自社販売を終了している。Amazon、B&N、(DRMフリー)Google Books 等で提供?2

技術評論社

項目 内容
サイト https://gihyo.jp/dp
ファイル形式 PDF,EPUB(書籍による)
DRM ソーシャルDRM
"Gihyo Digital Publishingで購入された電子コンテンツには,いわゆるDRMと呼ばれている利用や複製を制限するような機構は入っていませんが,購入されたユーザ様を識別できるようなユニークIDとメールアドレス等の個人情報を付加しております。"
支払い方法 PayPal、クレジットカード、銀行振込
PayPal以外の支払い方法でも、PayPalアカウントが必要
登録情報 PayPalアカウントがあれば、メールアドレスのみ
提携先 Amazon Kindle, 楽天kobo, honto, ヨドバシ・ドット・コム, BookLive!, DMM電子書籍, Google Play ブックス

マイナビ(旧「毎日コミュニケーションズ」)

マイナビ出版の雑誌・書籍の紹介サイトの「マイナビBOOKS」とマイナビ出版が運営するITを学ぶ方に向けた電子書籍ストアである「Tech Book Zone Manatee」がある。

項目 内容
マイナビBOOKS https://book.mynavi.jp/ec/
Manatee https://book.mynavi.jp/manatee/
ファイル形式 PDF,リフロー型EPUB,固定型EPUB(書籍による)
DRM ソーシャルDRM
"当ストアで販売される電子書籍はソーシャルDRMという著作権管理方式を採用しており、購入者の個人的な利用目的以外での電子書籍の複製を禁じております。ご購入された電子書籍には、購入者情報および暗号化したコードが埋め込まれております。"
支払い方法 クレジットカード(VISA、MasterCard、JCB、American Express、Diners Club)、Pay-easyを利用した銀行・ネット銀行振り込み、コンビ二決済、代金引換
登録情報 氏名、住所、電話番号、メールアドレス が必須

翔泳社

項目 内容
サイト https://www.seshop.com/
ファイル形式 PDF
DRM ソーシャルDRM
"不正利用防止のためPDFには購入者のメールアドレスが埋め込まれます。"
支払い方法 クレジットカード、代金引換、銀行振込(※商品代金(税込)と送料(税込)の合計が15,000円以上の場合のみ)、Amazon Pay
登録情報 メールアドレスのみ
提携先 Kindle, 楽天Kobo, honto, ヨドバシ, BookLive!, Google

インプレス

項目 内容
サイト https://book.impress.co.jp/
ファイル形式 PDF,EPUB(書籍による)
DRM ソーシャルDRM等
"当サイトでは、著作権保護のため、ソーシャルDRMを採用しているタイトルがございます。採用しているタイトルには、最終ページにCLUB Impressの会員メールアドレスが記載されております。"
支払い方法 クレジットカード、コンビニ振込、郵便振替
登録情報 会員ID、氏名、誕生年月、メールアドレス が必須
提携先 Amazon.co.jp, 楽天, セブンネット, ヨドバシ.com, HonyaClub.com, honto, e-hon

達人出版会

項目 内容
サイト https://tatsu-zine.com/
ファイル形式 PDF,EPUB,EPUB固定(書籍による)
DRM ソーシャルDRM
"技術書籍においては、読者の方の利便性を最重要視することが著者や出版社にとってもメリットになると考え、 機械的な閲覧制限のしくみは導入しておりません。 その代わりに、PDFには各ページの下部に購入者のメールアドレスが、またEPUBには書名のメタデータ部分に 購入者のメールアドレスが署名として記載されています。"
支払い方法 PayPal
登録情報 PayPalアカウントがあれば、メールアドレスのみ

CQ出版

CQ出版WebShop(https://shop.cqpub.co.jp/)の登録システムと,電子書籍ダウンロード販売(およびCQ connect)の登録システムは別々のシステムとなっています.とのことなので、注意。

項目 内容
サイト https://cc.cqpub.co.jp/lib/
ファイル形式 PDF
DRM ソーシャルDRM
"2017年1月23日より,PDFファイルへの電子透かしを導入いたしました.ダウンロードされるPDFファイルに対し,購入していただいたお客様の情報を埋め込みます."
支払い方法 クレジット・カード(VISA,MasterCard,JCB,American Express,Diners Club)のみ
登録情報 氏名、生年月日、メールアドレス、担当業務職種、担当業務アプリケーション が必須

SBクリエイティブ

項目 内容
サイト https://www.sbcr.jp/
提携先 Amazon Kindle, 楽天kobo, BookLive!, BOOK☆WARKER, honto

オーム社

項目 内容
サイト https://www.ohmsha.co.jp/
提携先 https://www.ohmsha.co.jp/information/ebook_support.htm

日経BP

項目 内容
サイト https://bookplus.nikkei.com/
提携先 Amazon Kindle, 楽天kobo, honto, 紀伊国屋

カットシステム

項目 内容
サイト https://cutt.co.jp/book/e-books.html
提携先 シナノ、達人出版会

C&R研究所

項目 内容
サイト https://www.c-r.com/
提携先 Amazon、Manatee

各出版社のPDFのセキュリティ設定の例

各社1ファイルでの確認結果であり、他のファイルが同様の設定であるかは分かりませんでのご留意ください。

文書に関する制限 オライリー 技術評論社 マイナビ 翔泳社 インプレス 達人出版会 CQ出版
印刷 × ×
文書アセンブリ × × × × × × ×
内容のコピー × × ×
アクセシビリティのための内容の抽出 ×
ページの抽出 × × × × × × ×
注釈 ×
フォームフィールドの入力 ×
署名 ×
テンプレートページの設定 ×

○:許可、×:許可しない

電子書籍ストアはどこを使うか?

下記サイトを参照ください。いろいろな切り口でまとまっていて、比較しやすいです。

www.omaeha-warauna.com

自分は基本的に一般書は「Kindle」(固定レイアウトの技術書を除く)、コミックは「eBookJapan」と使い分けています。

参考

更新履歴

  • 2023-08-11:各出版社のソーシャルDRMの説明、決済方法へのリンクを追加。CQ出版を追加。