-オープンソースのSNSエンジン OpenPNEプロジェクト-

開発情報

Home

月刊HOUOU2月号ができました

02 / 29 水曜日 2012

OpenPNEの開発成果を手軽に体感してもらう月刊HOUOU、2月号が完成しました。

ZIPファイルで公開しています。デモサイトも用意しました。

HOUOU2月号デモサイト

http://houou02.cqc.jpです。

ぜひスマートフォンからアクセスしてみてください。

HOUOU2月号のZIPファイルはこちらです。
HOUOU_FEBRUARY.zip

2月号の見どころ

見どころその1:メッセージプラグインをスマートフォン対応

スマートフォンから、メッセージ機能を使えるようになりました。UIも大幅に改善しています。

見どころその2:スマートフォンからメンバー検索、フレンド検索

4×4の一覧画像から直接絞込み検索ができます!

見どころその3:通知センターの通知項目に(メッセージ、フレンド申請)を追加

メッセージ到着の通知が通知センターに表示されます。
フレンド申請の応対を通知センター画面から行えるようになりました。

見どころその4:PC表示、スマートフォン表示切り替えに対応

メニューからスマートフォン、PC表示を切り替えることができます。

見どころその5:bootstrap2.0に更新

最新のBootstrap2.0に更新しました。
画像アイコン、「今何している?」の文字の部分などが改善しています。

これからのOpenPNE

今後はリリースに向けて、以下の作業を行っていきます。

・OpenPNE開発版3.7系のリリース
・UI不具合の改善
・スマートフォンデザインテーマの作成
・PC新デザインテーマの作成
・動作テスト
・QAプロセス通過

説明文章やスクリーンショット画像は、後ほど追加しておきます。
まずは、デモサイトにスマートフォンからアクセスして、試してみてください!
デモサイト:http://houou02.cqc.jp

先週のHOUOU 2012/02/20版

02 / 21 火曜日 2012

OpenPNE3.7開発シリーズ(HOUOU)の一週間の進捗状況を分かりやすくお伝えします。

HOUOUレポジトリのソースを本線にマージ

HOUOUでは通常開発に使っている、http://github.com/openpne/OpenPNE3ではなく、http://github.com/houou/HOUOU を使っていました。

HOUOUの開発チームはスマートフォンという未知の領域の研究を行うために、レポジトリを分けてこれまでやってきました。
※開発に不慣れだという点もあります。

研究がほぼ一段落ついたので、HOUOUレポジトリの役割は終わりました。
これら開発ソースの成果の大部分を、OpenPNEの本線にマージすることができました。

以後の開発プロセスはopenpneレポジトリを使い、従来のやり方で進めていきます。

OpenPNEの開発版バージョンである、3.7.1 3.7.2というバージョン番号を使って行きます。

なお、これらのリリースとは別にでも環境としての月刊HOUOUもあと2号分提供の予定です。

スマートフォンAPIの自動テスト手法が確立

HOUOUの最大の目玉であるスマートフォン対応、このバックエンド実装であるスマートフォンAPIのテストスタイルが確立しました。
symfonyのlimeを使った単体テストを書き、品質向上を行います。

テストはコミットごとにTravis-ciで自動的に検証される仕掛けになっています。
TravisのサイトでOpenPNEのテストがかかっていたら、オールグリーンになることを祈っていてください。

プラグインの自動テストも可能に

また、OpenPNEに提供されるプラグインも単独でTravis CIでのテストが行えるような機構を作りました。
opSheet2ProfilePlugin などで検証を進めています。

基本レイアウトの単体テスト

スマートフォンでは、LOGIN、HOME、MEMBER、COMMUNITY、SNSという5つの基本レイアウトが有ります。
これらの基本レイアウトが単体での動作確認を行います。
テスト手法の詳細については、手嶋のブログで解説しています。

これらの基本レイアウトの中に、メッセージやフレンドリスト、タイムラインなどの個々の機能のガジェットを配置して、
全体のUIを表現します。

ガジェットをひとつも積んでいない素の状態のレイアウト単体のテストを行えるようにします。
※これを単体テストというのかがわかりませんが。。

スマートフォンのUIにはJavaScriptを多く含むため、symfonyのテスト戦略は使えません。
JavaScriptのテストにはQUnit + mockjaxがいいかな?なんて考えています。

