なんだこれは

はてなダイアリーから移転しました。

Lisper が Python を始めることにした その1

Lisper が Python を始めることにした

経緯

みなさま 2018年も bash 書いてますか? awk 書いてますか? S式は書いてますか?

業務で1000行を越えるシェルスクリプトがあり、メンテとレビューまじ辛いという話が共有されて、移植が検討されました。

ちなみにGoogleBash のコーディング規約では 100 行以下にしましょうとありますね。ひと桁違うって何ですかね。コーディング規約ガン無視止めて。

移植先の言語はCommon Lispか、Schemeでいいですよねと一応提案しましたが、なぜか python3 になりました。なぜなのか Python3 わかる奴がレビューしろよ

ちなみに、bash スクリプトでももうすこし書き方に気をつければ、半分くらいにはできるはずですといいながら改善案を出しましたら、

  1. awkキモイ
  2. evalでの疑似構造体キモい
  3. 連想配列での疑似構造体キモい

fu7mu4さんしかメンテできなくなりますよね、とありがたい御言葉を吐かれたのは秘密です。

環境整備

全く無知な状態から、python3の環境を整備することになった。 基本的に、macOSLinuxWindowsで使用することになりそう。

とりあえずの環境

とりあえずの環境

  1. Pycharm Commnunity Edition
    1. 日本語
  2. python 3 以上
    1. virtualenvなどを使う
    2. pip などで環境を整備する

学習ソース

学習ソースとしてはこんなものだろうか?

  1. お気楽 Python3 プログラミング超入門
  2. Python チュートリアル公式
  3. Exercism io

おまけ

PyCharm の日本語化は、JetBrains 製品の日本語化マニュアルを参照して行なった。

SPDXファイルをLibreOfficeで編集したい

前書き

商業的な開発であっても、オープンソースソフトウェアを利用することが多いです。受領したシステムに含まれるオープンソースなどの構成一覧(Bill of Materials)はどのような形式を用いているのがよいのでしょうか。デファクトスタンダードの形式としてSPDX形式がありますが、日本ではWordやExcelを使って情報交換することが多いように思えます。この記事ではデファクトスタンダードのSPDX形式を適切に使用する方法を学びましょう。

環境

この文章を書いた環境は、macOS Mojave ですが、使用するツールはJava製で JRE (1.8以降) があれば動作します。 またLibreOffice などの Excelファイルが編集できればよいでしょう。

SPDXとは

SPDX(Software Package Data Exchang)とは、ソフトウェアの構成一覧(BoM)の交換についてのオープンスタンダードなLinux Foundation傘下の団体です。またこの団体はSPDXライセンス一覧やSPDX形式というファイル形式を定めています。

SPDXファイルの取得

多くのオープンソースソフトウェアを検出するツールはSPDX形式に対応しています。

Fossology は 標準で対応しています。 SPDX形式の出力方法は例えば を参照してください。

Black Duck Hub は Black Duck SPDX Report Utility を使用すると取得できるそうです。

SPDX ファイルの種類

SPDXツールを使用するとSPDXファイルを互いに変換できます。 例えば、OSS検出ツールでRDF形式のSPDXファイルを生成し、それをSpreadSheet形式に変換して、LibreOfficeExcelで編集して、RDF形式に戻すといった操作ができます。 SPDXファイルにはバージョンがありますがこの記事は現行はv2.系とします。

形式名 ファイル形式の概要 用途(主観)
RDF いわゆる XML ツール用
TagValue Tag-Value形式 ツール用
SpreadSheet Microsoft XLS 形式 人間向け

SPDXツールでの変換

ここでは RDF形式のSPDXファイルを SpreadSheet形式に変換します。

インストール

SPDX ツールは Java で作成されています。実行には1.8以降のJREが必要です。 また、spdxのtoolのリリースページからダウンロードできます。

最新版のSourceをダウンロードしてmavenを使うとビルドできます。 ビルドをしたくない場合は、Version 2.1.12 の spdx-tools-2.1.12-jar-with-dependencies.jar をダウンロードしましょう。

RDFからSpreadsheet形式へ変換

ターミナル等で以下のようにコマンドを実行します。各項目については表を参照してください。

