PressSync、開発に際しての拘りポイント(OS標準のUndoManagerを壊さない)

これは5年前にWindows Mobile向けにHatenaSyncを作った時から意識していた事でした。

UndoManagerとは文字通りUndo(元に戻す)、Redo(やり直し)を司る、おおよそ普通のOSには備わっている機能です。

iOSの場合、直近の文字入力を取り消したい場合、iPhoneをシェイクすると出てくるあれです。





ハードウェアキーボード利用時は、Ctrl+Z、Ctrl+Shift+ZでUndo、Redoを呼び出せます。

何も考えずにテキストエディタ系のアプリを作ると、何かの機能を呼び出した瞬間にUndoManagerの履歴が消えて、そこから過去に辿れなくなったりするのですが、HatenaSyncシリーズやPressSyncはどのような操作を行っても過去の状態に戻れるように意識して作っています。

ただ、ひょっとしたらバグはあるかもしれない^^;

とは言ってもたいそうな事はしていなくて、壊さないように気をつけているだけですね。

via PressSync

PressSync、開発に際しての拘りポイント(複数ユーザー、権限の考慮)

wordpressは個人ブログとしても使える汎用的なブログアプリケーションだと思うのですが、本来的には複数人のそれぞれの役割を持ったグループで利用した時に更に真価を発揮するのだと私は考えています。

というわけでPressSyncはマルチブログ対応をうたっていますが、実際はマルチアカウントに対応しています。結果的にマルチブログに対応しているわけですが。

友達のブログに寄稿者として投稿する場合、あるいは寄稿者の投稿を編集者として公開する場合なども、違和感なく使えるようになっていると思います。

via PressSync

AppLinkMaker PHG サンプルフォーマット

PHGのアフィリエイトリンクはアプリリンクの末尾に「&=YourAffiliateID」とするだけのようですので非常にシンプルなURLになります。

以下のサンプルフォーマットのポイントとしては、 1、2行めになります。
YourAffiliateIDの箇所に、あなたのアフィリエイトIDを設定してご利用ください。
次期リリース版のPressSyncにPHGリンク作成機能を実装する予定です。

<logic:define key="AppLink">[trackViewUrl]&at=YourAffiliateID</logic:define>
<logic:define key="SellerLink">[artistViewUrl]&at=YourAffiliateID</logic:define>
<logic:define key="starTagFull"><img src="[ratingStarUrlFull]"/></logic:define>
<logic:define key="starTagHalf"><img src="[ratingStarUrlHalf]"/></logic:define>
<logic:define key="starTagGhost"></logic:define>
<logic:define key="starTagSeparator"> </logic:define>
<logic:format key="releaseDate">yyyy年MM月dd日</logic:format>
<logic:format key="generatedAt">yyyy年MM月dd日</logic:format>
<logic:format key="fileSizeBytes" coefficient="0.00000095">N1</logic:format>
<div class="aslm-itslink" style="margin-bottom:1em;"><a href="[APPLINK]" rel="nofollow" target="_blank">
<img src="[artworkUrl60]" class="appImage" 
style="border-style:none;float:left;-moz-border-radius:10px; -opera-border-radius:10px; -webkit-border-radius:10px; border-radius:10px;box-shadow: 1px 4px 6px 1px #999;margin-left: 6px;margin-right:6px;margin-bottom: 10px;" 
alt="[trackName]" title="[trackName]" /></a>
<div class="aslm-itslinktext" style="float:left;"><a href="[APPLINK]" rel="nofollow" target="_blank">[trackName]</a><br/>
バージョン: [version]<br/>
販売元: <a rel="nofollow" target="_blank" href="[SELLERLINK]">[sellerName]</a><br/>
リリース日: [releaseDate]<br/>
カテゴリ: <logic:iterate key="genres" Separator  =", ">[genres[]]</logic:iterate><br/>
<logic:greaterEqual key="userRatingCount" compareValue="5">
評価: [averageUserRatingByStars] ([userRatingCount] votes)<br/>
</logic:greaterEqual>
サイズ: [fileSizeBytes] MB<br/>
価格: [formattedPrice] <a href="[APPLINK]" rel="nofollow" target="_blank">
<img src="[badgeAppStoreUrlSmall]" style="border-style:none;" /></a><br/>
<logic:contains key="features" compareValue="gameCenter">
<img width="100" src="[gameCenterUrl]"><br/>
</logic:contains>
<logic:contains key="features" compareValue="iosUniversal"><div class="universalImage"></div> iPhone と iPad の両方に対応しています。<br/></logic:contains>
<span style="font-size:xx-small;">generated by <a href="[PressSync]" target="_blank">PressSync</a> on [generatedAt]</span>
</div><br style="clear:left;" /></div> 

PressSync次期バージョンの修正内容予告

任意言語の選択機能




OSの設定を無視してアプリの言語を変更出来ます。

文字列の検索、置換機能の追加

タイトルの通りの機能です。この機能を呼び出すとキーボードの上のツールバーのボタンが検索用に置き換わります。

スワイプカーソル移動の拡張




今までは、テキストボックス、ツールバーの上でスワイプ操作を行うと一文字ずつカーソル移動する仕様だったのですが、ツールバーの上でスワイプした場合は、行頭、行末に移動する仕様に変更しました。

