fullstackr blog

短編小説『美しい女』

ショートショートを作った 美しい女 全画面表示 阿刀田高流アイデア発見の4つの方法 今回の短編小説は、ミステリーの書き方の阿刀田高さんのアイデア発見法を使った。 短編小説のアイデアを発見する下準備として脳みその中にパターンべつの入り口を作っておくことは有効だ。 トリック型 パーソナリティ型 アフォリズム型 不可思議型 簡単に説明すると、トリック型は「一編の短編小説を作るにふさわしいトリックを発見」し、話をふくらませる方法。 パーソナリティ型は「特異な性格を見つけ出」し、話をふくらませる方法。その例として、ロアルド・ダール「天国への登り道」という短編をオススメしていた。読んでみたが、たしかに面白かった。 アフォリズム型は「金言、箴言、名言、警句などから入る」パターン。 不可思議型は「まぎれもない不可思議を見たとき、聞いたとき、知ったとき、(略)そこからアイデアが生じる」パターン。 『美しい女』では、「健康のために死ねる」のアフォリズムと、美を追求するパーソナリティを使って、アイデアをだした。 レシピを実行することを目的としたので、面白さにかけるし、すこし気持ち悪い。 しかしながら、 情景描写 伏線となるキーワードをどこに入れるか 「わたし」をしゃべらせない技法 など自分なりに技巧を凝らしてみた。 アイデアを作り、構成を考え、執筆し、技巧を含めていく。作品の出来はどうしようもないが、短編を作るのは楽しい! 技術的なこと 技術的には、EPUBのルビを使ってみた。 % pip install sphinxcontrib-textstyle conf.pyにextensions = ['sphinxcontrib.textstyle']を追加することで、ルビが使える。 美咲さんは美しい :ruby:`女<ひと>` だ。

ショートショートを作り、SphinxでEPUBを作り、BiBiで表示する

ショートショートを書いてみた しゃべるゴミ 全画面表示 ショートショートが大好きだ。阿刀田高や筒井康隆、星新一の短編を読んでいると、その無尽蔵のアイデアに驚く。 「小さな物語のつくり方」はそのショートショートを作る方法が書かれている。 この本で紹介しているショートショートの作り方は、「奇想」を作り出し、そこからアイデアを広げていくというもののようだ。 この本を紹介していたサイトに、下図のような「奇想」を作り出す過程がのっていた。 「読書猿Classic」より 本当にこの方法でうまく作れるか、上で展開された「奇想」をつかって自分でもショートショートを作ってみた。 わたしの処女作『しゃべるゴミ』、ご笑覧あれ。 電子書籍を公開するための方法 公開するために、ePubファイルを作り、それをビューワーで表示した。 ePubの作り方 ePubファイルはSphinxで生成した。 縦書きのために、conf.pyを以下のように修正した。 language = "ja" epub_writing_mode = 'vertical' sphinx-quickstartのあと、make epubを実行することで、ePubファイルを生成した。 $ sphinx-quickstart $ make epub ウェブページでePubを表示する ブラウザで動作するEPUBリーダーBiBiを利用した。

ぼっちスタートアップはMarcoをめざせ

こんにちは、@maruobayです。 わたしは「マルコ」を目指している、というはなし。 母をたずねるマルコでもなければ、「紅の豚」のポルコでもない。プログラマーのMarco Armentさんだ。 a programmer, writer, podcaster, geek, and coffee enthusiast. Marcoさんは「Tumblr」の共同創業者であり、ブックマークアプリ「Instapaper」の作者。何年か前にこの記事で知った。 以来「いつかは、Marco流を自分のスタイルにしたい」と考えている。 Marcoのような万能キャラは、起業にうってつけである。というのも、万能キャラは誰にも大きく依存せずにプロトタイプを作り、宣伝できる なんちゃってフルスタック技術者を目指しているのは、なんちゃってMarcoを目指しているからだ。 大事なのは、Marcoはどれをとっても100点満点ではない代わり、弱点がないということだ。プログラミングもデザインも宣伝も全てエキスパートになろうとすると途方にくれてしまうが、どれもそれ相応にできるようになるのは、難しいが不可能ではない。 「どれをとっても30点」の私には、過ぎたる目標であるが、ITの世界はまだまだ「ブックマークサービス」のようなスモールビジネスが活躍する分野が生まれ続けると信じている。

Hugoテーマをつくる

