朝日ネット 技術者ブログ

朝日ネットのエンジニアによるリレーブログ。今、自分が一番気になるテーマで書きます。

Git のサブコマンドに学ぶシェルスクリプトの書き方

はじめに

開発部の tasaki です。

シェルスクリプトはプログラムとプログラムとを繋ぐ存在であり、UNIX や Linux を使う上で最も重要なスクリプト言語であると言えます。 curl, diff, git, rsync, ssh 等の外部コマンドが複数絡むスクリプトや、テキストストリーム処理を多用するスクリプトを書きたい場合はシェルスクリプトとして書くのが最も手軽です。

一方、シェルスクリプトは書き方の自由度が高くコードスタイルについての合意が取りにくい言語であり、移植性の高いものを書くのが難しい言語であります。 大抵の Linux には bash が入っているためそれ向けに書いてしまってもよいのですが、Docker の流行により bash が標準で入っていない Alpine Linux 環境が使われる機会が世間的にも増えているため、少なくともデプロイ先で動くスクリプトは bash に依存しない形で書いておきたいです。

ところで、Git の bisect, filter-branch, stash, submodule, subtree などの一部のサブコマンドはシェルスクリプトとして書かれています。 これはあらゆる環境で安定して動作するシェルスクリプトであると言え、これを参考にすれば移植性の高いシェルスクリプトを書けるのではないでしょうか? 今回は私が Git に含まれるシェルスクリプトを読んで得られた知見を Tips としてまとめていきます。

続きを読む

Bootstrap4エディタのpingendoでpdfのマニュアルをHTML化してみた-後編

watanabeです。前回の記事ではBootstrap4のエディタを用いて、pdfのマニュアルを見た目の印象をあまり変えないようにHTML化しましたが 今回は印刷時のレイアウトを元のマニュアルに近づけるためにどう調整したかを記録します。

また、HTML化してもマニュアルとしての操作性を落とさないようにするためのおすすめTipsも紹介します。

続きを読む

OpenAPI Specification 3.0 チートシート

はじめに

こんにちは。朝日ネットでWebアプリケーションの開発を行っている tommy です。

OpenAPI Specification は RESTful な API を記述するための仕様です1。2015年に Open API Initiative が発足し、それまで Swagger という名前で進められていたプロジェクトを引き継ぎました。 現在では実質上の世界標準といえます。

今回は、この OpenAPI を書いている時に、コピペして使える、逆引きの小さなサンプル集が欲しいと思ったので、書いていこうと思います2


  1. カタカナで オープンAPI というと、日本だと一般に公開されたAPIという意味にもなるので注意。

  2. Swagger 2.0 から OpenAPI 3.0 になったことで仕様がだいぶすっきりした上に、公式のドキュメント がわかりやすいため調べながら書くのもそれほど大変なわけではないです。

続きを読む

脆弱性スキャナ Vuls の紹介と実運用時の工夫

はじめに

開発部の tasaki です。

皆さんはソフトウェアの脆弱性の検知をどのように行っていますか? NVD や JVN、Linux ディストリビューションの公式 Web サイトで脆弱性情報を逐一確認し、現在マシンにインストールされているパッケージと照らし合わせる……、というのは非常に骨の折れる作業です。 更にサーバが複数台あり、ディストリビューションもインストールされているパッケージもまちまち、という状況ではとても人の手でできたものではありません。

このような時に役に立つのがオープンソース (GPLv3) の脆弱性検知ツールである Vuls です 1 。 今回は Vuls の基本的な使い方を紹介し、加えて弊社で実際に運用してみて得た知見について書いていきます。


  1. 商用版の FutureVuls も提供されています。

続きを読む