NicoNicoViewer #11


どうも、mrtskaです。

久しぶりのNicoNicoViewer記事です。

皆さんもご存知だとは思いますが、現行のbeta 0.943、いろいろとお粗末な感じになっていて申し訳無さしかないです・・・

いや~、自分でも動画を見る時にこのbeta 0.943を使っていますが作っている本人の私も「これはひどい」と。

今日までたくさんの不具合報告などのコメントを頂いてそれを元に少しずつ直していこうと思っていたのですが・・・

あまりにアチコチで不具合が出ていたので、「これ・・・1から作り直したほうが良いのでは・・・?」と思いはじめました。

もともとNicoNicoViewerは私がWPFの勉強をするためにじゃあ何作ろうかと考えたところ、ニコニコを見るやつを作りたいと思ったのがきっかけです。

当然現行のNicoNicoViewerには当時のコードが結構残っています。

今見たら「なんだこのクソコードは」と吐き捨てたくなるようなものです。

勉強がメイン(今でも)なのでそのクソコードも勉強には必要ではあったのですが、今はもう必要ありません。

じゃあそのクソコードを書き換えればいいじゃないかと思うのですが、

もともと書いてあるコードを見ながら新しく書き直すというのは結構難しく、結局似たようなクソコードが出来上がってしまうのです。(経験談)

だったら1から作ったほうがクソコードはリプレース出来るし頂いた不具合報告を見ながら作っていけば良いものが出来るのでは? と。

 

というわけで現在私はNicoNicoViewer 2nd Generaion(仮称)を作っています。

Twitterでは少し画像を上げたりしていますが、いろいろと一新するつもりで作っています。

今まではマンスリーで更新できれば良いなと思っていましたが今回はちょっと無理そうです。

前回はこのマンスリー目標が目前で勝手に焦ってたのが悪かったですね。

急ぐとクォリティは落ちるのが良くわかりました。

 

 

次回の更新日は全くの未定ではありますけど開発はしてます。

まだGitHubにプッシュしてませんが。

ここのところ休みは9割くらいNicoNicoViewerに時間を割いてます。

私が使いたいからですね。私が使わなくなったらとっくに開発も止まってると思います。

 

2nd Genは完成度が高くなるように丁寧に作っていますので時間はかかりますが良いものが出来るんじゃないかなと思います。

 

あと。

 

このブログへ沢山のコメントがついて嬉しい限りなのですが、中には私が見て気分が悪くなるようなコメントもちょくちょくあります。

だいたいそういうコメントをする人って名前の所に「匿名」と入れている人なんですよね。

名前を匿名にされると同じ人のコメントでも別の人かと思ってしまいますし匿名を良いことに好き放題書く人も少なからずいるようです。悲しいことですが。

 

今まで名前のところを匿名と書いていた方、別に本名を書けと言っている訳ではありません。

適当なハンドルネームで構いません。メールアドレスもテキトー又はブランクで構いませんので匿名以外にしませんか。

今後名前が匿名の人のコメントは自動的にゴミ箱行きにする処理を追加する可能性もありますので。

(まあ匿名と言っても2chと違ってIPバレてますからあんまり匿名感無いですけどね)

 

NicoNicoViewerの2chスレがあるのは知っていますが私は書き込む気は一切ないのでよろしくお願いいたします。見てはいますけどね。

そもそも2chじゃ私の書き込みと証明できないですし。

 

話がバラバラで読みづらい感じになってしまいましたが、書きたいことは書きました。

2nd Genでは内部構造を大幅に変更する予定なのでおそらく現行のバージョンの自動アップデート機能ではアップデート出来ない可能性が高いのでリリースができ次第Viewer内更新履歴を書き換えたいと思います。

では、長くなってきましたのでこの辺で。

次回の更新日は未定ですがいつか良いものが出来るようにしたいと思います。

 

ではでは。

 

 

カテゴリー: NicoNicoViewer, WPF | コメントする

NicoNicoViewer #10


どうも、mrtskaです。

 

beta 0.92を公開して少し経ちましたが、なんとか動いている感じですかね。

最近ニコニコが100MB以上の動画を上げられるなどと脱Flashを進めていますが、NicoNicoViewerはPC版ニコニコが脱Flashを終えたらhtml5化しようかなと思っています。(思ってるだけです)

 

今回のアップデートでは下記の通り。

  • WebViewのタブ化
  • 各種ページにコンテキストメニューを追加
  • コメントコマンドのNG機能
  • バグ修正

ですかね。

