音声書き起こし
1. オープニング
@potato4d
こんにちは、uitの玉田です。今回も、uitinsideを始めたいと思いま uitインサイドは、ユーザーインターフェイスと、テクノロジーを愛する開発者のためのポットキャストです。はい、 では、今回はですねはタさんお呼びしまして、ライセンスチェッカーについてのお話ということで、はい、
@potato4d
今回はさせていただこうかなと思います、よろしくお願いしますよろしくお願いします。 ではですねま、ライセンスチェッカーま、なんか、名前から想像はできそうな気はするんですけど。でも、ライセンスチェッカー。 じゃあ、どういうものかは教えてもらいますかね。
2. lisense-checkerについて
@spring_raining
はい、ライセンスチェッカーですね正しい名前は、npmライセンスチェッカーっていう名前になっていて、エテセンスチェッカーってのは、パッケージ名 なんですけど、おー、ノードジェースのですね、パッケージてか、依存関係ですね。ノードモジュースに入ってる依存関係の中身を再帰的に掘り出して、それぞれのライセンスみたいなのを網羅してくれたり、なんか、それを特定のフォーマットに合わせて、出力してくくれたりする ようなcliツールになってます。ライブラリーとして、はりとしても利用できるんですけど、まあ、メインの使い方はcliとしての使いとか
@spring_raining
でが紹介されていて、結構こう。事故は、柔軟な出力やオプションがあってですね。ossのライセンスを管理するツールってのも、他もいくつかあるえようなんですけれども、かなりこうえ。 ロードジースの管理としては、かなりこうメジャーなものになるのかなと思います。
@potato4d
なるほど、なるほど、ありがとうございます。今回、これを使う目的が結構色々あるかなと思うんですけど、今回、ネイティブアプリを開発を行っていて、っていう
@spring_raining
そうなんですよ、なんか、あの、結構ossのライセンスの管理っていくつか、モチベーションあるかなと思っていて、 今使っているそのプロジェクトで使っているパッケージのこう、ライセンスをちゃんと網羅しておきたいみたいな モチベーションであったりだとか。ま、例えば、こうなんか全体として、ちゃんとそのあたりのガバランスちゃんとしよっていうので、管理するようになったみたいなんが色々あるかなと思うんですけど、
@spring_raining
今回か私のプロジェクトラインス決まりんっていうプロジェクトなんですけど、の都合で言うとですね。新たにこ、ネイティブアプリを開発することになってですね、 それが、これまではウェブアップとして提供していたものを、まあ、ウェブアプリケーションと合わせてですね。新たにあのキャパしタ。えっと、コルドワみたいなやつですね。あの、ウェブの技術は で、アプリ動かすみたいなやつなんですけど、それを使ってこう開発することになって、8割ぐらい。既存のウェブ、あ、ウェブアップとソースコード共有するような
@spring_raining
形で開発するようになったんですよね。で、そうなるとですね、結構、既存のコードもノードjsの資産を使っているし、新たに上から書いているための基盤みたいなのも、ノードjsスの資産使ってるみたいな形になって、え、全体的に依存関係がノードjsに集中しているような状態と 待ってました。で、ウェブアップとかだったらですね、このライセンスを表示するみたいなのがですね、ソースコード内に埋め込んでおいて、さえいれば、 結果的にエンドユーザーが見ようと思えば、ライセンスは見られるよね。っていう風なエクスキューズによってこう、アプリケーション内で、ライセンスをあえて表記する必要ってないのかなと思うんですけど、
@spring_raining
アプリになるとですね。そのあたりがユーザーの見えない領域で、なんかjsが動くことになってしまうんで、ま、どこかしらアプリ内に専用のページなりま、専用のダイヤログダーりを利用して、表示することが求められるかなと 思います。で、ま、そこでちゃんと表示したいよねていうところで、ま、そのパッケージ名と、そのライセンスライセンス、上部みたいなものが次になっているデータが取りたいっていう風な話になって、今回使おうと思ったっていうところになります。
@spring_raining
なんか、他にもこういうのができるツールはあるみたいなんですけど、ま、そもそも依存関係がノードjsに集中しているんで、ま、その中で完結するツールで解決したいですしま手元で動かしたりするのは、もちろん、 ciとかを考えた時とか。でも、できれば、ロジースのイメージの範囲で動いてくれるといいんじゃないかなと思って。今回、ライセンチッカーを使おうこと思った感じになってます。
@potato4d
なるほど、ありがとうございます、 そうですよね、webアプリだと、バンドルしても、コメントがライセンスのコメントを残すみたいな設定とかもあったりして、基本的にそのバンドルしたjsに ライセンスを埋め込む、もしくは、ライセンスだけ抜き出した形で、あのファイルを置いとくみたいな
@potato4d
感じかなとは思うんですけど。ネイティブアプリ、キャパス下での開発もそれはそれで気になるんです。
@spring_raining
そうですね、そうですね、まあ、なんかそれをどっかで話したいなとは思いつつも、 今回はなんかライセンスチェッカーが割とあーこい結構便利だなと思ったんで、ちょっと紹介したねと思った感じですね。 なんか、意外と普段開発してると、えっと、むしろこう普通すぎて忘れがちなんですけど、なんか、ウェブってそういったバンドのしたjssのコメントに追記するみたいなんで、ちゃんとライセンスを
@spring_raining
を守っていたりするってのもあるんで、なんか、ネイティブってなると、この辺り意識することもまた増えてくるんだなとは思ったりってのはちょっと余談ですけど、学びでしたね。
@potato4d
確かにウェブ結構あの、あんまり気にしてないけど、実はそうなってるっていうところですよね。うん、ネイティブアプリ 全然余談なんですけど、私結構そういうの見るの好きなんですよね。アプリとか、あのゲームとかで、最初にそのライセンス表記を。
@spring_raining
はいはいはいはい、あー、確かになんかそのページとしてあるのはいいかもしれないですし、なんかあれですよね。おっきな会社とかが、 依存の先に、なんか個人単位で開発してるやつとかあったら、結構あれじゃないですか。もうよくゲームとかだと、ゲームとか、アプリとかだと、なんかこのライブラリ私が作りました。みたいな、twitterで行ってる人とかもいますし、なんか、そういう楽しみにもなりそうですよね。表記するページがあったら、
@potato4d
なのウェブとかでもあってもいいかもしれない。完全に余談ですけれどもですよね。ま、でも、そういうのにも 使えるlpm、ライセンスカ、結構柔軟という感じですよね。うんうん、うんうん
@spring_raining
ですね、かなり柔軟ですね結構なんか使ってみて良さとかも気づいたんで、その辺りも話していってもいいです。か ま、ちょっとできることみたいな感じになるかなと思うんですけど、 えっと、結構ですね。ららい、ライセンスチェックはできることが多くてですね。まいくつか比較した上で、最終的にライセンスチェック使うことにしたんですけど、なんだかんだ
3. lisense-checker でできること
@spring_raining
1番npmでのダウンロード数が多いツールだけあるなっていうのがあって、なんか魅力がいくつかあって、ライスチェッカー本体の話で言うとですね。 ま、まずできることが基本として、そのプロジェクトの依存パッケージと、そのライセンス洗い出せるみたいなのがあるんですけど、 ノートジモンシスの中身まで見て、パッケージゼソに書かれてるものからま、その依存の依存までこう、再帰的に深掘りしてくれる感じで使用してるossのライセンス洗い出してくれるんですけど、
@spring_raining
あの、結構魅力的だなと思ったのは、この洗い出しがこういうロジックで洗い出してますよ。みたいなのが、ちゃんとリードビーに書いてあって、なんかまずこのファイルを見に行きますま、まず、このファイルを見に行きま ますみたいなのが書いてあって、そのどんな仕組みで動いてるかが一目で分かるってのがすごいいいなと思ってます。 で、え、それがなんかどういう対面でいいかなって言ってですね。なんか、他のツールとかで明記されてないものがあると、なんかわからないけど、このツール使ったんで、洗い出せました。って言っても、あんまりてく力ないかなと思っていて、
@spring_raining
使う側自身がま、どういう風に洗い出されて、どういう風に出力されてるかみたいなのロジックの説明が可能になってるんで、アンコントローラブルなところで、プライセンスの管理が行われてない、ブラックボックスじゃないってのが結構いいのかなと 思ってます。特になんか表記するからには、ちゃんとがバランスちゃんとしたいよねってのがあるかなと思うんで、ま、こういったとこが 結構まず、この基本機能の点でいいところかなと思いましたね。洗い出した後の出力の仕方ってのも、魅力が2つあるかなと思っていて、1つ目はプロダクションに限定したウィザの出力がちゃんとできるっていうところがいいかなと思ってます。
@spring_raining
で、結構あれですね。デブサーバーに関わるところとか、フロントエンドの開発ってこう、プロダクションのコードに入ってこないツールっていっぱいあるかなと思っていて、アイスチェッカーであれば、ですね。ちゃんと、その ノードチェイスの流儀に沿ってですね。レップスとデブデップス、両方デフォルトウェア見てくれるし、設定に
@spring_raining
コマンドラインツールのオープションで、プロダクションっていうのつけたら、プロダクションだけになるみたいな形で、なんかデップスロイとかデブデップスロミみたいな出力が可能になってて、そのプロダクションに公開するときに、やらないといけない。ライセンスの一覧みたいなのを出力してくれるのは、なんかすごい魅力的だなと 思いました。で、この出力のやり方っていうのもですね、かなり気が利いててですね。シールiツールでありながら、結構こう機能が盛られていて、ですね。今回、そのえ
@spring_raining
出力の部分でこう役に立ったのが、特にフォーマットの部分でデフォルトだとなんでしょう。npm進出した後に、npmのcliが表示してくれるみたいなのツリー上になってるような、cliっぽい画面になったりするんですけど、それを があのスタンダードアウト標準スルクに出るんですけど、それだけじゃなくて、ですね。その出力のフォーマット形式をcsvとかジェイソンに変えられるってのが、結構魅力的かなと思いました。 今回ですね、あの、特に表示する用のページが必要っていうところからこう後からタイプスクリプトから取り回したいっていうモチベーションがあったんですよね。
@spring_raining
で、そうなった時に、こうcsvとかなんかcliっぽい出力だと、まあ、なかなかjsから触りづらいっていう部分があったんで、今回ジェイソンで取得できることによって、そのままそれを必要なパラメーターに絞るみたいな作業はあるんですけど、 こうすぐにtsから使える形になったのは、こうミルク的だったかなと。 もう1つ最後に優秀だなと思ったのは、ライブラリーとしてもかなりこう優秀だなと思っていて、
@spring_raining
結局我々このcliツールって言いながら、最終的にはライブラリーとして、あのノードjsからリクアイヤして、スクリプト経営で利用することに したんですけど、この理由がですね。ま、ちょっと後でデータの整形を使いたいとか、あと、ライセンスジョーブルの本体を取得したい みたいなモチベーションがあって、最終的にはnojss側から使うことにしたんですけど、ライブラリとして使う時にですね。ま、結構それ用の学習が必要みたいなとありがちかな
@spring_raining
思うんですけど。 ライセンスチッカーの場合、cliと同じオプションをブジェクトで指定するだけで、ほぼ同じような出力が期待できるっていう風なところで、こかなり使いやすいかなと思っています。 ライセンスチェッカーの特徴として、ライセンスのファイルのあるパスみたいなのまでは出力してくれるんですけど、その先の条文まで
@spring_raining
こう表示すると、ライセンスチッカーの範囲を超えているみたいなのがあって、こうパスまでで終わってるんですけど、なんか我々の場合、ライブラリーとしりおとして利用して、まず ライセンスチェッカーで諸々。あ、洗い出した結果を出力して、 そこからライセンスのパスっていうのを見に行ってま。全部fsの方でテキストとして読み出して、その内容まで含めてジェイソンとして出力するみたいな形で使ったんですけど、かなりこれも
@spring_raining
10行20行ぐらいで、えー、終わるようなコードになっていて、こう使いやすかったなと思ってますね。 なんで、掃除でcliツールとしても優秀ですし、その機能をフルパワーでライブラリーとしても使えるんで、かなりこう使いやすいツールだな、という印象が
@potato4d
ありました。ありがとうございます、あれですよね、あのー、cliとして備えていてほしい機能を を全て備えてるっていう感じでいい感じですね。cliツールって、結局なんかなんだかんだライブラルーとして 使えてほしいっていうところとかもよく
@spring_raining
あ、そうですね、かなり使いやすいツだなとはほんと思いましたね。
@potato4d
あと、リードミー読んでるんですけども、単にパッケージ、ジェイソンのライゼセンスの項目を読んでるのかと思いきはそうではないんですね。なんか、色々と ファイルを探してるライセンスの綴りとかも、綴りの2つ、sとcがあるみたいな。あれとかも 見るんです、すごい気が効いてますね
@spring_raining
わ、わかれば大体シエイツル見に行くと、やりがちなのが、リードミーのあのプログラムからの利用みたいなところって、 あの、たまにあると思うんですけど、あそこがまずないか、見に行くことからってやること多いと思うんですけど、なんかこ今回はまさにそんな感じで見に行ったら、もうほぼオプションそのまま使えるよみたいな感じでえ、行ってくれて、かなり便利 でしたね。あ、ただちょっとオフし、ムラックはあれですね。なんか、ライセンスチェッカー自体が古いパッケージなのか知らないんですけど、プロミシファイをかまさないと、コールバックで帰ってき、
@spring_raining
古きゆきnpmツール感がありましたね。なんか、しばらくあんまりこう更新もないみたいで、npmのライスチェック、チェッカー自体は多分触ることがあんまりないかなと思うんですけど、 なんでなんか便利なツールではあるんですけど、ま、結構もう枯れたツルになってるなって感じはしまし。
5. 今後やりたいこと
@potato4d
まあ、あとはあれですね。デブすデップスとデブデップスで分けて出力みたいなのも、それも欲しいところで。
@spring_raining
いや、そうなんですよ、そこが結構なんかいいよなと思って。こういうの使っておいて、漏れました。ってなったら、なんか使ってないよりはわからないじゃないですか、なんか、何がミスっているのかって、 なんでここかなり気が利いているし、わからなかったら、ちゃんとわかりませんでした。ってこう、アンローンとか表示してくれるのもすごいいいよなと思って、なんか、問題であるところをちゃんと 調べやすいんで、なんかこの辺りもすごいアライダシロジックが公開されていて、かつ気が引いてるっていうのはすごいこう、コントローラブルな感じがしていいなとは思いますね。
@spring_raining
そうですね、結構嬉しいとこですけど、なんかちょっと余談ですけど。 ただ、フロントエンドの開発、みんな、ちゃんとデブレップスとデップス分けきれてるのかな。みたいなのがあって、ちょっとそれはあれなんですよね。結構さっき話した通り、今回はウェブアップの既存コードの こう、共有してるような形になっているんで、依存関係もそこに準ずる形になってるんで、ちょっと見直さないと。もしかしたら、なんか3連ぐらい続いてるリポトリなんで、さすがに
@spring_raining
本当はデブデップスで、物がデプスに混じってるか、ちょっとぐらいありそうだなっていう感じはしてますね。
@potato4d
そうですね、個人的には最近だと、ウィートジェースのエクスターナルズに色々とライブリーを追加していく時とかに、レブレップスじゃなくて、レックスのものだけをエクスターナルズに追加するみたいな 使い方をしてて、 デップスに明示的に追加してる時以外は全部デブデップスに追加するみたいな感じにやってしまって、困ってないんで、それでもいいのかなとは。はい、うん
@spring_raining
ん、なるほど、なるほど、 あー、それいいですね、確かにそれもありな気がしました。今回の隙間にプロジェクトの場合、元々ウェブアップ側がssrしてるみたいな都合があって、結構ランタイムでも、リアクトとかのパッケージが動くみたいな問題で、結構 デップス側に寄せることが多かったんですけど、今回この使ってるののイティブアプリ側の方で使ってるんで、もしかしたらそういう感じで、デブデップスベースにするみたいな、
@spring_raining
こう運用もいいかもしんないっすね、
@potato4d
区別してないプロジェクトが多いですね。
@spring_raining
ですね、
@potato4d
じゃあそうですね、はい、あと、最後に結構活用 すでにされてるかなと思うんですけれども、今後、もしやるとしたら、どういうことがやれるかなってのはあったりしますか。
@spring_raining
そうですね、今後やれるといいことで言うと、途中でも話した通り。ニティブアップとウェブアップって、ライセンスの表現変わってくるかなと思っていて、 そのあんまり意識しない。でも、ソースコード内にコメントとして埋め込んでおくみたいな感じで表現できるウェブアップと こう明示的に表示する場所を作らないといけなかったりするネイティブアップみたいなんで、こう表現方法変わってくるかなと思うんですけど、ウェブアップの場合、表現の方法がいってしまえば、多少雑でも、ちゃんとライセンスのライセンスの条文に沿った
@spring_raining
形にできるかなと思うんですけど、ネイティブアップの場合、少しミススるだけで、ライセンス批判をすることになりかねないかなと思ってるんで、結構最大限 スク管理として、依存関係が更新されるコミットとかがあった時に、ciとかでちゃんとこれ更新されてるんだっけみたいなのチェックとかはしたいなと 思ってます。現子のネイティブアップの場合、アプリとしてのリリースイコールソースコードの更新っていう形になるんで、今のところはそこまで気を使いすぎることはいえないかなと思うんですけど、更新頻度とかが増えてきたり
@spring_raining
だとか。なんか、odaアップデートしたいみたいなモチベーションが出てきたら、なんか、この辺りちゃんとしておかないと、なんか、ライセンス違反みたいな形になりかねないなと思ってるんで、ちゃんとこう試合とかでェクできる体制にしたいなと 思っていますね。
@potato4d
結構じゃあ、そこはやっぱりシビアに考えないといけないっていうのは、ネイティブアプリっぽいところですね。
@spring_raining
うん、そうですね、でも、なんかそういった面でも、ノーズcsのイメージで動いてくれる範囲のcliツールってのは、助かる面はあるなと思いますね。
@potato4d
使い勝手がわかってる方がもちろんそうですよね。
@spring_raining
そうですねん、使い勝てわかってる方がいいですし、ciのドッかーイメージとかを、ノードジェースから変えなくていいみたいなも結構いいよなと思ってますね、 そんなくらいですかね、直近だと、その辺やりたいなと思ってます。
@potato4d
なるほど、ありがとうございますはい、今回はえ、ハンタニさんにライセンスチェッカーについて聞いてきました。 lineのフロンテント組織では、このような技術的なキャッチアップを日々行っております。 uitinside以外にも、毎週の社内勉強会で、フロンテンdの情報交換を行っています。今後もuitインサイドを通して、このような情報ライブに発信していけたらと思いま。
6. クロージング
@potato4d
それでは。はなたりさんありがとうございました、
@spring_raining
ありがとうございました。
4. deps, devDepsの出力について