※HEADLESS環境をつくるのがたいへんそうなので、Travis-ciでの実行はまだ先になりそうです。

個々のガジェットの単体テスト

ガジェットごとも動作テストを行いたいですが、まだ研究を始めたばかり、
レイアウトのテストと同じ手法を使うなら、ひとつのガジェットに対して、テスト用のガジェットが付属する、という形になります。
こちらは、3月の本格的なテストが始まる前までに、やり方を決めます。

テスト用の優れたデータをつくる

ソーシャルネットワークのテストはとても難しいです。
人間関係や情報の公開範囲、コミュニティの参加状態などを複雑に表現する必要があります。

これまでOpenPNE及びプラグインの開発で共通に使える、オフィシャルのテストデータというものが存在しませんでした。
品質向上のためにはなくてはならないのでデータをつくることにしました。

100人位のデータがいいだろうなということで、百人一首のデータを採用することにしました。
目下作成中です。ID1番は天智天皇です。自分の句をつぶやいています。天皇コミュニティに参加します。
全員とフレンドリンクです。

他にも、公家コミュニティや、親王同士はフレンドリンクなど、独自のルールを作りながら、ソーシャルグラフを形成していきます。
本当は源氏物語でやりたかったんですが、自分がよく知らないのと、人間関係が複雑でドロドロし過ぎじゃないか?ということでやめました。

その他のブログ記事

先週のHOUOUプロジェクト 2012/02/13版

02 / 13 月曜日 2012

OpenPNE開発版(HOUOU)。先週の進捗状況を共有します。

安定版リリースまでのスケジュール

HOUOUは3月末までに全開発を終了し、4月頭にOpenPNE3.8をリリースすることを目標に開発を進めています。
3月はまるまるテストや、ベータ版の進行に使おうと考えているため、新規の開発は2月末までに完了させます。
このスケジュールに収まるように、現在企画している新規機能の取捨選択を行います。

ざっくりとした段取りは

2月:最後の機能開発
3月:ベータ進行、テスト&修正、スピードアップ
4月:安定版リリース(4月のできるだけ早いうちにリリースしたい)

上記の行程で検討中です。

ふたつのプラグインをバンドル

2月中に追加で2つのプラグインのスマートフォン化を計画しています。

ひとつはメッセージボックス、もうひとつはまだ未定です。これはスケジュール次第というところ。

自動テストに

テストケースが完全ではないので、少しでも品質を高めるように努力します。

特にスマートフォン化で新規に作成した、スマートフォンAPI、クライアントJavaScript UIの部分は新規のテストが必要です。

スマートフォンAPIはsymfonyのユニットテストを中心にカバーする予定です。
クライアントJavaScript UI部分のテストは、まだ研究中です。

Travisという素敵なサービスがあるので、CIサーバはこれを使います。

その他の開発者ブログ

OpenPNE3.8リリースまでの段取りMTG
3.8まで後何が必要か?について

HOUOU databases.ymlは隠蔽できるのではないか?
databases.ymlが隠蔽しないと環境によっては危険ではないか?という考察

HOUOUスマートフォン対応の解説
スマートフォン対応の開発方法について

スマートフォン関連の自動テスト
スマートフォンAPI、JavaScript UIをどのように自動テストしていくか?

先週・今週のHOUOU

12 / 19 月曜日 2011

開発チームの柏木です。

先月にHOUOU_NOVEMBER(HOUOU11月号)をリリースしてからHOUOUの進捗具合の更新をほとんどしておりませんでしたが、

もうまもなくHOUOU_DECEMBER(HOUOU12月号)をリリースできる状態にまでなってきております。

手嶋屋ブログ(手嶋さん)

HOUOU12月号の方針

HOUOUガジェット作成のガイドライン【案】

HOUOU プロジェクトMTG 2011/12/01

HOUOU メモ、スピードアップにAPI、アクティビティに投稿欄消す

OpenPNEの拡張にはJavascri1pt+APIを使うようになる

HOUOU スマートフォン関連今日のメモ

HOUOU モックアップ UPDATE

通知センターを実装するアイデア

スマートフォンのアクションフロー その1

2011/12/08 HOUOU MTG

HOUOU OpenPNEのパラメーター名

HOUOU OpenPNEのテーブル事業仕分け

スマートフォンUI:Bootstrap

