tag:crieit.net,2005:https://crieit.net/users/mottox2/feed mottox2の投稿 - Crieit Crieitでユーザーmottox2による最近の投稿 2019-03-05T16:17:45+09:00 https://crieit.net/users/mottox2/feed tag:crieit.net,2005:PublicArticle/14639 2018-12-10T01:25:01+09:00 2019-03-05T16:17:45+09:00 https://crieit.net/posts/GitHub-in-2018 自分のGitHubから読み取る挫折の歴史 in 2018 <p>この記事は、「<a href="https://crieit.net/advent-calendars/2018/crieit">Crieitアドベントカレンダー</a>」9日目の記事です。遅刻ごめんなさい。</p> <p>Crieitはプログラマー・クリエイターのためのサイトなので、自分のクリエイターになろうとして失敗した記録をGitHubから引っ張り上げました。</p> <h2 id="2018/1"><a href="#2018%2F1">2018/1</a></h2> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/sketch-naming-lint">sketch-naming-lint</a> (deprecated)</h3> <p><a target="_blank" rel="nofollow noopener" href="https://note.mu/wataame/n/n8a929d010e90">Sketchの命名ルールなどをまとめたGuidelineをつくりました</a>という記事を見て作ろうとしたもの。<br /> sketchは内部でJSON形式でデータを保持しています。npmで配布されている<code>sketch2json</code>を使うことで簡単にJSONデータを取り出せます。<br /> おそらく命名ルールのLinterを作ろうとしたのでしょう。</p> <p>Sketchをチームで使うことがほとんどなかったのでモチベーションが足りず開発が停滞しました。<br /> <a target="_blank" rel="nofollow noopener" href="https://github.com/kvendrik/sketchlint">kvendrik/sketchlint</a>という上位互換なリポジトリを発見してアーカイブしました。</p> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/ghsay">ghsay</a></h3> <p>Google Homeに喋らせるためのCLIです。</p> <pre><code>npx ghsay 喋らせたいこと </code></pre> <p>を実行するとGoogle Homeに喋らせることができます。ただ使い所がデプロイ完了タイミングぐらいしか見つけられずモチベーションが落ちていきました。<br /> あとはGoogle Homeの検知周りを他ライブラリに頼りすぎていてデバッグが面倒になったんだと思います。<br /> </p> <h2 id="2018/3"><a href="#2018%2F3">2018/3</a></h2> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/ease">ease</a></h3> <p><code>/</code>で区切ると自動でカテゴリを振り分けてくれるesa.ioライクなTODOアプリです。<br /> 一番ちゃんと作ったやつだと思います。</p> <p><a target="_blank" rel="nofollow noopener" href="https://ease.netlify.com">https://ease.netlify.com</a></p> <blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">ショートカットキー周りの実装した<a target="_blank" rel="nofollow noopener" href="https://t.co/g6Oqqldy6e">https://t.co/g6Oqqldy6e</a> <a target="_blank" rel="nofollow noopener" href="https://t.co/Coix88mvVh">pic.twitter.com/Coix88mvVh</a></p>— もっと@九州初上陸 (@mottox2) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/mottox2/status/981181624971751429?ref_src=twsrc%5Etfw">April 3, 2018</a></blockquote> <p>TypeScript + ReactなTODOアプリです。当時PWA Desktopの話が飛び出していてなにか作りたいと思い、TypeScriptの練習がてら作りました。<br /> データはIndexedDB、Desktopに特化するためのキーボードショートカットなどにも対応した本格的なアプリです。<br /> しばらくは使っていたのですが、データ同期機能がないと本格的な使用には絶えず開発が停止されました。<br /> FirebaseをDBにして作り直してもいい気がします。</p> <p><strong>Netlifyと出会ったのもこのアプリケーション開発がきっかけです。</strong> これがなかったらNetlify芸人になってなかったと思うとやってよかったという気持ちになれます。</p> <h2 id="2018/4"><a href="#2018%2F4">2018/4</a></h2> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/mini-scrape">mini-scrape</a></h3> <p>JSでスクレイピングするときにいい感じのインターフェースでスクレイピングのコードを書きたいと思って作りました。<br /> メンテはあまりしてないけど、<strong>たまに使ってます。</strong> 結構便利です。</p> <p>使用例はこちら。</p> <pre><code class="js">import scrape from 'mini-scrape' const url = 'https://github.com/mottox2/mini-scrape' scrape(url).then(window => { console.log('title: ', window.document.title) console.log('h1: ', window.document.querySelector('h1').textContent.replace(/\n/g, '')) }) </code></pre> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/gatsby-source-esa">gatsby-source-esa</a></h3> <p>Roppongijs #2用に作ったGatsbyプラグインです。確かイベント前日にLT枠が繰り上がってきたのでネタづくりのために作られたライブラリです。<br /> 確かGatsby触って2日目の出来事だったと思います。Gatsbyの良さに感動したんだと思います。<br /> <strong>今もこのブログのためにメンテし続けています。</strong></p> <h2 id="2018/5"><a href="#2018%2F5">2018/5</a></h2> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/website">website</a></h3> <p>カックさんのブログメンティーに申し込んで、翌日の午前に立ち上げた当サイトのリポジトリです。前述の<code>gatsby-source-esa</code>があったからこそ立ち上がったものです。<br /> <strong>まだちゃんとメンテし続けています。日本で生きているGatsbyのコード例としてPublicにしています。</strong></p> <p>これが今のアウトプットの源になっているので、一番自分に影響を与えたリポジトリな気がします。</p> <h2 id="2018/6"><a href="#2018%2F6">2018/6</a></h2> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/shinka">shinka</a> (deprecated)</h3> <p>フレームレスで便利なYouTubeクライアント(予定)でした。<br /> この頃からYouTubeのゲーム実況にハマっていた記憶があります。<br /> Electron+Reactで作ってたのですが、ビルドプロセスとかに納得感がなくモチベーションが落ちていったパターンだったと記憶しています。<br /> ボイラープレートで使えそうなのが<a target="_blank" rel="nofollow noopener" href="https://github.com/electron-react-boilerplate/electron-react-boilerplate">electron-react-boilerplate/electron-react-boilerplate</a>ぐらいしかないのですが、FlowとReduxがデフォルトで入っていてだいぶやる気を削がれました。<br /> DXの重要性がはっきりとわかりますね。</p> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/json-sketchapp">json-sketchapp</a> (deprecated)</h3> <p>Roppongijs #4ように作ったJSONのDSL的なものをSketchファイルに変換するネタライブラリです。<br /> JSONでDSLを書く意味が(自分ですら)わからないので一発芸で終わりました。<br /> 「yoga(ReactNative)のレイアウトエンジンを使うと簡単にレイアウトを表現できますよ」という教訓が残りました。<br /> 仕事でPowerPointを出力するアプリケーションの面倒を見ているので、いつかyogaベースに変更できたらいいなと思っています。</p> <h2 id="2018/7"><a href="#2018%2F7">2018/7</a></h2> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/gas-kintai">gas-kintai</a></h3> <p>Slackで「kintai start」「kintai end」を入力すると自動でスプレッドシードに記入されるSlackアプリケーションをGASで作りました。<br /> お手伝いしている会社の勤怠管理がスプレッドシードに記入する形で面倒だったので作りました。(月末にSlackから頑張って転機する作業で消耗していました)</p> <p>このブログでも紹介しているGoogle Apps ScriptのCLIであるclaspで作っています。Reduxを参考にactionsを実行するような設計を取り入れようとして失敗しています。</p> <p>これを作って以来コミット時間が増えました。<strong>まだ使っています。</strong> そこそこ便利です。</p> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/sketch-esa-preview">slack-esa-preview</a></h3> <p>Slackにはられたesa.ioのリンクを展開してくれるSlack Appです。<br /> esa.ioはプライベートで使っていると、URLのみでリンクを踏まないと内容がわからないのでSlack Appの練習がてら作りました。<br /> Netlify FunctionsでSlackのEventを受けて、関数内でesa.ioのAPIを叩きデータを取得、Slackに内容を返す処理を書きました。<strong>まだ使ってます。</strong><br /> Netlify Functions処女作らしいです。ソースはTwitter。</p> <blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">投稿されたesaのタイトルを取得してSlackに投稿する処理も出来た。Netlify Functions入門から3時間でこれが出来たのは奇跡。 <a target="_blank" rel="nofollow noopener" href="https://t.co/VitDJVNqea">pic.twitter.com/VitDJVNqea</a></p>— もっと@九州初上陸 (@mottox2) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/mottox2/status/1021061598746533888?ref_src=twsrc%5Etfw">July 22, 2018</a></blockquote> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/esa-node">esa-node</a></h3> <p>esa.ioのNodeクライアントです。<br /> 上記の<code>slack-esa-preview</code>を作っている過程でいい感じのesaクライアントが欲しくて作りました。既出のクライアントはあったのですが最終更新が数年前で、TypeScriptの型を提供していいものを作ってやろうという気持ちで作りました。</p> <blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">TypeScriptで<a target="_blank" rel="nofollow noopener" href="https://t.co/TXTmXrRsCg">https://t.co/TXTmXrRsCg</a>のnodeクライアント書いた。便利。 <a target="_blank" rel="nofollow noopener" href="https://t.co/0EW6dLkdc7">pic.twitter.com/0EW6dLkdc7</a></p>— もっと@九州初上陸 (@mottox2) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/mottox2/status/1022405764759998464?ref_src=twsrc%5Etfw">July 26, 2018</a></blockquote> <p>この開発で、型を提供するパッケージの作り方を学びました。<br /> <strong><code>slack-esa-preview</code>の中で生き続けています。</strong></p> <h2 id="2018/8"><a href="#2018%2F8">2018/8</a></h2> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/webgrapher">webgrapher</a> (deprecated)</h3> <p>Webサイトのスクリーンショットをいい感じにとって管理するアプリケーション(予定)でした。<br /> 技術書典でスクリーンショットをいっぱい取るから、いい感じに管理できたらいいなという気持ちで作りました。</p> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/ghqui">ghqui</a> (deprecated)</h3> <p>ローカルのGitリポジトリを効率よく管理できるghqというツールのGUI(予定)でした。<br /> 開発を長く続けているとローカルで管理しているリポジトリが増えてどんどん重くなるので、GUIを作ってキャッシュやインクリメンタルサーチを実装したら楽になりそうというモチベーションではじめました。<br /> インクリメンタルサーチはWebWorkerとか使うと面白そうだなとか思っていましたが、そこに行き着く前にやめました。確かElectron周りでだるくなってやめた気がします。</p> <p>miyaokaさんがQiitaに投稿した「<a target="_blank" rel="nofollow noopener" href="https://qiita.com/miyaoka/items/0493655418f4920efcb7">ghq + pecoが重くなったら</a>」内で触れられている手法を使えばghqの重さは回避できることがわかったので、作る理由は消え去りました。</p> <h2 id="2018/10"><a href="#2018%2F10">2018/10</a></h2> <h3 id="b.mottox2.com (private)"><a href="#b.mottox2.com+%28private%29">b.mottox2.com (private)</a></h3> <p>技術書典で配布した本のダウンロードサイトです。Gatsby on Netlifyで動いています。<br /> Netlifyは有料プランを使うとBasic認証がかけられます。本サイトはNetlify Functionsでパスワード認証を作ってフロントエンドと連携してダウンロードリンクを表示するようにしました。<br /> ダウンロードカードや本とデザインを揃えたのがこだわりポイントです。</p> <p><img width="395" alt="スクリーンショット 2018-12-10 1.20.49.png (280.3 kB)" src="https://img.esa.io/uploads/production/attachments/6967/2018/12/10/4651/edc4cea4-69e8-472f-b5a1-310613080f69.png"></p> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/pixela-node">pixela-node</a></h3> <p>「<a target="_blank" rel="nofollow noopener" href="https://mottox2.com/posts/223">PixelaのNode.jsクライアントライブラリをつくった</a>」で取り上げたPixelaのNodeクライアントです。<br /> TypeScriptで型を出しているのがポイントです。<code>esa-node</code>で学んだことが生きたライブラリです。</p> <p>自分も習慣化アプリケーションを作ろうと考えていたところ、習慣化がうまくなってしまって作るモチベーションが落ちてしまうという学びを得ました。</p> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/pixeland">pixeland</a> (deprecated)</h3> <p>上記のPixelaのGUI(予定)。途中で習慣化がうまくなってきてモチベーションが消失しました。</p> <h2 id="2018/11"><a href="#2018%2F11">2018/11</a></h2> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/next-cms">next-cms</a></h3> <p>リポジトリだけ作った。日本でHeadless CMSを流行らせたいという気持ちだけある。<strong>手段は未定</strong>。</p> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/shoutoku">shotoku</a></h3> <p>carloで立ち上げるChrome中にReactアプリケーションを載せたやつ。<br /> Reactのコンポーネント内からcarloにシェルコマンドを送信して、実行結果をReactに表示してなにかをやろうとしていた形跡がある。<br /> アドベントカレンダーネタにしようとしたけど諦めた気がする。</p> <h2 id="2018/12"><a href="#2018%2F12">2018/12</a></h2> <h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mottox2/SSRecord">SSRecord</a></h3> <p>GAS中でSpreadSheetを便利にするORMなライブラリです。<strong>開発中です</strong>。<br /> GASで一番しんどいのがSpreadSheetをデータソースとして扱う部分だと思っていて、ORMがあったらいいなと思ってので作り始めました。<br /> 自分はGASをTypeScriptで書いているので、型にも対応しています。<br /> 一応findAll, findなどのデータ取得系はざっくり書いてあって、追加系や更新系をどうしようか迷っている段階です。</p> <p>仕事で書いているGASアプリケーションには既に導入されており、コードが40%減、保守性も高くなるという結果が出ています。</p> <p>実用に堪えるようになったらブログで紹介したいと思っています。</p> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>全体的に技術主導型で「途中で飽きる」ことを繰り返しているので2019年はちゃんと作りきりたいです。</p> <p>GUIは長丁場になるのでつらそう。ライブラリは飽きる前に形になるという特徴もありそうですね。</p> <p>少なくとも技術力やアウトプットの向上にはつながっているので、趣味プロジェクトはいいと思います。</p> mottox2 tag:crieit.net,2005:PublicArticle/14493 2018-08-01T03:55:32+09:00 2018-10-29T17:10:28+09:00 https://crieit.net/posts/Deploy-to-Netlify 「Deploy to Netlify」ボタンの設置方法 <p><a target="_blank" rel="nofollow noopener" href="https://mottox2.com/posts/171/">自分のブログ</a>から転載です。</p> <hr /> <p>「Deploy to Netlify」ボタンを設置するために<a target="_blank" rel="nofollow noopener" href="https://www.netlify.com/docs/deploy-button/">Deploy to Netlify Button</a>を読んでざっくりまとめつつ補足を加えました。</p> <ul> <li>「Deploy to Netlify」ボタンはNetlifyに簡単にリポジトリの内容をデプロイできるボタンのこと</li> <li>挙動としては指定されたGitHubリポジトリと同じものが自分のリポジトリとして作成されて、そのリポジトリがNetlify連携された状態になる。(ForkではなくCopy)</li> </ul> <div class="table-responsive"><table> <thead> <tr> <th>ステップ</th> <th>スクショ</th> </tr> </thead> <tbody> <tr> <td>GitHubと連携する画面。</td> <td><img src="https://img.esa.io/uploads/production/attachments/6967/2018/08/01/4651/c8bc80e6-6215-44ac-853e-46addca1dd69.png" alt="app.netlify.com_start_deploy_repository=https___github.com_mottox2_slack-esa-preview(iPad).png (212.2 kB)" /></td> </tr> <tr> <td>GitHubのRepository nameを決める</td> <td><img src="https://img.esa.io/uploads/production/attachments/6967/2018/08/01/4651/4f9ae4ab-182b-4d7e-88c0-e118037c77a2.png" alt="app.netlify.com_start_deploy_repository=https___github.com_mottox2_slack-esa-preview(iPad) (1).png (176.0 kB)" /></td> </tr> <tr> <td>連携が完了。すぐデプロイされます。</td> <td><img src="https://img.esa.io/uploads/production/attachments/6967/2018/08/01/4651/bb813d5d-5e57-48bf-beaf-f1116b6a5500.png" alt="app.netlify.com_start_deploy_repository=https___github.com_mottox2_slack-esa-preview(iPad) (2).png (271.1 kB)" /></td> </tr> </tbody> </table></div> <h2 id="ボタンの設置"><a href="#%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AE%E8%A8%AD%E7%BD%AE">ボタンの設置</a></h2> <p>```html:ボタン設置のHTML例<br /> <!-- HTML snippet --><br /> <a target="_blank" rel="nofollow noopener" href="https://app.netlify.com/start/deploy?repository=https://github.com/netlify/netlify-statuskit"><br /> <img src="https://www.netlify.com/img/deploy/button.svg" title="Deploy to Netlify"><br /> </a></p> <pre><code>- `https://www.netlify.com/img/deploy/button.svg`がボタンの見た目のSVG - `https://app.netlify.com/start/deploy?repository=https://github.com/netlify/netlify-statuskit`のようにGitHubのURLをrepositoryパラメータに乗せたリンクを踏むことでデプロイ設定ページに遷移する ## テンプレートの設定 - Netlifyはリポジトリごとに`netlify.toml`という設定ファイルを持っていて挙動をコントロールすることができる。[参考: netlify.toml Reference](https://www.netlify.com/docs/netlify-toml-reference/) ```netlify.toml [template.environment] SECRET_TOKEN = "change me for your secret token" CUSTOM_LOGO = "set the url to your custom logo here" </code></pre> <ul> <li><code>[template.environment]</code>セクションに項目を追加するとデプロイ時に、環境変数のテキストフィールドが現れる。</li> <li>Repository nameを入力するステップにフィールドが追加される<br /> <img src="https://img.esa.io/uploads/production/attachments/6967/2018/08/01/4651/6af7788c-1582-4cea-b434-d66c682cc855.png" alt="app.netlify.com_start_deploy_repository=https___github.com_netlify_netlify-statuskit&_ga=2.162346552.543342698.1533062015-2009648869.1533062015(iPad).png (230.0 kB)" /></li> </ul> mottox2 tag:crieit.net,2005:PublicArticle/14461 2018-05-31T23:09:12+09:00 2018-10-28T10:53:04+09:00 https://crieit.net/posts/WordPress4-7-REST-API WordPressのREST APIで記事を取得する(WordPress4.7以降) <p>薄めの記事だけど初投稿。</p> <p><a target="_blank" rel="nofollow noopener" href="http://crieit.net/posts/Crieit">Crieitの今後の展望 - Crieit</a>より</p> <blockquote> <p>Wordpressからの自動インポート</p> </blockquote> <p>WordPress4.7以降ならREST APIがあるので記事をインポートできる</p> <p><a target="_blank" rel="nofollow noopener" href="https://ja.wp-api.org/">Docs</a></p> <p><code>https://yourdomain.com/wp-json/wp/v2/posts?_embed</code> のエンドポイントが一番叩くのが楽で、<code>_embed</code>パラメータをつけるとcategoryやtag, authorの情報も一緒に取得することができる。</p> <p>ドキュメントを見るのが一番早い。</p> <p>--</p> <p>もし自分のサービスから叩くとしたら、Pluginを作るよりWordPressを4.7以降にしてもらってURLを入力してもらうのが一番早そう</p> mottox2