CloudNative Days Tokyo 2022のセッション「Kubernetes Admission Webhook Deep Dive」のサンプルプログラムです。 セッション情報 https://event.cloudnativedays.jp/cndt2022/talks/1579 …
GitHub Actions で同じビルドやテストを何度も実行しない方法を紹介します。 ホストランナーを ubuntu-linux にした場合、実行する必要のないジョブは 10 秒程度でスキップ可能です。 注意 この記事は自作の OSS ツール sver および私が現在所属するサイボウス社の グローバル向けAWS版kintone開発チーム の宣伝が含まれます。 Summary ビルドやテストといった CI のジョブに再現性がある場合は複数回実行しても意味がない ジョブが依存する環境やソースコードを元にハッシュ値を計算することで同等なジョブに一意なラベルをつけられる ジョブ実行後に実行済みラベルを artifact として保存しておくことで後続の同等なジョブをスキップできる 効果 最初に効果を示します。 sver というプロジェクトのジョブの実行結果です。 これは通常時のジョブの実行時間です
はじめに こんにちは、Necoプロジェクトのsatと申します。 みなさんはKubernetesに機能が追加されるまでの流れをご存知でしょうか。githubに存在するプロジェクトであれば典型的にはfeature request用のissueが立てられて、それをもとにPRが作られてレビューを経たのちにマージという流れです。しかしKubernetesはたくさんのプロジェクトから構成される非常に複雑なシステムなので、このような単純なやりかたが難しいのです。KubernetesではそのかわりにKubernetes Enhancement Proposal(以下KEPと表記)というしくみを使って新機能を開発するというスタイルをとっています。 本記事はKEPについて簡単に説明した後に、Kubernetesの機能開発が進んでいく具体的な流れについて、NecoプロジェクトがレビューにかかわったKEPを通して
こんにちは、Classiに入社して1年になるGoogle Developers Expert for Angularのlacolacoです。 今日はClassiに新しく フロントエンドエキスパートチーム を作った話を紹介します。 フロントエンドエキスパートチームとは? 日本のフロントエンド界隈(?)の方なら、フロントエンドエキスパートチームと聞いて真っ先に思い浮かぶのはサイボウズさんのチームだと思います。 Classiで新たに立ち上げたチームは、名前も含めてサイボウズさんのフロントエンドエキスパートチームをかなり強くインスパイアしています。 そのメンバーであり友人でもあるsakito君にはチームの設計にあたって相談に乗ってもらい、名前をそのまま真似ることも快諾してくれました。この場を借りて改めて感謝です! speakerdeck.com メンバー構成 2021年1月現在、lacolaco
このブログは、テクニカルライター/ローカライズ リレーブログの3本目の記事(前編)です。 こんにちは。テクニカルライターチームのpiyo(@_chick_p)です。 私は、サイボウズ製品のユーザー管理やログイン設定などのサービスを提供する、cybozu.com共通管理のUI文言やヘルプ管理を担当しています。 サイボウズでは、2023年12月にkintoneがスペイン語に対応しました。 kintoneが新たにスペイン語に対応し 多言語対応を推進 日本語・英語・中国語(簡体字・繁体字)と合わせて5つの言語に対応 | サイボウズ株式会社 同様に、cybozu.com共通管理の画面でもスペイン語に対応しています。 今回は、スペイン語対応に向けて、製品の画面文言やヘルプサイトを改善した取り組みを、前後編に分けて紹介します。 前編のこの記事は、製品の画面文言をスペイン語に翻訳したときにわかった「言語に
こんにちは。コネクト支援チームの風穴(かざあな)です。 この度サイボウズでは、GMOメディア株式会社とコンサルティング業務委託契約を締結させていただき、MySQLエキスパートのyoku0825さんに、いろいろと相談に乗って頂けることになりました。 MySQLについて検索したことがあるエンジニアなら、yoku0825さんのブログ「日々の覚書」のお世話になったことがない人はいないでしょう。それぐらいポピュラーなブログで、日本語で読めるMySQLの技術情報を長年発信し続けているのがyoku0825さんです。 yoku0825さん ということで、Garoonプログラマの杉山くんと一緒に、yoku0825さんにお話を伺ってみました。 yoku0825さんのお仕事 ──(風穴):普段、どんなお仕事をされてるのですか? yoku0825さん(以下、敬称略):GMOメディアという、BtoC向けのWebサー
初めに サイボウズ・ラボの光成です。 このたび、Intelの公式深層学習ライブラリoneDNNに、富士通が開発しているスーパーコンピュータ富岳向けのPull Requestがmergeされました。 その開発に関わることになった経緯を紹介します。 目次 概要 Xbyakとは 動機 Intelとの関わり 富士通との関わり 概要 富士通研究所はスーパーコンピュータ富岳で深層学習(ディープラーニング)を高速に処理するためのソフトウェアを開発してます。 そのためにIntelが開発している深層学習ライブラリoneDNNを富岳に移植して改良しています。 このたび、その成果の一部が本家のoneDNNに取り込まれました。 富岳はA64FXというArm v8-Aにベクトル演算機能SVEが追加されたCPUを持ちます。 oneDNNを富岳に移植するには、私が開発しているXbyakのA64FX用Xbyak_aarc
こんにちは、サイボウズ開発本部長の佐藤 鉄平 (@teppeis) です。 勉強会などで社外のエンジニアと話していると、 「サイボウズって採用してたんですか?」 みたいに言われてしまうことがありました。 こりゃいかん、もっと積極的に活動してかないとなー、ということで、今年から開発本部内にも採用チームを設立し、この note を立ち上げて情報発信していくことにしました。 最初の投稿である今回は、サイボウズはなぜ採用したいのか?についてお伝えします。 サイボウズってどうなのよ?サイボウズは「チームワークあふれる社会を創る」という企業理念の元に、情報共有を支援する企業向けの SaaS を提供しています。主要4製品 (kintone, Garoon, Office, Mailwise) はいずれも堅調に成長し、日経コンピュータの顧客満足度調査では2年連続1位を獲得、SaaS の重要 KPI である
重い腰を上げて FlatConfig 対応をした ESLint が新しい設定形式として FlatConfig を導入してから随分と経ち、最新バージョンの v9 では FlatConfig がデフォルトになりました。一方で利用者の多い plugin でもなかなか対応が進まず、周りでは思ったよりも FlatConfig への移行が進んでいない印象を受けます。 とはいえ次のバージョンである v10 では FlatConfig しかサポートしないことが予定されており、今まで移行を見送ってきた方も「さすがにそろそろ移行するか...」と思っているのではないでしょうか。自身の所属チームで管理している ESLint の rule セット : @cybozu/eslint-config でも遅ればせながら FlatConfig 対応を進めています。(現在はアルファ版で提供中です) そんな @cybozu/e
サイボウズ社内ではC++で開発している製品があります。 未知のバッファオーバーランなどの脆弱性への対策として、重要なコンポーネントについてはプロダクション環境で利用しているバイナリでも AddressSanitizer を有効にしてビルドしています。 その製品で利用しているコンパイラをgcc5.3.0からgcc7.5.0に更新したところ性能劣化が発生しました。 製品コードとは別の部分が原因のため、根本原因の追跡が難しそうです。perf,bpftraceを使って性能劣化を追いかけてみましょう。 本記事で利用しているAddressSanitizer, bpftrace, perfコマンドはネット上に良質な記事がありますので、使い方などの解説は今回は省略させていただきます。 gcc7.5.0において、性能劣化が発生する再現コードとして次のようなものを用意しました。 #include <strin
サムネイル こんにちは、フロリアでエンジニアとして活動している irico です。 現在 kintone ではフロリアというプロジェクトの中で、Closure Tools から React への移行作業に取り組んでいます。 今回は、そのフロリアのチームの 1 つである Reactone チーム が採用した「Storybook をフル活用したテスト手法」についてお話します。 Storybook によるテストアプローチ Storybook の v6.4 から play 関数が導入され、v6.5 から Interaction tests が可能になりました。 これによって Story 上でテストを実行するだけでなく、実行したテストの動作確認がブラウザ上で可能になりました。 今までは Jest や Vitest 上で Testing Library を利用する際、DOM 操作の視覚的な確認が難しく
こんにちは。開発本部 デザイン&リサーチ アクセシビリティチームの SUGI(@blindsoup2p1)です。 私は今年の4月に新卒で入社した全盲のスクリーンリーダーユーザーで、アクセシビリティ・エンジニアとして活動しています。 サイボウズでは今年、正式にアクセシビリティチームが発足し、グループウェアのアクセシビリティ向上や社内への啓発を進めてきました! この記事では、今年1年アクセシビリティチームが取り組んできた過程と成果をまとめ、来年の展望を示します。 と共に、エクストリームユーザーである私がアクセシビリティ向上にどうかかわっていったのかを合わせて紹介します。 ※アクセシビリティとは、能力・環境・状況にかかわらず、誰もがサービスやコンテンツを利用できること、またはその度合いのことです。 よくアクセシビリティは障害者・高齢者対応という誤解を受けますが、能力・環境・状況(の制約)は障害者
こんにちは。Poca11y(ポカリ)チームのSUGI(@blindsoup2p1)と小林(@sukoyakarizumu)です。 わたしたちPoca11yチームは「kintone」のアクセシビリティ改善活動に参加しています。この記事ではkintoneのアクセシビリティを改善するチーム体制について解説します。さらにPoca11yチームとkintone開発チームが協力して整備したアクセシビリティを強化するためのESLintルールについても解説します。 Poca11y(アクセシビリティ)チームとkintoneのアクセシビリティ改善 Poca11yチームとは Poca11yチームはサイボウズ全体の「アクセシビリティ」向上を目的としたチームです。Poca11yチームでは主に以下3種類の活動を行なっています。 社内啓発:アクセシビリティの社内研修・勉強会・ガイドライン作成などを行います。 製品改善:サ
こんにちは、Necoチームの鈴木です。 Necoチームでは仮想データセンター構築ツールPlacematを使って、データセンターを丸ごと仮想化し、その上でサーバーのプロビジョニングやKubernetesクラスタ構築、Kubernetes上で動作するアプリケーションのTest Suitesを実行しています。 Placematはプロジェクト初期に開発されたツールで、古いツールに依存していたり、実装方式や設計が洗練されていないなどの課題があっため、4ヶ月前からv2を開発開始し、先日リリースしました。 本記事ではその機能と使い方、今後のCI改善 Placemat on Kubernetesについて紹介します。 特徴 シンプルな構成 YAMLの設定ファイルで多彩なデータセンター環境を再現可能 多彩なVM設定 仮想BMC シンプルな構成 Placematはシングルバイナリで構成されています。 使い方もシ
政府は9月13日、セキュリティ評価制度「ISMAP」にサイボウズのクラウド基盤「cybozu.com」、グループウェア「Garoon」、ノーコード開発ツール「kintone」、米Boxのクラウドストレージ「Box」を登録したと発表した。サイボウズとBoxの製品は初登録。今後、これらの製品は政府調達の対象品目となる。 Boxやサイボウズの製品に加え、NTTコミュニケーションズの企業向けデータ分析プラットフォーム「Smart Data Platform」、米OracleのIaaS「Oracle Cloud Infrastructure Platform as a Service」、パブリッククラウド「Oracle Cloud」の提供基盤をユーザー企業のデータセンター内に構築する「Oracle Exadata Cloud@Customer」も追加した。 ISMAPは、運用を担う情報処理推進機構(
この記事は、GitHub Sponsorsを募集開始してから、約2年経つのでGitHub Sponsorsについて振り返った記事です。 この記事では、GitHub Sponsorsを始めた理由、Tierの設計、やってみた結果と感謝、やったことによる変化、これからやる方へのアドバイスなどを書いています。 GitHub Sponsorsを始めた理由 2019年10月からGitHub Sponsorsのページを公開して、スポンサーの募集を開始しました。 GitHub Sponsorの募集ページを公開しました。https://t.co/YpSPfMPxjU#Promise本 や #jsprimer を書いたり、textlintを作ったり色々OSSを作ってます。 後は https://t.co/CXy3hOXJ8q を8年ぐらい毎週更新してたりもします。@jser_info Sponsorとかもある
こんにちは、グローバル向けAWS版kintoneのバックエンドエンジニアをしている@ueokandeです。 8月になって暑い日々が続きますね。そして8月と言えば、Amazon Aurora MySQL-Compatible Edition version 1 with MySQL 5.6 compatibility(以下Aurora MySQL 5.6)のサポート終了までおよそ半年となりました。 グローバル向けAWS版kintoneでは、Aurora MySQL 5.6を採用しているバックエンドサービスがいくつかあり、チームで移行作業に取り組んできました。この移行作業は単なるアップグレードだけではなく、ダウンタイムなしでデータベースを移行するチャレンジにも取り組みました。この記事ではAmazon Auroraの移行作業の全貌と、移行戦略を紹介します。 Aurora MySQL 5.6のサポ
DOGOプロジェクトのマスコット こんにちは。サイボウズOffice開発チームの西谷です。 昨年より、私たちは”DOGO”と銘打ち、サイボウズOfficeのフロントエンド部分をNext.js App Routerを用いて刷新しています。 本ブログではこの刷新プロジェクトの概要やこれまでの取り組みについてご紹介します。 プロジェクト発足の背景 刷新の方針 刷新後のサイボウズOfficeを支える技術 アプリケーションフレームワーク モニタリング テスト インフラ CI・CD これまでの取り組み Next.js側で画面のルーティングを制御する リリースパイプラインの構築 全画面共通部分の実装 今後の取り組み メンバー募集しています! プロジェクト発足の背景 サイボウズOfficeはこれまで、パッケージソフトウェアとしていくつものバージョンを重ね、クラウドサービスへ転身し、時代に合わせて様々な形に
こんにちは、Necoチームの鈴木、石井、そしてストレージチームのsatです。 サイボウズは毎年サマーインターンシップを開催しています。去年に続き、今年もCOVID-19の影響でフルリモート開催でした。 インターンには様々なコースがありますが、本記事ではその中で我々が取り組んだKubernetes基盤開発コースの模様をお届けいたします。ここでいう「Kubernetes基盤」とはKubernetesを用いたサイボウズの次期インフラ基盤Necoのことを指します。 cybozu.co.jp 今年のKubernetes基盤開発コースは8月23日~9月3日(10日間)の日程で開催、7人の学生が参加してくれました。 彼らには本コースが提供する以下3つのチームに分かれて課題に取り組んでもらいました。 コントローラチーム Kubernetesコントローラの実装方法を学び、サイボウズで開発しているKubern
この記事は vjeux 氏によって Prettier 公式ブログに投稿された「$20k Bounty was Claimed!」を許可をもらって翻訳したものです。 もとのタイトルを翻訳するのが難しかったので、できるだけわかりやすいものに翻訳しました。 PrettierというJavaScriptのコードフォーマッターは、人々がコードを書く様々な方法を慎重に扱うことで、驚くほど広く採用されています。この時点で、フォーマットロジックは安定しており、私たちの三項演算子に関する作業が完了すれば、それは満足のいく状態になるでしょう。 これは、次の重要な側面に注目できるということを意味します:パフォーマンス。Prettierは決して速いとは言えませんが、ほとんどの使用例には十分な速さです。これはいつも不満足な感じがしたので、何かをすることを望んでいました。それには、友好的な競争以上の方法はありません。
kintone フロントエンド刷新プロジェクトリーダーの @koba04 です。この記事では kintone フロントエンド刷新プロジェクトにおける Web パフォーマンス方針について紹介します。 kintone フロントエンド刷新プロジェクト(フロリア)とは プロジェクトの現状 なぜ Web パフォーマンスに取り組むのか Web パフォーマンスと生産性 kintone においての Web パフォーマンス 誰もが利用可能にするための Web パフォーマンス Core Web Vitals をメトリクスの中心に Core Web Vitals とは ローディングのパフォーマンス インタラクティブ性 レイアウトの安定性 なぜ Core Web Vitals を計測するのか SpeedCurve を活用した計測 Web パフォーマンスに取り組みやすい状態を作る これから 参考 kintone フ
サムネイル こんにちは!kintone のフロントエンド刷新プロジェクト(フロリア)の@nkgrnkgrです。 フロリアでは、kintone のフロントエンドの ClosureToolsで書かれたコードを React に置き換えています。 本記事では フォーム画面の UI の状態管理に使うライブラリを選定する際に、どのような検証と意思決定を行ったかについて紹介します。この記事が UI の状態管理を行う際に何かの参考になれば幸いです。 kintoneのアプリ作成フォーム はじめに アプリ作成フォーム画面 アプリ作成フォーム画面とは? ユーザーの操作と状態管理で考慮すべきこと ライブラリを選ぶ上での前提 今回の選定で考慮したライブラリの種類と特徴 3つのライブラリの特徴 Redux(ReduxToolkit) について Zustand について Jotai について 利用状況とプロダクト要件を
こんにちは。サイボウズの小林大輔といいます。社内で「アクセシビリティエキスパート」として活動しています。 サイボウズでは、2014年ごろからアクセシビリティについての取り組みを行ってきました。社内啓発活動の一環としてアクセシビリティの社内勉強会やワークショップを継続的に開催したり、実際の製品改善の取り組みも多数行ってきました。さらに社外に向けて、アクセシビリティの重要性や取り組み方を発信する活動もしてきました。 最近では、社内外でアクセシビリティという言葉を少しずつ聞くようになってきました。社内にも社外にもアクセシビリティを発信しつづけてきた身としては嬉しい限りです。 今回は、全盲 (両目が見えない) のエンジニアSUGIさんが入社したことで、私たちサイボウズが得た知見について紹介しようと思います。 もともと、私がアクセシビリティに関わることになったきっかけは、弱視の方へのユーザビリティテ
はじめに こんにちは、Necoプロジェクトのsatです。Necoプロジェクトではサイボウズのクラウドサービスcybozu.comの次期インフラ基盤を開発しています。その根幹となるコンポーネントの一つがお客様のデータをあずかるストレージです。本記事ではNecoのストレージの本番適用に向けた取り組みの一つを紹介いたします。 たくさんの取り組みをしているのですが、ここではストレージシステムの運用にあたって、データを格納するRook/Cephクラスタの運用に必要なオペレーションを作る部分について扱います。 用語解説 ここでは本記事を読むにあたって必要になるCephの用語について、いくつか説明しておきます。 OSD OSDとはCephクラスタに組み込まれる個々のディスク上に存在している、ユーザの実データを保存する領域です。Cephは自身を構成するノード上にあるOSDを束ねてストレージプールを作ります
Server-Sent Events (SSE) 目新しい技術というわけではありませんが、最近 Server-Sent Events (SSE) について言及する記事をよく見かけます。 何番煎じかはわかりませんが、個人的に興味があることと、正直触ってみたことがなかったので、コードを書きつつ調べてみました。 ※本記事で登場するサンプルコードは次のリポジトリで公開しています。 SSE とは SSE 自体を解説する記事は無数に存在するため詳細な説明は割愛しますが、簡単に言うと、サーバーからクライアントへ一方向の Push 通信を行うための仕組みです。 MDN にもページが存在するため、参考になります。 独自プロトコルを必要とせず、HTTP/1.1 でも動作するのも特徴です。 SSE の歴史 wikipedia に SSE に関するページが存在し、次のような記述があります。 SSE メカニズムは、
こんにちは、READYFORでVP of Engineeringをしております、いとひろです。 この度、めでたくREADYFORのOSSポリシーをGitHub上で公開しましたので、共有いたします 👏👏👏 github.com OSSポリシー策定の背景 READYFORでは、息をするようにOSSにコントリビュートをしている @kotarella1110(React Hook Formコアコントリビュータ)や @yuji_developer(自作gem多数、OSSにPRやissueで貢献)や @ksss(CRubyやmrubyに貢献、最近はRBS関連の活動多し)をはじめとする多くのエンジニアがOSS活動を行なっています。 かくいう私自身も、かつてはEclipse CollectionsというJavaのOSSライブラリのリード・コミッターをしていたこともあり、OSS活動に対しては非常に前向
こんにちは、Necoプロジェクトの池添(@zoetro)です。 今回は、Kubernetes向けにTopoLVMというCSI (Container Storage Interface) プラグインを開発したので紹介したいと思います。 TopoLVMは以下のような特徴を持っており、Kubernetesでローカルストレージを有効に利用することができます。 LVM (Logical Volume Manager) によるボリューム管理 トポロジーを考慮したダイナミックプロビジョニング ノードの空き容量に応じたスケジューリング github.com 本記事では、CSIプラグインを自作するに至った経緯とTopoLVMの特徴の紹介、Elasticsearchのストレージとして利用する例を紹介します。 ストレージへの取り組み Kubernetesでストレージを扱うことは難しいとよく言われています。しかし
「入社おめでとう。はやくみなさんは、サイボウズをいつでも辞められるような人になってください」 2015年の4月。サイボウズの入社式で、副社長の山田理さんがこんなことを口にしました。その年の新入社員として入社式に参加し、「さあ、これからサイボウズで頑張るぞ」と意気揚々としていた私は度肝を抜かれました。だって、入社式なのにいきなり辞める時のことを話すだなんて……。 ですが、その「時」がくるのは早いもので、2020年3月10日の今日、私はサイボウズを卒業します。 サイボウズに所属した5年間は、私にとって、自分自身と会社と向き合い、そして、会社との距離感を模索し続けた時間でした。 「やりたいこと」を仕事にするまでの1年半 私はサイボウズに入社して、最初は自社製品のプロモーションをするマーケティングの部署に配属されました。会社で楽しく仕事をしつつ、プライベートも大切にする。まさに「ワークライフバラン
2019年10月10日、私、及川卓也は単著では初の書籍『ソフトウェア・ファースト あらゆるビジネスを一変させる最強戦略』を出版します。このnoteでは、出版の経緯や書籍づくりの裏話、発刊時に削った原稿の公開など、本書の制作にまつわるさまざまな情報を発信していきます。 こんにちは、及川です。2019年10月10日に『ソフトウェア・ファースト』というタイトルの書籍を出版することになりました。 (※正式な出版日は10月15日なので、全国各地の書店に行き渡るまで少しタイムラグがあるかもしれません) この本は、最新テクノロジーを使った新規事業の創出や、ITを活用した事業変革を進めたいと考えている方々に向けて執筆しました。最近のトレンドで言うと、デジタル・トランスフォーメーション(DX)やAI活用、クラウド(特にSaaS)をベースにした新ビジネスなどに取り組む企業の方向けです。 ただし、DXほか個別の
こんにちは、Necoチームの池添です。 みなさんKubernetes向けのコンテナレジストリにはどこのサービスを利用していますか?そのサービスの調子が悪くて困ったりしたことはありませんか? 今回はコンテナレジストリをKubernetesクラスタ上にセルフホストし、システムの可用性を高める取り組みについて紹介したいと思います。 セルフホストコンテナレジストリがなぜ必要か コンテナレジストリには、Docker Hub, Red Hat Quay, GitHub Container Registry (GHCR), さらには各種パブリッククラウドベンダーによるものなど、数多くのサービスが存在します。 これらのコンテナレジストリのいずれかひとつに頼っていると、そこが単一障害点になってしまいます。 コンテナレジストリがダウンすると新しいコンテナを立ち上げる事ができなくなり、障害につながる場合もありま
こんにちは。Necoチームの池添とsatです。 サイボウズは毎年サマーインターンシップを開催しています。 今年は新型コロナウイルス(COVID-19)の影響で一時開催が危ぶまれました。 しかし、この状況で学生の皆さんの就業体験の機会が失われてしまうのもよくないと考え、フルリモートでインターンシップを実施することとしました。 blog.cybozu.io Kubernetes基盤開発コースは8月と9月の2回開催で、1回目の8月3日~14日(9日間)の日程には4人の学生が参加してくれました。 Kubernetes基盤開発コース担当のNecoチームはサイボウズの中でも、もっともOSSを活用しているチームです。 そこでこのコースでは、Necoチームが取り組んでいるKubernetes基盤開発について、OSSへの貢献を通して知ってもらう機会にしました。単に開発をするだけではなく、サイボウズがどういう
初めに kintoneチームの前田です。 kintoneはサーバーサイドがJavaで書かれていて、最近ではこれが結構な分量になっており開発上の障壁となっています。 その解消のため、kintoneチームではコード分割を進めています。 今回は、コード分割の目的や具体的方針、取り組みをチームでうまく進めていくための工夫、 これまでに得られたことや今後の見通しについてご紹介します。 コード分割とは kintoneがリリースされてから10年経過し、その間に継ぎ足し継ぎ足しでコードが追加されてきました。 最近ではコード行数が35万行を超えてなお増えており、それに伴い複雑性も増している印象があります。 このまま何もしないと、コードの調査や影響範囲を確認するのがどんどん大変になっていったり、 新しくチームに参加した人がコードを把握するのにいままで以上に時間がかかってしまうことが懸念されます。 このような問
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く