ハンバーガーレイアウト

スマートフォンAPIのデザイン案

HOUOU_DECEMBERの内容

APIを簡単にする方法

BeSocial.jp (柏木)

・HOUOU12月号 & ゴルゴンハニー 12月号の概要について

・【案】HOUOU 12月号 スマートフォン関連について (アクション・テンプレート・UI)

・12月のHOUOU

月刊HOUOU11月号が完成しました!

11 / 30 水曜日 2011

開発チームの柏木です。

OpenPNE3.7開発版(HOUOUプロジェクト)の第一弾として、月刊HOUOU11月号 (HOUOU_NOVEMBER) を配布します。

この月刊HOUOUは、OpenPNE3が今どのような変化を遂げているかを、手軽に確認していただくために、今後毎月月末に提供していきます。

サイト運営者の方々には、HOUOUプロジェクトの成果、最新機能をいち早く体験していただき、
使い勝手に対するフィードバックや、開発の方向性についてのアイデアをわれわれと共有していただきたいです。

また、HOUOU11月号のリリースと同時に柏木が開発を続けてきた、タイムライン機能を実現するopTimelinePlugin (開発コード「ゴルゴンハニー」)も、月刊HOUOUと同時に配布していきます

早速ダウンロード

・OpenPNE開発版 HOUOU 11月号 ダウンロードはこちら => http://www.tejimaya.com/downloads/2011/HOUOU_NOVEMBER.zip

・タイムライン機能(ゴルゴンハニー)ダウンロードはこちら => http://www.tejimaya.com/downloads/2011/opTimelinePlugin.zip

HOUOU 11月号 概要

最小限のプラグインでインストールが完了します

まずOpenPNEのプラグイン構成を見直し、デフォルトのバンドルプラグインを「opAuthMailAddressPlugin」のみに削減しました。

opAuthMailAddressPlugin だけをインストールさせることにより、OpenPNE3 のインストールが格段に速くなります。
インストールだけでなく、OpenPNE3 の画面表示速度も格段に速くなりました。(後述)

デフォルトガジェットレイアウトが最小限のものだけになりました

バンドルプラグインを1つだけにしたのと同時に、「日記一覧」や「お気に入り一覧」などのガジェットもすべて取っ払い、ホーム画面やメンバープロフィール画面の表示速度が格段に早くなりました。

【参考・裸になったOpenPNE3】

インタラクティブインストールを回避するオプションを追加しました

OpenPNE3 インストールと言うと、インタラクティブ形式でインストールタスクを進めていましたが、

HOUOU11月号からは、コマンド1つにデーターベース名やユーザー名、パスワードを指定することにより、

インタラクティブ形式をバイパスすることができるようになりました。 ( @77web さん提供)

prototype.jsを廃止しjQueryに変更しました

プラグイン開発者の頭を悩ませる要因の1つでもあった、「prototype.js」ですが、

HOUOU 11月号では、OpenPNE3からprototype.jsを取っ払い、完全にjQueryに移行させました。

HOUOU11月号では「シンプル」をテーマに開発を続けてきました。

次回の12号ではいよいよ「スマートフォン」をテーマに開発を続けていきます!

【HOUOUのインストール方法】

まず、上記URLから HOUOU_NOVEMBER.zip をダウンロード&展開します。

そして最初はいつものOpenPNE3と同じインストール手順を行います

$ cp config/ProjectConfiguration.class.php.sample config/ProjectConfiguration.class.php
$ cp config/OpenPNE.yml.sample config/OpenPNE.yml 
$ vi config/OpenPNE.yml

そしてここからがHOUOUの新しいインストール方法です。

$ ./symfony openpne:fast-install --dbms=mysql --dbuser=username --dbpassword=password --dbname=databasename --dbhost=localhost

このようにコマンドの引数にデーターベースの接続情報を指定してやるだけで、インタラクティブを回避することができました。
※本コマンドは openpne:install コマンドに統合する予定です。

opTimelinePlugin (ゴルゴンハニー) 概要

アクティビティをより進化させました

opTimelinePlugin(以下ゴルゴンハニー) では、今現在OpenPNE3 にあるアクティビティ機能をさらに強化させることを目的に作られたもので、且つ、このHOUOUプロジェクトのスマートフォン対応での重要な役割を担っています。

今のソーシャル・ネットワークに必要な機能の充実を目指しています。