Hugoのテーマをつくる ブログのデザインを変えるため、Hugoのテンプレートを自作する。 Hugoではコマンド一発hugo new theme [name]でThemeのテンプレートを用意してくれる。 $ hugo new theme fs-skeleton $ tree themes/fs-skeleton themes/fs-skeleton ├── LICENSE.md ├── archetypes │ └── default.md ├── layouts │ ├── 404.html │ ├── _default │ │ ├── list.html │ │ └── single.html │ ├── index.html │ └── partials │ ├── footer.html │ └── header.html ├── static │ ├── css │ └── js └── theme.toml 7 directories, 9 files GitHubでGit Gitでバージョン管理する。 Gitの最初のコミットは空コミットにしよう ってことなんで空コミットしてから、Githubにpushする。

Webアプリケーションを作りはじめる

Webアプリーケーションを作り始めた Scala言語で作るのは決定だが、数年見ない間にかなり事情が変わっていた。 どうやらCPUのスピードが頭打ちになって、マルチコアCPUが高速化の主戦場になっていることと関係があるようだ。 ということで、Scala言語のWebフレームワークPlayframeworkをチェック。 Stateless Web Tier Non-blocking I/O Built on Akka Real-time enabled RESTful by default Asset Compiler for Coffee Script, LESS, etc JSON is first class citizen Websockets, Comet, EventSource Extensive NoSQL & Big Data Support 最新トレンドてんこ盛り。 関数型で、リアクティブプログラミングで、アクターモデルで、非同期で、Akkaで、なんだそーだ。もう嫌になりそうだ。。 千里の道も一歩から まずは、認証システムの検討からはじめた。 Playframework2.5では、従来のsecuresocialじゃなくてsilhouetteがよいみたい。 silhouetteのスペルを覚えるだけで、5日かかった。認証システムを使えるまでに、いったい何日かかるのだろう。怖い。 https://www.silhouette.rocks/docs/introduction http://www.reactivemanifesto.org/ja stacknoteに決定 stacknote.net Stackは名詞で、noteも名詞。名詞+名詞でも大丈夫だろうか、と心配になり、ネイティブに確認してもらう。「No Problem」で「Cool」とのことなので、stacknoteに決定。 これまでの名前 これまで検討したネーミングはいくつもある。検討しているときは「これしかないっ!」と思うのだが、数ヶ月したら「イマイチ」に感じるものだ。 DoZatt.com アメリカの友人に「上司に”Do this, Do that”と責められる」という表現を聞いて、日本語の「アレせぇ、コレせぇ」の表現と同じで驚いた。 「なかなか行動できないことを実行する」ための支援システム、の意を込めて、DoZattとした。 なんだかエラそうなので、不採用。 Basenote.me 「なんちゃらnote」というネーミングがいいんじゃないかと思い、考えた。 香水の”ベースノート”のイメージが「よいっ!」と思った。 なんだか尖ってないので、不採用。

何が作りたいかを考える