via PressSync

PressSyncに「はてなブックマークに追加」URL Actionを登録する

セルクマと呼ばれるものらしく、賛否が別れる行為のようですが、PressSyncはこんな事も出来るよという機能のご紹介という事で。




hatenabookmark:/entry?url=[link]&title=[post_title]&backurl=presssync%3a%2f&backtitle=PressSync

formatは空で登録して下さい。

呼び出すと↓こんな感じになります。


iHatenaSync次期バージョン予告

先ほど申請しました。

カスタムタグのスニペットによる呼び出し。

囲みたい箇所を選択状態にしてスニペットを入力します。囲まなくても問題ないですが例として。

こんな感じになります。





この機能はPressSyncから逆輸入したのですが、PressSyncほどちゃんと作っていません。2個以上のパラメータを持つカスタムタグをスニペットで呼び出すと、二個目以降のパラメータは必ず空白が入ります。

スワイプによるカーソル移動

掲題の通りです。ちなみにツールバー上でスワイプしてもカーソル移動になります。

via PressSync

PressSync、iHatenaSync開発に際しての拘りポイント(ランドスケープモード)

PressSyncは多機能なブログエディタだと評価頂いており開発者としてはとても嬉しい限りです。


多機能と呼ばれる飛び道具的な機能以外にも、基本的な作りこみで大きな開発コストをかけていたりして、そういう部分は開発者自身がフィーチャーしないと埋もれそうな気がしたので今後このネタでちょくちょくエントリーしたいと思います。

ランドスケープモード

PressSyncは全画面が全方位に回転出来るように作っています。

おそらくiPhone、iPod Touchで使う場合、殆どの場合は回転させずに使った方が便利だと思うのですが、Bluetoothキーボードケース的なアイテムを使った場合は横モードが必須なので画面回転にも対応しました。





私は数年前までQWERTYキーボード信者だったので、この対応は設計段階から必須だと考えていました。


結果的にこの対応を入れたお陰でUniversal対応(iPad)も労せず行えました。

ただ最近では私自身がiPhoneの操作に慣れてきて、ハードキーボードは不要かな?と思ってきています。

ハードキーボードが無い状態であっても画面を横に向けるとキーボード面積が広大になり両手でホールドした状態での親指入力がかなり快適なのです。





反面、文字の入力領域が狭くなるのでPressSyncではツールバーを縦の時より細くするといった対応を行っています。
(それでもまだ狭いのでランドスケープの時は一番上のツールバーも消そうかな?と悩んでる所です。)

iPhone、iPodの場合、写真選択Viewが標準のものを使っており、ここだけはどうしても縦で表示されてしまうので、今後なんとかしたいなぁと思っているポイントですね。

iOSにも横の時だけキーボードをQWERTYにするなどといった文字入力に関する細やかな設定があれば、iPhoneで長文を打とうという人口ももうちょっと増えそうな気はするんですが。

via PressSync

PressSync次期バージョンの更新内容

一部環境でプレビューを行えない問題を修正しました

一覧の処理中画面のマスクを修正しました



現状、処理中画面の時にタブの切り替えができてしまいます。出来なくしました。

ダッシュボードを呼び出せるようにしました




アカウント設定画面より呼び出せるようにしました。

メディア一覧のアクションシートを整理しました


メニューが増えてかなりごちゃごちゃしてきたので「ブラウザで開く」を集約して階層化しました。

via PressSync

PressSync Version 1.1.0リリース

投稿編集画面(入力支援)から、カスタム入力支援の新規登録及び編集を行えるようにしました

投稿編集画面(投稿オプション)から、タグの新規登録を行えるようにしました

エクスポート機能(URLスキーム)のサポート

システム設定画面より追加を行います。


デフォルトのURLは、自身に新規投稿モードでインポートするURLスキームになっています。
(このURLスキームをそのまま実行すると、既存のエントリーをコピーして新規投稿画面を開くという動作になります)




Formatにはこちらの投稿構造体のフィールド(stringのみ)が指定可能です。
必要に応じて、適宜変更して下さい。

登録したURL Actionは一覧画面より呼び出し可能です。


via PressSync

Tabelog2HTMLメーカーでPressSync用のブックマークレットを作成

このブログで…というか、はてなダイアリー時代から、飲食店のエントリーを書く際に@feelingplaceさん開発の「Tabelog2HTML」というブックマークレットを利用させてもらっています。

Tabelog2HTMLメーカー

実は、このブックマークレットを呼び出す場合、私は「するぷろーら」というアプリを使っていたのですが、食べログの方の仕様が変わったのか、動作しなくなっているようでした。

TLでTabelog2HTMLメーカーを修正されたという情報を見かけて、早速サイトに飛んで見たのですが、なんと!PressSyncにも対応して下さってる!ありがたや〜。


使い方はとても簡単で、食べログのお店のページをSafariで開いた状態で、登録したブックマークレットを呼び出すだけです。


数秒でブックマークレットがタグを構築してくれて、PressSyncにテキストを渡してくれます。


うーん、便利です。


PressSync作者としても、ブックマークレット利用者の一人としても、感謝するしかありませんw

via PressSync