アクティビティにコメントが付けられるようになりました

まず、自分のアクティビティの投稿にユーザーからコメントが付けられるようになりました。

アクティビティの念願のコメント機能が、このゴルゴンハニーにて実現いたしました。

リアルタイムでの更新がされるようになりました

アクティビティのタイムラインが30秒おきに自動更新されるようになりました。

今までは手動での更新が必要だったので、ブラウザを開けぱなしのまま、SNSメンバーの最新の情報を見ることができます。

コミュニティアクティビティ機能を実装しました

ゴルゴンハニーでは、コミュニティ内でのアクティビティというものを実装いたしました。

コミュニティ内でだけ話したいこと、つまり、コミュニティの中でひそひそ話をしたいというときに、

コミュニティ宛の投稿というものができるようになったので、コミュニティ内での会話というのが楽しめるようになりました。

スクリーンネームを設定できるようになりました

ゴルゴンハニーでは、Twitterと同じように、メンバーそれぞれにスクリーンネーム(@username)をOpenPNE3内に提供します。

スクリーンネームは、アクティビティの中でも使え、スクリーンネームの入った投稿をすると、そのスクリーンネームがメンバーのプロフィールとリンクされるようになります。

【裸になったOpenPNE3に…】

【ゴルゴンハニーを入れてみるだけでこうなる】

【ゴルゴンハニーのインストール方法】

まず、pluginsディレクトリにopTimelinePlugin.zip を展開します。

そしてあとはこのコマンドを叩くだけです。

$ ./symfony opTimelinePlugin:install

ゴルゴンハニーはこれからもどんどん成長していきます。温かく見守っていただければと思います。

サイト運営者の方にはぜひHOUOU11月号とゴルゴンハニーを試していただければと思います。

次回の12月号にご期待ください!

先週のHOUOUプロジェクト

11 / 22 火曜日 2011

先週分 (11/14 – 11/20) のブログ記事は次のとおりです。

手嶋屋ブログ (手嶋さん)

HOUOUシンプル化プロセス

HOUOU内部パラメータの命名規則

HOUOU一つ目の開発マイルストン

HOUOU:OpenPNEにも通知センターがほしいね

HOUOU開発ミーティングメモ

HOUOUのスマートフォン化はゴルゴンハニーが人柱になる

HOUOU SNSの活性度インジケーター

HOUOU情報更新

HOUOU ゴルゴンハニーのUI案

jQueryMobile1.0がリリースされた

OpenPNEの発展を示す指標

BeSocial.jp (柏木さん)

opTimelinePlugin(ゴルゴンハニー) preview版公開!

opTimelinePlugin(ゴルゴンハニー)のタスクリスト

今週のHOUOUプロジェクトについて

kim_upsilonの日記 (木村さん)

OpenPNE3.7の開発#1 (目標と現在)

先週のHOUOUプロジェクト

11 / 15 火曜日 2011

木村です。

OpenPNE3.7 (コードネーム: HOUOU) の開発が始まりました。現在の開発の状況をお知らせするため、毎週月曜日にこのブログで開発者のブログ記事を紹介していきます。

先週分 (11/11 – 11/13) のブログ記事は次のとおりです。

手嶋屋ブログ (手嶋さん)

2011/11/11のHOUOU
プロジェクトの準備や、どんな段取りで開発を進めているかについて。

HOUOUはオープン
TheApacheWayを参考にしたオープンな開発について。3名ともブログ日誌を共有する。

HOUOUのUI UXの研究
balsamiqを使ってHOUOUのUI研究をしている。

HOUOU 設定ファイルはゼロかひとつか
3つあるOpenPNEの設定ファイルはもっと減らせないか?

HOUOU キラープラグインはゴルゴンハニー
フルサクセス以上で提供されるプラグインをゴルゴンハニーと名付けた。

相手を感じるUX:どんなタイムラインがいい?
相手と対話、対面している雰囲気をどうつくるか?

HOUOU:フォロー=>購読 へ
Twitterでフォローが流行ったけど、フレンドリンクのままでいいかも。

コミュニティ=>グループ
コミュニティという表現は死語、方言になりつつあるのでは?

BeSocial.jp (柏木さん)

OpenPNE 3.7 「HOUOU」開発仕様について。【beta版】
HOUOU(次期OpenPNE)がどのようになるかについて説明しています。HOUOUの仕様や機能的説明が多いです。