java -jar spdx-tools-2.1.12-jar-with-dependencies.jar RdfToSpreadsheet   SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.rdf SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.xls
コマンドの各項目 説明
java javaコマンド
-jar jarオプション
spdx-tools-2.1.12-jar-with-dependencies.jar SPDXツールのJarファイル
RdfToSpreadsheet 変換コマンド名
SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.rdf 変換前のファイル名
SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.xls 出力ファイル名

TAG-VALUE形式の場合

変換コマンドを RdfToSpreadsheet から TagToSpreadsheet に変えて実行します。

Excelファイルを開く

SPDXツールで変換できた Excelファイルを LibreOfficeやMS Excelなどの対応するソフトで開いてください。 重要なシートの情報をまとめました。

なお、Per File Infoには各ファイルのチェックサムが記載されています。

シート名 シートの主な情報
Document Info SPDXのバージョンなど
Package Info スキャンした対象の名前、チェックサム、チェックツール名など
Extracted License Info 検出されたオープンソースライセンス名など
Per File Info スキャンしたファイル毎のライセンス情報
Snippet ファイルの一部にオープンソースソフトウェアが含まれている場合の情報
Reviewers レビュー者の情報

SpreadSheet形式からRDF形式へ変換

Excelファイルを編集が終りましたら、Spreadsheet形式からRDF形式に戻しましょう。

ターミナル等で以下のようにコマンドを実行します。各項目については表を参照してください。

java -jar spdx-tools-2.1.12-jar-with-dependencies.jar SpreadsheetToRdf   SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.xls SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.rdf
コマンドの各項目 説明
java javaコマンド
-jar jarオプション
spdx-tools-2.1.12-jar-with-dependencies.jar SPDXツールのJarファイル
SpreadsheetToRdf 変換コマンド名
SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.xls 変換前のファイル名
SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.rdf 出力ファイル名

Clozure CL をビルドした

Clozure CL をビルドした

TL;DR

macOS Mojave で Clozure CLが起動しなくなっていたので、githubのissueどおりにビルドすればうまくいった。

https://github.com/Clozure/ccl/issues/150

概要

clozure cl の 1.12dev1のTarボールと 現行のソースコードをダウンロードし、 Lisp Kernelをビルドし、そのビルドしたイメージでLisp Kernelをビルドした。 それから Clozure CL64.app もついででビルドした。

手順

git clone https://github.com/Clozure/ccl.git
curl -L -O https://github.com/Clozure/ccl/releases/download/v1.12-dev.1/darwinx86.tar.gz
cd ccl
tar xvf ../darwinx86.tar.gz
cd lisp-kernel/darwinx8664/
make clean
make

Clozure CL Lisp KernelをBuildする

cd ../..
./dx86cl64

以下はcclのrepl内の操作

(ccl:rebuild-ccl :full t) ; ビルド
(quit) ; 終了

Lisp Kernelをビルドしたイメージで Lisp Kernelがリビルドできるか確認する

./dx86cl64

以下はcclのrepl内の操作

(ccl:rebuild-ccl :full t)

ここで終了(quit)してもよいが Clozure Cl.app が必要な場合そのまま replを抜けずに次も行う。

