2015-03-13

GitHub Flavored Markdown でリストの中に code block を入れる その二

過去記事の続き。リストの中に code block をハイライト付きで表示する方法について。

GFM の code block

前記事のおさらい。

non-fenced code blocks
コードの前に 4 つのスペースを置いてインデントする
fenced code blocks
コードを ``` で囲む方式。開始部分に言語名を指定すると、コードハイライトしてくれる

前記事では、リストの中でコード・ブロックを置くには

  1. non-fenced code blocks しか使えない
  2. インデントは 4 ではなく 8 を使う

と紹介した。fenced code blocks ではないので、コード・ハイライトは効かない。

リストの中でコードハイライト

non-fenced code blocks と fenced code blocks を組み合わせることで、リスト中でも (更に入れ子のリスト内でも) コード・ハイライトが出来る。

以下、ataka/emacs-wget の README.md で実際に使っているコードを写す。

1.  make && make install

    ```
    $ tar xzvf emacs-wget-X.YY.tar.gz
    $ cd emacs-wget-X.YY
    $ make
    # make install
    ```

  1. If make fails, put all *.el files into your load-path directory.
2. Put following expressions into your .emacs file.

    ```elisp
    (autoload 'wget "wget" "wget interface for Emacs." t)
    (autoload 'wget-web-page "wget" "wget interface to download whole web page." t)
    ```

3. Setting for Web browser on Emacs:
  1. With emacs-w3m, put the following code into your .emacs:

    ```elisp
    (load "w3m-wget")
    ```

  2. With Emacs/W3, put the following code into your .emacs:

    ```elisp
    (autoload 'w3-wget "w3-wget" "wget interface for Emacs/W3." t)
    ```

4. If wget version is 1.7 or less, put the following code into your .emacs:

    ```elisp
    (setq wget-basic-options '("-v"))
    ```

5. When you write your `.wgetrc`:
  1. `quiet = on`

     Emacs-wget will fail to download.  Put the following into your .emacs:

     ```elisp
     (setq wget-basic-options (cons "-equiet=off" wget-basic-options))
     ```

Brilliant!

あとがき

この書き方は @ClimbAppDev さんに教わった。README が読みやすくなった。ありがとうございます。

2015-03-10

MacBook; 新, Air, Pro の比較

新しい MacBook、MacBook Air, MacBook Pro の比較表を作ってみた。例によって、良い点を青字にした。

MacBook Air新しい MacBookMacBook Pro
ディスプレイ1113121315
解像度1366x7681440x9002304x1440 (226ppi)2560x1600 (227ppi)2880x1880 (227ppi)
RetinaNoYes
CPUIntel Core i5/i7 (Dual)Intel Core M (Dual)Intel Core i5/i7 (Dual)Intel Core i7 (Quad)
周波数1.6,2.2 GHz1.1,1.2,1.3 GHz2.7,2.9,3.1 GHz2.2,2.5,2.8 GHz
メモリー4/8 GB8 GB8/16 GB16 GB
ストレージ (Max)512 GB SSD1 TB SSD
グラフィックIntel HD Graphics 6000Intel HD Graphics 5300Intel Iris Graphics 6100Intel Iris Pro Graphics (+ NVIDIA GeForce GT 750M)
最薄0.3cm0.35cm1.8cm
最厚1.7cm1.31cm
重さ1.08kg1.35kg0.92kg1.58kg2.02kg
電源ポートMagSafe 2 x1USB-C x1MagSafe 2 x1
ディスプレイポートThunderbolt 2 x1Thunderbolt 2 x2
HDMI x1
USBUSB 3 x2USB 3 x2
カードスロットNoSDXC x1NoSDXC x1
FaceTime カメラ720p480p720p
Wi-Fi802.11 a/b/g/n/ac
Bluetooth4.0
バッテリー38Wh54Wh39.7Wh74.9Wh95Wh
ウェブブラウジング9 時間12 時間9 時間10 時間8 時間

あとがき

前記事で新しい MacBook を次のように評した。

「開発用」マシンとしての MacBook としては不安が残るものの、持ち運ぶ「ノート PC」としては MacBook Air 以上に「特化」してきたマシンと思う。

clmemo@aka: 新しい MacBook 発表、4/10 発売 より引用

こうして比較表を作ってみると、MacBook Pro の性能の高さが良く分かる。と同時に、他のマシンと比べると携帯性には Air や新しい MacBook に水を開けられている感が強い。新しい MacBook は Retina でかつバッテリー・サイズが小さいながら MacBook Pro 15 インチよりもウェブ・ブラウジング時間が一時間長い点が気になった。ディスプレイはバッテリー消費が激しいので、新しい MacBook がバッテリー改善に力を入れたことが伺える。一方で、いくつかのスペックが MacBook Air より劣る点も気になる。新しい MacBook は、モバイルでこそ活きる、という思いが強くなった。MacBook Air は新しい MacBook と MacBook Pro の中間位置。これを中途半端とするか、良い所どりとするかは、ユーザー次第か。Pro に手を出せない人間には、Air はまだまだ魅力的かなぁ。今後、新しい MacBook がどんなラインナップを出すのか楽しみ。

新しい MacBook 発表、4/10 発売

2015-03-09 (米時間)、Apple は Spring Forward イベントで「新しい MacBook」を発表した。2015-04-10 発売。12 インチ・サイズの Retina 対応 MacBook。MacBook Air とも MacBook Pro とも違うカテゴリー。そして、ティム・クックが「Reinvent the notebook (ノートブックの再発明)」と語ったように既存のデバイスをバッサリ切り捨てた新デザイン。刺激的。

MacBook が CD ドライブをなくして世間に衝撃を与えたのも今は昔。Apple は「新しい MacBook」で更にドラスティックな変更を加えてきた。それは、ディスプレイ用端子 (ディスプレイ・ポート/Thunderbolt/HDMI)、電源ポート、USB 端子 (MacBook Air で 2 つ、Pro で 3 つ) といった複数の端子を一つにまとめたこと。

MacBook シリーズの魅力の一つでもあった MagSafe はなくなった。充電中は外部ディスプレイに繋げない。USB キーボード、USB メモリー、USB HDD、USB プリンター etc. USB で繋がっていた機器も端子の数が一つだけでは使えないにも等しい。今後、USB-C に対応したハブが新しい Mac 用にリリースされると思うけど、「ハブ」がないと今まで通り使えないというのは厳しい。

USB で今まで繋いでいたキーボード、マウス、プリンター、NAS は全て Wi-Fi もしくは Bluetooth を使った「無線」技術を使おう、という Apple の意志が伺える。外付けディスプレイ・ポートと電源ポートまで一緒にしてしまったのは、もはや外付けディスプレイを使わない「でしょ」という仄めかしか?

ノート PC に外付けディスプレイを取り付けて大画面を手に入れ、自分用のキーボードやマウス、トラックパッドを使っている「開発者」には辛いマシンとなった。特に USB キーボードしかない Happy Hacking KeyboardKinesis キーボードの使い手には死の宣告にも等しいものがある。(確かに USB キーボードを Bluetooth 化するガジェットは出ているけど、完成度がいま一つ)

新しい MacBook は、MacBook Air 以上に「持ち運ぶ」ノート PC を到達点にしているのかもしれない。そう考えると、外部ディスプレイや USB 端子がなくなってしまったことも受け取められる。「開発」にも使われるノート PC として MacBook Pro との棲み分けが進むのか? MacBook Pro の動向が気になる。

キーボード、トラックパッド、バッテリーの進化

新しい MacBook は、「reinvent」の名に恥じぬノート PC の「細部」にも手を入れてきた。

一つ目はキーボードで、「バタフライ構造」を採用し、キーの押しやすさを改善するとともにキーそのものの厚みも減らした。

二つ目はトラックパッド。タップ、マルチタップ、ピンチに加えて「Force Touch」という新しい概念が追加された。これは、トラックパッドの「深押し」に対応する技術。「浅い」タップと「深い」タップに別々の機能を割り当てることが出来る。もしかしたら、Command+tap が Force Touch で置き換えられるかもしれない。

三つ目はバッテリー。バッテリー・シートを薄く重ねる技術を導入した。この技術により、より広い範囲までバッテリーを敷きつめることが可能になり、同じ容積に対してより多くのバッテリーを積めるようになった。

これらの新技術は他の MacBook シリーズにも流用可能で、MacBook Pro は Force Touch の採用を既に決めている。

落ち穂拾い

新しい MacBook で気になる点をいくつか拾っておく。

  • MacBook Air (1.08kg) より軽い 920g
  • 最厚部分の厚みは MacBook Air (17.3mm) より薄い 13.1mm
  • MacBook シリーズ初のファンレス
  • 13 インチ以下のサイズで初めて Retina 対応
  • Intel Core M を採用
  • 9 時間のウェブ・ブラウジングを可能にするバッテリー性能
  • 色は 3 色展開 (シルバー、スペース・グレイ、ゴールド)

あとがき

「開発用」マシンとしての MacBook としては不安が残るものの、持ち運ぶ「ノート PC」としては MacBook Air 以上に「特化」してきたマシンと思う。値段は 148,800 円からと Retina らしい価格で、物欲かられる身としては悩み所。

Apple、ResearchKit を発表

Apple は 2015-03-09 (米時間) に開催された Spring Forward イベントで ResearchKit を発表した。医療機関向けにデータを送信するためのフレームワークで、「常に身につけている」スマートフォンの利点を活かしたデータの日常的な取得を可能にする。ResearchKit はオープン・ソースで 2015 年 4 月に公開予定。

2015-03-10 (今日)、ResearchKit に基づいた 5 つのアプリがリリースされる。対象は病気ごとで、以下の通り (括弧内はアプリ名):

  • パーキンソン病 (Perkinson mPower study app)
  • 糖尿病 (GlucoSuccess)
  • 心臓病 (MyHeart Counts)
  • 喘息 (Asthma Health by Mount Sinai)
  • 乳癌 (Share the Journey)

日本という閉鎖的な国で、これらのアプリが活かせるのかどうか。ResearchKit を使ったアプリが普及するのかどうか。疑問はあるけれど、もしもアメリカで成功するようなら、医療面でのイノベーションが起きそうな予感。

Apple TV $99 から $69 へ値下げ

2015-03-09 (米時間) に開催された Apple の Spring Forward イベント。一番手はまさかの Apple TV だった。現在、第三世代となる Apple TV (発売開始は 2012 年 3 月)。この値下げが発表された。

$99 から $69 へ。

日本のサイトでは 8,200 円と値段が表示されている!

Apple TV 関連のネタはもう一つ。アメリカのケーブルテレビ放送局 HBO が Apple TV にも提供されることが発表された。「セックス・アンド・ザ・シティ」なんかを製作してる放送局ね。日本では関係なさそう。

あとがき

Apple TV 第三世代が出て 3 年。そろそろ第 4 世代発表を期待している。今回はまさかの値下げ発表で、心が揺れた。Apple Watch の日本発売が決まっていなかったら、第 4 世代を待たずして買ってたかもしれない。

Apple Watch 4/24 日本発売決定

2015-03-09 (米時間)、Apple は Spring Forward イベントを開催し Apple Watch の発売をアナウンスした。Apple Watch そのものの機能については、9 月に開かれたイベントから大きな変化は見られなかった。今回のイベントでの注目は、Apple Watch の具体的な値段・発売日・発売国に集まった。かねてよりの予告通り最安値は $349。価格は Apple Watch Sport, Apple Watch, Apple Watch Edition の順に上がってゆく。予約開始は 4/10 で、発売日は 4/24。初回発売国には日本も入っている!!

価格について

Apple Watch は 2 種のディスプレイ・サイズ (縦 38mm と 42mm)、3 つのコレクションを用意している。大きい方が小さい方に比べて $50 値段が高い。各コレクションは更に取り付けるバンドによって値段が変わる。今回、イベントで言及された値段は次の通り:

Collection38mm42mm
Sport$349$399
Watch$549-$1,049$599-$1,099
Edition$1,000+

バッテリー

バッテリーの持ちが心配された Apple Watch。具体的な数字が公開された。

  • 1 日使い続けることが可能
  • 18 時間分のバッテリー
  • 充電は一日一回、接触マグネット式にて

発売国

前述した通り日本も発売国に含まれる。

初回発売が決定している国は 10 か国。オーストラリア、カナダ、中国、フランス、ドイツ、ホンコン、日本、イギリス、アメリカ。

iOS 8.2

Apple Watch に対応した iOS の最初のバージョン 8.2 がリリースされる。リリース日は今日。

今、このブログを書いてる横で、ぼくの iPhone はアップデート中。

あとがき

2014-09-10 に開かれた Apple スペシャル・イベントから (機能面で) Apple Watch に大きな変化がなかったのは、それだけ Apple Watch のコンセプトがしっかり固まっていたからと思う。むしろ、この数か月は量産に向けての工夫や修正に手をやいていたのではないか。

コンセプト・ベースではなく実機ベースで、Apple Watch が動いているのを見られたのは嬉しかった。驚きは小さかったど、現実感が迫ってくる。電話を受けたり、Siri で天気予報を見たりリマインダーを設定したり、アプリからのノーティフィケーションを受け取るのはとても楽しそう。それが、実用的なレベルかどうか? どれほどのアプリが Apple Watch に最適化されるかは、まだ発売されないと分からない。

Apple の製品は「第一弾」が大きく成功しない。これはぼくの持論であり、大くの人達が言っている。iPod の第一作はセンセーショナルを生まなかった。iPhone は素晴らしかったけど、実力を発揮したのはアプリ開発が解禁された iPhone 3G (第二世代) からだったように思う。iPad は珍しく「第一弾」から成功した。Apple Watch はヒットにこそなれ、後から振り返ると「第二世代から良かった」と呼ばれるんじゃないかと思ってる。

とはいえ、Apple 好きとしては買うんだけどね。初回予約で購入できると良いなー。凄くヒートアップするのが目に見えるよう。

2015-02-19

fcopy.el を MELPA に登録した

Emacs 用のコピー・パッケージ fcopyMELPA に登録した。

fcopy とは?

奇妙なコピーという意味で Funny Copy と名付けた。略して fcopy。

普通のコピーは「コピーする対象」を「コピー」してから「貼り付け場所」に移動して「ペースト」を行なう。

fcopy は手順が逆になる。今、カーソルのある場所が「貼り付け場所」。先に「貼り付け場所」が決まってる。この前提で fcopy コマンドを実行 (M-x fcopy) すると、「コピーする対象」を探す・選択するモード (fcopy-mode) に移行する。「コピーする対象」を選んで RET を押すと、「貼り付け場所」(fcopy を始めた場所) に自動的に戻って「ペースト」が実行される。

対話的に「挿入」を行なう、とも言える。interactive-insert とかに名前を変えようかと思ったけど、ぼくの意識は「挿入」よりも「コピー」なので、fcopy という名前を使い続けてる。

fcopy-mode では、いくつかワンストロークのコマンドも用意している:

  • バッファーへの書き込みは禁止され、誤編集ができなくなる
  • 代わりに SPACE キーでスクロール、f キーでワード単位の移動、. (ピリオド) でマーク
  • ( で括弧単位のコピー (括弧含む)、) で括弧の中身のコピー
  • C-g で元の場所に戻って fcopy の終了、q でその場で fcopy の終了

詳しくは、過去記事 clmemo@aka: Fcopy.el ver.6.0 リリースataka/fcopy の README をどうぞ。

インストール

Emacs 24 系なら MELPA からインストールできる。

MELPA の準備:

(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)

M-x package-list-packages でパッケージ一覧を取得して、fcopy を探して RETInstall ボタンの上で RET。これでインストール終了。

適当なキーに割り当てる:

(global-set-key "\C-ck" 'fcopy)

もし古い fcopy.el があるようなら、消除を忘れずに。

過去からの変更点

MELPA に登録したことで、バージョン番号を 7.0 へ上げた。主な変更点は 2 つ。

  • fcopy というコマンドを用意した (もう fcopy-mode は直接呼ばない)
  • fmodify というペースト直前に編集を行なうコードをなくした

あとがき

fcopy は、今やぼくが Emacs を使う時になくてはならないパッケージになった。今まで、新しい環境に移るたびに fcopy.el をダウンロードしてインストールしていたけれど、Emacs のパッケージ・システムを使えばそんな手間をかける必要もなくなる。

修正も github に push すれば、他の環境にパッケージ・システム経由でアップデートできる。便利になった。自分が一番喜んでいる。

これからは、古い Emacs でも動くようにコードをレガシー対応させるつもり。というのも、以前、リモートでログインした環境に Mule 2 (Emacs 19 相当) しか入ってなくて泣きそうな目にあったから。他のパッケージは最新 Emacs で動けばいいと割り切ってるけど、fcopy だけはどの環境でも動いてくれないとぼくがツラい。緊急性は低いので、ゆっくりやってくつもり。

もちろん、他の機能強化項目があれば手を付ける。

Funny Copy。どうぞ、よろしく。

2015-02-14

iOS オールスターズ勉強会、参加メモ #dotsios

2015-02-14 (土) に開かれた iOS オールスターズ勉強会に参加したので、発表内容の簡単なメモを残しておく。

既にまとめもあがっているのでリンク。

Adaptive Collection View (LINE, 石川)

Adaptive = いろんな端末に対応。

UITableView と UICollectionView が似ているので、使い分けるより UICollectionView だけで UI を設計してしまえば iPad, iPhone 対応が手軽にできる。iPhone は UITableView, iPad は UICollectionView で作成することが多いけど、同じコードを二回書かなきゃいけないことが多い。UICollectionView を上手く使えば、画面サイズに応じて小さな分岐を入れるだけでコードを一つにまとめることができる。

Swift で使いやすい API を考える (ユピレジ, 岸川)

KeychainAccess という自作ライブラリーを例に Swift から加わった機能の説明など。

struct 型は不変な class という促え方をしてて目から鱗が落ちた。Swift は型が非常に厳密なので、Optinal 型を使わない設計が良いかも。デフォルト引数は良い機能だけど、補完がいまいち (XCode の要改善点?) なのと、フレームワークを作る時にデフォールト値がユーザーに伝えられないので困る。戻り値のオーバーロードは、キャストが必要になるのでリズムが悪い。エラー処理の戻り値は Either 型で success or error を返す。Playgroud を付けてライブラリーを提供すると、ユーザーに優しい。Functional style API は書けなくはない程度なので、普通の API と並録する方がよさそう。等々。

let UIWebView as WiKiWebView (ヤフー, 佐野)

iOS 8 以降から使える WKWebView と iOS 7 以前でも使える UIWebView を同居させなきゃいけなくなった時に、最小の修正で切り抜けるノウハウの紹介。

通信のパフォーマンス改善 (Wantedly, 杉上)

Wantedly は海外進出する! (らしい) ので、低速回線での使用を考慮に入れた開発を行なった。その技術分析と対処のノウハウ集。

New Relic Mobile の分析は大雑把すぎたので、square/PonyDebugger を利用。使ってない通信があること、画像の通信量が多いことなどが分かった。ボトルネックを見つけて潰すと、また別のボトルネックが見つかるので、それを潰す。

rs/SDWebImage が素晴らしいが、まだまだ便利な機能があることを皆知らない。WebP に対応している。SDWebImagePrefetcher で画像の先読みができる。SDWebImageOptions で画像取得の優先度を 3 段階で付けられる。画像取得のキャンセルができる (遷移前のビューの画像を取っているケースなどに有効)。等々。

WebP は pod で SDWebImage/WebP で取得できる。サーバーが大変。嬉しいことに、docker を用意して公開している。

AsyncDisplayKit と仮想 View について (Glee, 矢口)

大原則は「やることを減らす」。通信コストの削減。サーバーに処理を任せるのも手。API 共通化・REST にこだわらないのも良い。

WatchKit を実際にさわってみてわかったこと (フリーランス, 堤)

WatchKit 初見は意外と出来ない子。よく見てみると、それほど悪くもない。

animatedImage は、アニメーション用画像を配列で渡すとパラパラ漫画風アニメーションを実現。

話変わるけど、来月「iOS x BLE プログラミング 〜Core Bluetooth 徹底解説〜」という上を発売予定。Amazon では、まだヒットせず。

長生きするために心臓に悪いリリースはもうやめよう (Cookpad, 所)

Internal Testers はリリース・ビルドのアプリを審査前に小人数でテストできるので使おう。25 人、iOS 8 でしか使えないという弱点あり。

エンジニア戦記 〜 小さなチーム 大きな未来 〜 (クラスメソッド, 平井)

WebAPI の作成が難しい。iOS エンジニアも WebAPI の知識が必要。サーバー・エンジニアも分かってくれる。「1 Screen, 1 API call」。WebAPI を iOS エンジニアが分かってないと、炎上すよ。

まだ iOS でリッチな演出に消耗しているの? (カヤック, 布田)

アニメーションには iOS 7 から使えるようになった 2D ゲーム・フレームワーク SpriteKit が便利。あまり知られてないけど、UIView との親和性も高い。(0,0) の位置が UIView は左上なのに対して SKView は左下なので注意。軽いとはいわないが、描画領域を小さくして部品化すれば、十分実用点。アニメーションの作成 (Particle) はコードじゃないので、デザイナーに作ってもらうことも出来る。

あとがき

メモで書きなぐったことをのせただけ。一部、質疑応答でのやりとりも入れてある。

何人かの発表者はスライドを、講演前に公開していた。スライドを自分のペースで見ながら (自分が読み終わらない内に先に進まれても、手元にスライドがあれば安心して話が聞ける)、必要なポイントだけメモが取れて良かった。自分が発表する時の参考にしよう。

2015-02-10

EmacsLisp でマクロを使う (初級編)

EmacsLisp のマクロは byte-compile することで、ソースコードに埋めこまれる。マクロは defun の代わりに defmacro を使って書く。シンプルなマクロは、関数を書くのと変わらない。一点注意するとしたら、マクロは使われる前に定義しておくこと。

マクロの特徴の一つに、byte-compile 時に式を評価できることが挙げられる。一例として deprecated (廃止された) 関数の呼び出しを書いてみる。

関数を使う

Emacs は進化とともに廃止される関数がある。ここでは interactive-p という関数を取り上げてみよう。この関数は、関数がコマンドとして呼ばれた時は t を返し、関数の中から呼ばれた時は nil を返す。しかし、Emacs 23.2 で called-interactively-p という関数に置き換わった。

古い Emacs でも動作を保証するために、関数 called-interactively-p が存在する時はこれを使い、存在しないなら古くからある interactive-p を使う関数 foo-called-interactively-p を作る。自作の EmacsLisp では called-interactively-pinteractive-p を直接呼ばず、 foo-called-interactively-p を使う。

(defun foo-called-interactively-p ()
  (cond
   ((fboundp 'called-interactively-p) (called-interactively-p 'any))
   (t (interactive-p))))

この関数には気に入らない点が二つある。

  1. Emacs 23.2 以降でソースコードを byte-compile すると、 interactive-p は deprecated だと警告が出る
  2. foo-called-interactively-p を呼び出す度に、関数 called-interactively-p が存在するかチェックする

マクロを使う

foo-called-interactively-p をマクロで書き直してみる。マクロを使うと、byte-compile 時に評価が出来るので、 called-interactively-p が存在するか否かのチェックは byte-compile 時に行なえる。

また、マクロによって展開されたコードに (Emacs が 23.2 以降なら) interactive-p は含まれていないので、警告も出ない。Emacs の byte-compiler が出す「本当の警告」に集中することができる。

マクロを使って書き直したコードは次のようになる:

(defmacro foo-called-interactively-p ()
  (cond
   ((fboundp 'called-interactively-p) '(called-interactively-p 'any))
   (t '(interactive-p))))

byte-compile 時に評価するコードはそのまま書いて、残すコードを quote している。

試しに macroexpand を使って、このマクロを展開してみる (Emacs 24.4 にて評価)。結果は次の通り:

(macroexpand '(foo-called-interactively-p))
-> (called-interactively-p (quote any))

called-interactively-p を使うコードだけが残った。

あとがき

EmacsLisp では、C 言語より高度なマクロを書くことができる。使いすぎは毒だけど、適度に使えばとても便利。バッククォートと組み合わせると、更に便利になる。何か良い例題があったら中級編も書いてみたい。

ちなみに、今回紹介したコードは fcopy.el で使っている。

2015-02-05

Github で fork したリポジトリーをオリジナル・リポジトリーに同期させる

Github で milkypostman/melpa を fork して ataka/melpa を作った。

Pull Request を作って、本家にマージしてもらった。それから数か月経った。また Pull Request を作ろうと思った。ところが、ローカル・リポジトリーは最新じゃない。リモート・リポジトリーを pull しても意味がない。何故なら、リモート先はオリジナルのリポジトリーじゃなくて、ぼくが Fork したリポジトリーだから。Fork したリポジトリーをオリジナルに同期させなきゃいけない。

サイトを探したら、英語の説明があった。自分用メモとして訳しておく。

$ git remote add upstream git@github.com:milkypostman/melpa.git
$ git fetch upstream
$ git checkout master
$ git rebase upstream/master
$ git push origin master

upstream リモートを作って fetch。master ブランチで upstream/master を rebase。最後に push で Github に反映させる。以上。