OpenPNE3.7 HOUOU プロジェクトのgithubアカウントを作成しました。
HOUOU用のgithubのorganizationとレポジトリを作成しました。あくまでこのレポジトリは3人の練習用レポジトリで、いつかは本線にマージする予定です。

opTimelinePlugin進捗状況について。(2011年11月14日)
ゴルゴンハニーについて、1日でどのくらい開発が進んだかの報告。

管理人日記 2011年11月14日
HOUOUやゴルゴンハニーのちょっとした裏話を書いています。

※2011/11/15 手嶋追記

※2011/11/15  柏木追記

OpenPNE3.7(HOUOU)についてのブログ

11 / 11 金曜日 2011

手嶋です。

OpenPNE3.7(HOUOU)の開発シリーズは手嶋が指揮をとることになりました。
久しぶりの陣頭指揮になります。開発予算、仕様策定、リリースの責任者として活動します。

開発方針や目標などについては手嶋のブログに掲載してますので、参照してください。

OpenPNE3.7のコードネームは”HOUOU”
初の開発コードネーム設定。

OpenPNE3.7(HOUOU)のスケジュール
2012/03月リリース予定です。

HOUOU目玉要素1 シンプル
全プラグインを外した状態から開発スタート!

HOUOU目玉要素2 スピード
最低15%スピードアップします。

HOUOU目玉要素3 スマートフォン
ついにスマートフォン対応。AJAXアクション方式も採用。

HOUOU目玉要素番外編 キラープラグイン
タイムライン!タイムライン!タイムライン!

HOUOUのサクセスレベル
3つのサクセスレベル。ミニマム、フル、アドバンスド。

OpenPNE3.6beta11のORMを変更する実験をしました

11 / 08 火曜日 2011

OpenPNE3にある現状の課題の一つにパフォーマンスの問題があります。OpenPNE3がサーバーに要求するスペックはOpenPNE2よりも高く、OpenPNE3へのアップグレードを敬遠する理由の一つとなっています。そこで、もしOpenPNE3で使用しているDoctrine1を別のORMで置き換えるとどの程度パフォーマンスが改善されるかを実験しました。

環境

basho1 (芭蕉1 / Webサーバ)
Intel Core 2 Quad Q8400S 2.66GHz / 4GB Memory
CentOS 5.5
PHP 5.3.3 / APC 3.1.9 / XHProf 0.9.2
Apache 2.2.3
basho3 (芭蕉3 / DBサーバ)
Intel Core i5 i5-760 2.80GHz / 8GB Memory
CentOS 5.5
MySQL 5.1.53

詳細は http://d.hatena.ne.jp/openpne/20110823/1314078181 を参照して下さい。

比較したORM

  • Doctrine 1.2.4 (OpenPNE3標準)
  • Propel 1.6.2
  • php-activerecord 1.0
  • Doctrine 2.2.0-DEV

DBサーバにメンバーが380,000人登録されている状態で、検索クエリを設定していない状態の「メンバー検索」ページにてXHProfを使用して計測しました。

比較のために使用した修正版OpenPNE3のソースコードは下記URLから入手できます。

結果

処理時間

doctrine1 propel1.6 php-activerecord doctrine2
Total Incl. Wall Time (microsec) 885,274 457,233 477,260 383,231
Total Incl. CPU (microsec) 784,880 367,944 387,942 332,949

処理時間では Doctrine1 > php-activerecord > Propel > Doctrine2 の順となりました(短いほど良好)。グラフからも分かるとおりDoctrine1は圧倒的に時間が掛かっています。一方、それ以外のORMではあまり変わらない結果となりました。
処理速度の比較グラフ

メモリ使用量

doctrine1 propel1.6 php-activerecord doctrine2
Total Incl. MemUse (bytes) 21,630,856 20,403,448 14,256,808 16,358,240
Total Incl. PeakMemUse (bytes) 21,947,888 20,609,392 14,485,672 16,603,624

メモリ使用量では Doctrine1 > Propel > Doctrine2 > php-activerecord となりました(少ないほど良好)。PropelがDoctrine1と同じくらいのメモリ使用量になるのは予想外でした。ただ、MemUseとPeakMemUseの差はどのORMでもほとんど変わらないため、メモリ使用量の改善はORM以外の処理でオブジェクトが解放されるように工夫する必要がありそうです。
メモリ使用量の比較グラフ