書き出してみる 作りたいウェブサービスでは、「”じぶん”が使いたいサービス」という点を重視したい。「ぼっちスタートアップ に遠慮は無用だ。 スコンスコンとあらゆる物事が腑に落ちる ボコボコと心にしみる文章が書ける ギュンギュンと何かわからない能力が高まる シュルシュルとモヤモヤが解消される そんな“じぶん”を支援してくれるシステムを作りたい。 どんなコンテンツをあつかうかを考えることが重要だ。どんなタイプの文章があるか調べる必要がある。 どんなタイプがあるか調べるため、いま考えてたこと、調べたことを具体的に書き出してみて、確認する。 hugo-theme-robustではアイキャッチ画像をサムネイルとしている。thumbnail=“media/dog.jpg” サムネイルは「小さなもの」という意味なので小さな画像に使うべきで、アイキャッチ画像にはeyecatchがよいのでは? ↑ 検討のスナップショット。つぶやき。確定的、決定的、結論的なものではない。 サムネイルのサムは親指。辞書で調べると、サムとフィンガーは別物だって!手には、1本のサムと4本のフィンガーであって、フィンガー5はOKでも、ファイブフィンガーはNG ↑ 記憶にとどめたいこと。調べたこと。確定的。調べきれない内容があるかも。 人差し指ってのは、first fingerなんだ〜。親指は別モンだからね。 ということは、中指は。。やっぱりsecond finger(^^ 薬指は。。当たり前体操、third fingerか〜 よって小指は。。。。。。。。fifth fingerってなんでやねん! ↑ 調べものメモ。そして驚きの発見。 でも、何番目指ってのはメジャーじゃないみたい。 fore前のfinger、middle真ん中のfinger、ring finger、そしてlittle fingerあたりがメジャーのよう ↑ 調べものメモ。 そういや日本語はなんで薬指? 昔、薬を水に溶かす際や塗る際にこの指を使ったことに由来していると言われる説、薬師如来が右の第四指を曲げている事に由来するという説がある(Wikipedia)。へえー ↑ 放浪的、拡散的、無計画的、無目的な「へえー」 病院って、暑くもなく寒くもない快適温度。眠くなる。やる気がなくなる。いやな感じ。 暑さや寒さ、湿気や砂ぼこりの荒っぽい世界はありがたい。花粉だけは別(^^; ↑ つぶやき。自分の気持ちだから、まちがいはない。批判されることもない安全地帯。 Hugoって隠れた規則が多くて、Middlemanよりもわかりにくいな /tags.htmlとか/categories.htmlってのが、おなじlist.htmlから派生するってのが理解しにくい設計だ。 ↑ つぶやき。自分の気持ちだが、まちがいの可能性がある。自分の知識が足りなくて「わかりにくい」と感じている可能性があるのだ。 stacknoteってサービス名、名詞+名詞だけどネイティブはどう思うんだろう。 命令形 Stack notes!みたいに思うんだろうか? そういえばFacebookってのも名詞+名詞だけど、ネイティブは違和感ないのかな? ↑ 考えごとのスナップショット。あわよくば誰かがアドバイスしてくれるかもしれない(^^;

Hugo下調べ: 複数のブログを実現する

「IT系備忘録」と「一般的なブログ」を分けたい。「IT系備忘録」は特殊なページだからだ。 Hugoで複数ブログを実現する方法は複数あるようだが、いったん次の方法で実現した。 Sectionを利用する 一般ブログは/content/postセクションとし、IT系備忘録は/content/fullstackセクションとする。 Permalinkは同じスタイルにする 前回の検討を考慮して、次のように設定する。 [permalinks] post = "/:year/:month/:day/:slug/" fullstack = "/:year/:month/:day/:slug/" 各ブログトップのデザインを検討する 各ブログトップのデザインを修正したい。 Sectionを使ってブログを実現すると、そのブログトップのデザインはthemeのlist.htmlになる。 以下のようにして、タイトルをつけた。 {{ if eq .Title "Fullstacks" }} <h1>ゼロからはじめるフルスタック技術者ブログ</h1> {{ else }} <h1>fullstackr blog</h1> {{ end }} もう少しスマートな方法を考えたい。 /tags/index.htmlや/categories/index.htmlを生成する方法がつかみづらい。もう少し理解せねば。

Hugo下調べ: Amazonアソシエイトを利用する

HugoでAmazonアソシエイトを使いたい Blogで書籍やグッズを紹介するときに、Amazonアソシエイトを使いたい。 Hugoで定番の方法というのは見つからなかったので、自分で考えた。 記事の中で使うので、Shortcode機能を使うことになる。Template機能は使えない。 ASINコードを変数としてShortcodeで実現する方法がシンプルでよいと思う。こんな感じの記述で実現したい。 {{< asin "430922671X" >}} やはりサムネイル写真がほしいので、Product Advertising APIを使ってASINコードから画像URLを得る必要がある。 Hugo流を調べる 結論的には、「別プログラムでデータを取得し、dataフォルダに保存。それをShortcodeから利用する」がHugo流のようだ。 Middlemannのようなプラグイン機能がないのだ。 Hugoはプラグイン機能をサポートしていない プラグイン機能は、検討はされているが、セキュリティやプラグイン管理の問題があるので、現在、サポートしていないようだ。「Hugo本体が全部提供するよ」スタイルがHugo流かな。 Add exec shortcode sing for plugins in Hugo? Go言語のプラグイン機能? Hugo作者spf13氏にはGo言語のプラグインpingoを使う方法にもポジティブだが、どうやって実現するのかは不明。。水面下で動いている? @timesking It’s brand new and will require some testing. I think it has a lot of potential. Hugoとは別のプログラムを動かすのがよい 以下のような方法もあるが、前者だと実行速度が犠牲になるし、後者だとユーザーの資源を使うことになる。どちらも良い方法ではない。 Hugo本体に手を付ける Javascript+async属性でバックグラウンドでAPI実行 Data Folder機能を使って実装してみる 別プログラムにて、data/asinにJSONファイル430922671X.jsonを作成する。 JSON/YAML/TOMLが使えるが、今後ScalaでProduct Advertising APIを使うので、ライブラリが充実しているJSONを使ってみる。 で、themeのlayouts/shortcodes/asin.htmlを作成した。 {{ $data := index .Site.Data.asin (.Get 0) }} <div> <a href="http://www.

URLをきめた!

オレがいいと思うURLのスタイル3選 前回の検討をうけて、本サイトのURLを決めたい。 クールなURIは変わらない by Tim BL(1998)で具体的にあげられている例と、Hugoドキュメントの例、そしてこれまで使ってきたMiddlemanサイトを比較した。 w3: http://example.com/1998/12/01/chairs Hugo: http://example.com/2013/11/sample-entry/ Me: http://example.com/arhives/2017/02/14/test.html これを、ジーっと眺めて、本サイトのURLはこうすることにした。 オレ流URLはこうだ! Pretty URLを採用 拡張子をつけるUgly URLをやめて、拡張子のないPretty URLにする /archivesとか/postとかは使わない /archives下でなくても、/:yearで十分にPermalinkだとわかる。w3.orgもそうしてるね。 /:year/:month/:day/:slug とする (いまのところ)URLに日本語は入れたくないので、:slugを使って柔軟に対応する。これならば、日本語への変更も簡単ね。 Hugoではこうやって設定した ファイルの保存方法 記事ファイルは所定の./contentの下にpostSectionを作って保存した。 ファイル名は「[year]-[month]-[day]-something.[format]」形式 ./content/post/2017-02-14-日本語.md ./content/post/2017-02-13-english.md ./content/post/2017-02-12-hugo_de_blog.md Hugoの設定 Hugoの設定はこれ。config.tomlに追加するだけ。 [permalinks] post = "/:year/:month/:day/:slug/"

Hugo下調べ:URLを考える

サイトのURLについて サイトのURLについて考える。 Middlemanのファイル命名規則とURLが気に入っていた。 Source: /source/2017-02-13-my-blog.html.md Permalink: http://example.com/2017/02/13/my-blog.html 日記とブログを分けたいので、記事に「日記」「ブログ」というTagをつけて、同一アーカイブで別々のページにリストしていた。 記事は同一フォルダに保存でき、記事ファイルは「ポケットひとつ原則」で運用していた。 http://example.com/diary/index.html http://example.com/archives/2017/02/13/my-diary.html http://example.com/blog/index.html http://example.com/archives/2017/02/13/my-blog.html Hugoでも同じように運用できるようにしたい。 「超」整理法1 押出しファイリング (中公文庫)[Kindle版]posted with ヨメレバ野口悠紀雄 中央公論新社 2012-12-19 拡張子はなくしたい Middlemanでは拡張子を使用していたが、Hugo運用では拡張子をなくしたい。 クールなURIは変わらない by Tim BL(1998)において、「ファイル名の拡張子」も除外すべきものに入っているからだ。.htmlは不要なのだ。 旧石器時代人もその昔、.shtmlや.cgi、.plなんて拡張子を使っていた。これらの拡張子を長期にわたって管理していくのはBadだ。それらは利用している技術に依存しているだけで、技術の進歩によってURLが変化するのはクールじゃないのだプッ。 Middlemanのサイトで知ったのだが、拡張子のないURLはPretty URLsと呼び、拡張子のあるURLはUgly URLsと呼ばれているようだ。 Pretty URL http://example.com/about-us/ Ugly URL http://example.com/about-us.html Hugoでは、Pretty URLsがデフォルトである。Directory Indexesで実現される。 Hugoのデフォルトをそのまま使い、拡張子とおさらばしよう。 記事ファイル名に日付をつけたい Middlemanでブログを使う場合、記事ファイル名に日付をいれる。 記事フィアル名の日付とFrontmatterのdateが同じでなければエラーになる。記事フィアル名が2017-02-13-first-contents.html.mdの場合、Frontmatterのdateも揃えなければいけない。 --- title: "最初の記事" date: 2017/02/13 --- Hugoでは記事ファイル名に日付をつけなくてもよく、Frontmatterのdateのみがメタ情報となる。 記事ファイル名はfirst-content.mdのように日付も.htmlも不要だ。.mdは記事コンテンツのフォーマットを示しており、HTMLファイルの生成時にはこの拡張子もなくなる。 しかしこの方法だと、記事ファイルが日付順に並ばないし、ファイル名の重複も発生してしまう。 記事ファイル名はMiddleman的に2017-02-13-my-first.mdがベストだ。 SectionとCategoriesとTags Hugoには、Section、Categories、そしてTagsという3つの分類(Taxonomies)のメカニズムがある。 そのうちSectionは簡単だ。記事フォルダcontentの下のフォルダに対応づけられる分類だ。記事ファイルのパスが、URLに反映される。 Source: ./content/post/2017-02-13-my-blog.md URL: http://example.com/post/2017-02-13-my-blog/ Source: ./content/news/2017-02-13-news.md URL: http://example.