beta 0.91にニコ生のガバガバプロトタイプが開けてしまう不具合があったりなどなかなか酷かったですが、今でもバグはちらほらありますね。

 

WebViewのタブ化ですが、結局Chromiumは使わずWPFのWebBrowserで実装しました。

1471966876006

ただ、IEのコンポーネントを使っていてUIスレッドでしかWebBrowserを操作できないのでタブを閉じる際に時間がかかるとNicoNicoViewer全体がフリーズしてしまうことがあるかもしれません。

さすがにこればっかりは私にはどうにも出来ないのでWebViewは程々に使いましょうと言っておきます。

 

各種コンテキストメニューの追加については、ニコレポやランキングなどの検索結果を右クリックすれば分かると思います。

コンテキストメニューの中身も今後増やしていきたいと思っています。

 

あとはコメントコマンドをNGフィルターに登録できるようになったのとその他バグ修正ですね。

バグ修正の内容は更新履歴を見ていただくとして。

 

今後ですが、とりあえずは新規機能追加はほどほどにバグ修正、コードのリファクタリングを進めていきたいと思っています。

検索周りがガバガバなのもなんとかしないとですし。

ちなみにニコ生を正式実装するまでbetaは取れません。

NicoNicoViewer 1.0になったらきっとニコ生も見れるようになってるはず。

 

余談ですが、テスターの秋雨さんがNicoNicoViewerの説明書を書いてくれました。

NicoNicoViewerのコマンドと設定項目まとめ – Akisame’s Diary

 

今後解説などはViewer内で完結するようにしたいと思っています。

 

ではでは。

 

 

 

 

カテゴリー: 未分類 | コメントする

NicoNicoViewer #9


どうも、mrtskaです。

 

beta 0.9をリリースしてからだいぶ経ってしまいましたが今更0.9のいろいろを書こうかなと。

 

今回のアップデートの一番の機能はNGフィルターですかね。

1468846294304

コメントを指定したフィルターで弾くことが出来ます。

ここに指定されたフィルターに引っかかったコメントは一覧にも表示されません。

私は特に使ってないですが需要はあるみたいですね。

赤文字NGなどは実装してませんがあったほうが絶対良いですよね。次回実装できるかな。

 

ランキングを独自UIにしました。

これは便利なのかな?私はそもそもランキングを見ないのでなんともいえませんが。

1468846100773

でもなかなかいい感じに出来たと思ってます。

見たくないカテゴリのランキングは設定で消せますし。

1468847671290

このUI作るの大変でした。

ひたすらチェックボックスを作る作業はさすがに辛いものがありましたね。

 

後はWebViewが追加されたり修了時のダイアログが出たり(設定で消せます)など。

バックエンドでは設定ファイルの置き場所が変わって%APPDATA%\SRNicoNico\user.settingsにあります。

中身はただのJsonですけどね。

 

次回はWebViewをなんとかしたりコンテキストメニュー(右クリックのアレ)を増やしたりしたいとおもってますがWebViewがちょっと問題ありで考え中です。

前々から言ってましたがWPFのWebBrowserはクソ!!!!!!!!!!!!!と。

中途半端なんですよね。ほんと。

ページ移動しても移動したというイベントが飛んできたり飛んでこなかったり。

 

なのでやっぱりChromiumを使おうかなと。

そのほうがいろいろ捗ると思いますし。

ということで次回のアップデートbeta 0.91はChromium導入になるかもです。

サイズがかなり大きくなるけど致し方ないですね。

 

それでは今回はこの辺で。

次回は9月に入る頃を目標に・・・

 

 

ではでは。

 

 

カテゴリー: C#, NicoNicoViewer, WPF | 6件のコメント

デレステイベントのまとめページを作った


どうも、mrtskaです。

 

勉強がてらこんなページを作ってみたのですがUIは見た目は置いておいていい勉強になりました。

https://mrtska.net/deresute/slstageevent

 

前は固定ページにどんどん書いていたのですがどんどん長くなる上に一度ページをロードするのに40MB近く通信が発生しちゃうんですよね。

PCならまあいいかもですけど従量制課金接続のモバイルネットワークとかでやったら困っちゃいます。

友人氏からはイベント事にページ分ければいいのではと言われたのですがそれだと30投稿近くしないといけなくなるしNicoNicoViewer関連の投稿も埋もれそうな気がしてなんかなーと思っていたのです。

 

ここからはわりと技術系な話。

最初はPHPでapi的な物を作って書こうとしたのですがPHPを見たことはあったけど書いたことはなかった私にとっては苦痛でしかなく特に配列関連の訳ワカメな仕様と格闘して10分。