Function call数

doctrine1 propel1.6 php-activerecord doctrine2
Number of Function Calls 184,078 76,753 87,364 69,613

Function call数についても比較しました。これは Doctrine1 > php-activerecord > Propel > Doctrine2 の順でした(少ないほど良好)。ここでもDoctrine1が特に悪い結果となりました。
Function call数の比較グラフ

変更に要する作業量

OpenPNE3ではプラグインが現在 plugins.openpne.jp に登録されているだけでも80個近く存在し(2011年11月現在)、ORMを変更した場合はこれらの内データベースを使用するほぼ全てのプラグインで修正を行う必要が出てきます。そのため、ORMを変更する場合は単純にパフォーマンスが良いというだけでなくDoctrine1からの移行のし易さも考慮する必要があります。

Propelは、現在Doctrine1で使用しているのビヘイビアやi18nに相当する機能を備えており、sfPropelORMPlugin によってsymfony1.4環境でも問題なく使用することができるため、他のORMと比べると格段に移行し易いです。ただし、それでもschema.ymlの変更やモデルクラスの大幅な修正が必要になるため、移行作業はかなりの時間を要します。参考までに、今回の実験のためにメンバー一覧のページをPropel向けに修正するために15日(通算56時間)ほど掛かりました。

php-activerecordは、現時点でsymfony1.4向けのプラグインが提供されておらず(今回はORMの比較のために作成した sfActiveRecordPlugin を使用しています)、今までのようなsymfonyのタスクによるテーブルの作成やfixtureの挿入は一から実装する必要があります。また、i18nに相当する機能はORM側で用意されておらず、どのように対応するかが課題になります。

Doctrine2は、symfony1.4向けプラグインとして sfDoctrine2Plugin が提供されていますが実質メンテナンスされておらず、最新版のDoctrine2には対応できていません。i18nはORM側の機能としては用意されていませんが、DoctrineExtensions などを利用することでそれに相当する機能を使えるとのことです(ただし今回の検証ではうまく動作しなかったため使用しませんでした)。

このような現状から、単純に移行に掛かる作業量だけを考えた場合はPropelがベターな選択肢となります。

# もちろんORMを変更する必要がなければ作業量はゼロです :)

まとめ

処理時間 メモリ使用量 ORM変更の作業量
Propel
php-activerecord ×
Doctrine2

結果をまとめると上記の表のようになりました。全体的なパフォーマンス面ではDoctrine2、移行のための作業量を考慮するとPropelが良い選択肢となりそうです。いずれにしても処理時間では最大で4〜5割の改善は見込めることが分かりました。

結果データなど

今回の実験で得られたXHProfのデータを下記URLで公開しています。

Doctrine1:

Propel:

php-activerecord:

Doctrine2:

OpenPNE 3.6 の新機能について

10 / 07 金曜日 2011

OpenPNE 開発チームの今村です。

2010/3/13にOpenPNE 3.5.0 がリリースされてから約1年8ヶ月という長い道のりを経て、ついにOpenPNE 3.6.0 をリリースすることが出来ました。

OpenPNE 3.6.0 では非常に多くのバグフィックス、新機能追加、チューニングが施されています。
チケット数にすると約300チケットもの対応をし、紹介する新機能も非常に多くなっています。

非常に長いエントリになっていますので、時間ねーぜ!という方は、下記の見出しを参考に気になるところから御覧ください(^_^;)

ユーザー向け新機能・改良点
新機能では「部分SSL機能」や「インストール時にDBを造り直さないオプション」などが追加され、パフォーマンス面では、より高速化をめざし「opNonCountQueryPagerの利用」や「OpenPNE.ymlの結果をキャッシュする」といった改善が行なわれています。
バンドルプラグイン
opIntroFriendPlugin、opRankingPlugin、opFavoritePlugin が追加されました。
開発者向けの新機能・改良点
認証周りの仕様変更や、プラグインの依存性をサポートするようになりました。

3.6.0リリースにあたって、全ての機能の動作を確認する全機能テストも行なわれました。アクション一覧を参考に正常動作の確認がおこなわれ、新機能についても問題のないことを確認しました。

続きを読む

ページの先頭に戻る