(require 'cocoa-application)
(quit)

これで Clozure CL64.app が作成できたので、起動して確認した。 あとは、アイコンを差し替えて /Applications に移動すれば完璧なんじゃないかな。

Emacsが正常に起動しなくなった

Emacs が正常に起動しなくなった

macOSを更新するとEmacsが起動しなくなった。調べると、ある種類のAPIがダメになったらしい。

homebrewなら最新ソースから落してくればOKらしい。 macportならどうするか emacs-app をアンインストールして emacs-app-devel をインストールすればいいらしい。

してみたらemacs 27になってた。

OpenChain Japan Working Group 6th Meeting

OpenChain Japan WG に参加した。

場所: Toshiba 日時: 10-31-2018 ルール: 独占禁止法遵守

  1. 最新動向

    • OpenChain ProjectはISOのような標準化を目指している
    • 全世界(特にアジア)で共通のルールが必要
    • Toshiba がOpenChain に参加
    • Suse が認証した
    • Japan Workin Group は
      • 最大のグループ
      • 会社の情報を公開するなどの貢献
      • これからも成果物を提出して貢献する
  2. 東芝の取り組み

    • Toshiba がOpenChain Project の Platina Member になった
    • OpenChain Specification/Curriculum/Conformance
    • OpenChain を効果的に使いたい
      • ユースケース で社内に宣伝布教
      • OSS をただしく使用できるんか?
        • 最終的には個人の知識に頼っている
        • Conformanceは見た目
      • 信頼関係の構築の手段にしたい
      • OpenChainの名前を使って信頼を構築する
  3. Japan WG のおさらい

    • 新しく参加された方への説明
    • OpenChain Project の目的
    • 仕様、適合、カリキュラム
    • プラチナ会員(有料)
    • コミュニティ会員(無料)
    • 体制
    • OpenChain Japan WG
    • 情報
  4. サブワーキンググループの活動報告 4.1 Planning Sub WG

    • 方針議論 ビジネスフローを洗いだして資料を作成する。
    • ビジネスフロー事例
      • 立場によって見方や粒度が異なる
      • github 上にコミット/issueにお願いします。
      • B2B が弱い?
    • ビジネスフローモデル作成
      • ビジネスフローから、役割を特定
      • 今後役割の説明を一覧表にする
      • OSSコミュニティへの還元は ToDoグループ がメインで作業している

4.2 上流への説明資料作成

- 上流への営業に狙いを定めたリーフレットの作成
- 法務とエグゼクティブへの伝達が難しい
- 営業から情報を渡していただく

4.3 FAQ

- 富士通のFAQ を更新する
- 2ヶ月に1度更新して公開
- CC0-1.0
- カテゴリ分けや検索を検討
- 初心者向け、全体向け
- あいまいなものは載せられない
- slack で連絡している
  - slack の勉強にも、ライセンスの勉強にもよい
  1. 休憩

  2. 事例紹介

    • 事前許可と事後報告書を提出していただくスキームの例
    • 書式は OpenChain Project に寄贈
    • 基本的にソフトウェアベンダーは100%回答がいただける
    • 一部のハードウェアベンダーから拒否される
    • 最初に契約をした方がいいか、それで縛れるか
    • ハードウェアであれば関係ないと言い張る場合に切り崩すにはどうするか
  3. 今後の活動の議論

    • ライセンス情報授受ガイドラインが必要か?

      • 企業間の情報フォーマットなどのI/Fにガイドラインがあればいい?
        • SPDX で足りる足りない
        • SPDX わかるわからない
        • Fossologyの使い方の啓蒙
    • 役割毎の教育資料のサブグループが必要か?

  4. ELC OpenChain Workshop

    • FOSSOLOGY と SPDX
      • YoctoでSPDXを収集するためにFOSSOLOGY を使う方法の改善
      • フィードバック
        • SPDX は有用である
        • SPDX は理解を深めさせたい
    • リーフレット
  5. Other

    • KOF 2018 で OpenChain Project と Fossology の発表をしてみると宣言した。
    • 次回の

cppcheck 1.85の日本語マニュアル

cppcheck の日本語マニュアル

cppcheck のリポジトリ https://github.com/danmar/cppcheck の 日本語マニュアルの翻訳を更新しました。

こちらから入手できます。 https://github.com/danmar/cppcheck/blob/master/man/manual-ja.docbook docbook 形式のため、xsltproc を用いて html 形式に変換することができます。

pdfに変換したものをGoogle Drive で提供します。 このファイルはcppcheck の一部なのでGPL-3.0 になります。 (cppcheck_1.85.pdf)https://drive.google.com/file/d/1OpsFyoOAAOgO-biP2I_J3x6hIKIjgw7c/view?usp=sharing

cppcheck gui is updated !

cppcheck の gui の翻訳を更新した。 cppcheck 1.85 がリリースされたので、それに合せて翻訳している。 つまり、今リリースされている 1.85のGUIの日本語は、1.84相当になる。

https://github.com/danmar/cppcheck/pull/1435

そろそろcppchek のマニュアルを作成する方法をcpppcheckに入れた方がいいかもしれないなぁ。