別の方法を探そうと。

 

そして見つけたのがASP.NET Core。

 

なんとこれLinuxでも動いちゃうという。

若干チート感が拭えませんが勉強がてら使ってみることに。

 

Visual Studioでプロジェクトを作ってC#を書いてサーバーにアップロードしてdotnet runするだけでOKとかいうやっぱりチートなものでした。

インストールさえ終わってしまえばさほど敷居も高くないのでとても良かったですね。

将来何か作るときに使うかなと。

 

カテゴリー: ASP.NET, C# | 2件のコメント

NicoNicoViewer #8


どうも、mrtskaです。

前回の#7から4ヶ月も経ってしまいましたがなんとか更新は続いています。

やっとの思いでNicoNicoViewer beta 0.8をリリースしたわけですが、ユーザー数がかなり増えてきて嬉しい限りです。

今回のbeta 0.8ではやっつけでランキングを実装しましたがホントに表示しただけなんですよね・・・

1465486639628

独自のUIとかも考えましたがランキングを全く使わない私にはどんなUIが使いやすいのか全く分からず断念。

本当はNG機能も0.8で付けたかったのですが、起動しない不具合の修正があったので0.9に持ち越しにしました。

4ヶ月間でマイナーアップデートを重ねてきましたがUI的には全然マイナーアップデートじゃないんですよね。

コメント欄とか出てきましたし。

いつになったらbetaじゃなくなるのかよく分かりませんが正式版ではニコ生にもちゃんと対応したいですね。

まあ、今はbeta 0.9に向けてNG機能などを頑張って実装したいと思います。

 

ではでは。

カテゴリー: C#, NicoNicoViewer, WPF | 2件のコメント

1.9でICustomModelLoaderを使い独自のモデルを追加する


初めてのMinecraft Modding記事です。

この記事に書いてあることが全て正しいとは限りません。今後のアップデートで変わる可能性もあります。

ICustomModelLoaderは私が斜面MODを作る時にJsonファイルを作りたくないがために使用したものです。

やりたいことによってJsonと使い分けられればいいなと思います。

 

まずはICustomModelLoaderを実装するクラスを作る。

〇〇ModelLoaderとか〇〇Loaderとかの方がいいですかね。

唯一必要なblockstateのJsonを作ります。

 

ハマリポイント①の解説。

acceptsメソッドはこのモデルローダーで処理出来るモデルかどうかを判定するわけですがMODIDが自分のものだったらすぐにtrueを返して良いわけではありません。

このacceptsメソッドのmodelLocationはさまざまな形で呼ばれます。このacceptsメソッドでtrueを返して良いのは今回の場合では.modelで終わっているmodelLocation.getResourcePath()でしか返してはいけません。

具体的にはどのようなmodelLocationでacceptsメソッドが呼ばれるのとかというと、

・cornerblock

・models/block/cornerblock.model

・models/item/cornerblock

などです。.modelで終わっていない文字でtrueを返してしまうと面倒くさい処理をバニラに丸投げ出来なくなってしまうので注意。

 

ICustomModelLoaderを登録する。

ちらほらCoreなんてクラスが出て来てますがお察しの通り@Modがあるクラスです。

クラス宣言などは省略。

 

IModelを実装する

まずはサンプルを。

 

bakeメソッドでモデルを形成する感じです。このクラスにモデルの頂点データとかを持たせておくと便利かもしれない。

で、BakedSampleModelはテクスチャも頂点情報も揃ったモデルってことですかね。

 

getQuadsで適切なList<BakedQuad>を返せばブロック、アイテム共にいい感じに描画されるんじゃないかなと。

BakedQuadについてはmodding wikiの1.8のICustomModelLoader利用のgetFaceQuadsメソッドを見てください。

 

最後に

随分雑になってしまいましたが1.9の斜面MODのソースがgithubにあるので参考になるかは分かりませんが良かったらどうぞ。

 

ではでは。

余談

・1.9で草ブロックみたいなことをする方法

 

これをpostInitあたりでやると良いっぽい。CornerBlock.instanceは自分のMODのブロックに読み替える。

カテゴリー: Java, Minecraft | コメントする

NicoNicoViewer #7


どうも、mrtskaです。

前回の#6から2ヶ月も経ってしまいました。

ニコニコを見るソフトを作りたいと思ってから1年が経ちました。

1年前は思っていただけですが今では割といい感じに出来ているのではないかなと思ったりしていろいろと感慨深いです。

2ヶ月も空いたというのもあると思いますがbeta0.6のダウンロード数が2月22日時点で443回と割と使っている人はいるんじゃないかなと思ったりしています。

 

さて、今回のアップデートbeta 0.7で結構な更新がありました。

大きな更新として以下の4つ。

  • ウィンドウフルスクリーン
  • コメント投稿&装飾
  • マイリスト連続再生
  • コミュニティ表示

ですかね。他にもコメントを薄くしたりサイズを小さくしたりNG共有レベルに対応したりバグ修正など細かいものはあります。

 

1456074684164

ウィンドウフルスクリーンです。前々から欲しいと言われていた機能の一つです。

私は動画を見る時はだいたいフルスクリーンで鑑賞するのでほとんど使わないと思いますが案外楽に実装できたのでまあ良しとします。

まあ見ての通りUIパーツの使い回しですしおすし。

設定項目でウィンドウフルスクリーンを使うにチェックを入れると使えるようになります。

 

1456075601047

次はコメント投稿&装飾です。

ニコニコと言えばコメントですから早々に実装したいと思っていました。

どうせ実装するなら装飾も出来るようにしたいなということでコメントデコレーターも作成。このコメントデコレーターのUIは結構気に入ってたりします。

Enterキーでもコメント投稿のポップアップは出ます。

 

1456074712746

次はマイリスト連続再生。

公開マイリストからも連続再生出来ます。

これも前から要望が多かった機能ですね。やっつけ感があるのは気のせいだと思いたいです。はい。

Nキーで次の動画、Pキーで前の動画に飛べます。フルスクリーン時でもちゃんと飛べます。

 

1456074734003

最後はコミュニティ表示。ホントに表示機能しか無いです。今のところは。

 

あと今回のアップデートでアップデーターを搭載しました。

次回以降のアップデートではボタン一つで簡単にアップデート出来ると思います。

回線によるとは思いますがテストでは数秒でアップデートは終わりました。

ちゃんと機能するといいな。

 

次回以降のアップデートではそろそろ生放送関連に手を出していきたいと思っています。

 

ではでは!

 

カテゴリー: NicoNicoViewer, WPF | コメントする

Visual Studioでデバッグ中にRuntimeBinderExceptionが出てくる件


タイトル通りです。

Visual StudioでC#のdynamic型を扱っている時に大量にこの例外がスローされるようになりました。

1452171692402

軽くトラウマです・・・

 

VS2013の時も全く同じ現象が起きてその後にVS2015にしたら出なくなったのでそっち系の問題だったのかなと思っていたのですが、そうではないみたいで。

 

で、調べていたらこんなツイートを発見しました。

設定のデバッグの中にあるマイコードのみのチェックを外せば良いみたい?

1452254554674

ところが私の場合チェックが入っていなかったので試しにチェックを入れてみたところ綺麗さっぱり出なくなりました。

 

なんだったんだろうね。

何かの拍子にこのチェックが外れたんでしょうが、思い当たる節は実はあったり。

Releaseビルドの時にVisualStudioでデバッグするとマイコードのみ云々のダイアログが出ることがあります。

多分その辺テキトーにポチポチした時になったんじゃないかなぁと。

 

 

調べてもなかなか見つからなくて苦労したので一応記事にしようかと。

 

ではでは。

カテゴリー: C#, WPF | コメントする

NicoNicoViewer #6


どうも、mrtskaです。

前回のbeta 0.5から1ヶ月もかかってしまいましたが、私は生きてます。

今回は公開マイリストUIと動画UIの改修、実装がメインのアップデートでした。

1450955947909

(表示されている内容は宣伝などではなくあくまで表示の一例です)

 

公開マイリストのUIはこんな感じ。パーツを流用した感がとてもあり(ry

とは言え簡単にパーツの流用が出来るのもWPFの強みですかね。

 

動画UIは投稿者の表示、フルスクリーン時にシークバーを隠すなどの処理を実装しました。

フルスクリーンで上のシークバーが気になっていた方にはうれしいアプデかもしれません。

1450976990940

 

右下のスペースは何に使おうか今のところ考え中です。

何に使うかなぁ・・・

 

というわけで次回のアプデはいつになるか分かりませんが少しずつ生放送関連にも手を出していきたいと思っています。

 

 

ではでは。

 

カテゴリー: 未分類 | 2件のコメント

NicoNicoViewer #5


どうも、mrtskaです。

 

先日NicoNicoViewer beta 0.5をリリースしました。 続きを読む

カテゴリー: 未分類 | 1件のコメント