<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Electron Blog</title>
        <link>https://electronjs.org/ja/blog</link>
        <description>Electron Blog</description>
        <lastBuildDate>Tue, 17 Mar 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>ja</language>
        <item>
            <title><![CDATA[Tech Talk: How Electron went Wayland-native, and what it means for your apps]]></title>
            <link>https://electronjs.org/ja/blog/tech-talk-wayland</link>
            <guid>https://electronjs.org/ja/blog/tech-talk-wayland</guid>
            <pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron recently switched to Wayland by default on Linux, bringing dozens of popular desktop apps along with it. Here's what changed and how it affects developers and users.]]></description>
            <content:encoded><![CDATA[<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Tech talks are a new blog post series where we share glimpses into our work on Electron. If you find this work interesting, please consider <a href="https://github.com/electron/electron/" target="_blank" rel="noopener noreferrer" class="">contributing</a>!</p></div></div>
<p>When Electron switched to <a href="https://wayland.freedesktop.org/" target="_blank" rel="noopener noreferrer" class="">Wayland</a> on Linux last fall, most people didn't notice.</p>
<p>Major Linux distributions adopted the modern display protocol years ago, and both the KDE Plasma and GNOME desktop environments are in the process of <a href="https://blogs.kde.org/2025/11/26/going-all-in-on-a-wayland-future/" target="_blank" rel="noopener noreferrer" class="">dropping X11 support</a> <a href="https://www.phoronix.com/news/GNOME-50-Alpha/" target="_blank" rel="noopener noreferrer" class="">completely</a>.</p>
<p>But a platform migration isn't complete without apps, and a large part of the Linux app ecosystem went through a second Wayland transition last August — well after most distros had changed their defaults. That's when Chromium <a href="https://chromium-review.googlesource.com/c/chromium/src/+/6819616" target="_blank" rel="noopener noreferrer" class="">turned on Wayland by default</a>, bringing Electron and dozens of Linux desktop apps along with it.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-third-impact-electron-goes-wayland-native">The third impact: Electron goes Wayland-native<a href="https://electronjs.org/ja/blog/tech-talk-wayland#the-third-impact-electron-goes-wayland-native" class="hash-link" aria-label="The third impact: Electron goes Wayland-native への直接リンク" title="The third impact: Electron goes Wayland-native への直接リンク" translate="no">​</a></h2>
<p>Wayland is supported out of the box in <a href="https://releases.electronjs.org/release/v38.2.0" target="_blank" rel="noopener noreferrer" class="">Electron 38.2</a> and newer. As long as your apps are up-to-date, it just works. (If you were previously launching your Electron apps with very long commands like <code>CONFUSING_OZONE_VARIABLE --ozone-platform=wayland</code>, you no longer need to do that.)</p>
<p>This change was possible because the Chromium and Electron projects have been <a href="https://github.com/electron/electron/pull/26022" target="_blank" rel="noopener noreferrer" class="">working on Wayland support</a> for more than half a decade. But until recently, Chrome and Electron apps continued to use X11 by default, even when launched in a Wayland session. This wasn’t a big issue, since X11 apps still work fairly well on Wayland by running inside an invisible X server called <a href="https://wayland.freedesktop.org/docs/html/ch05.html" target="_blank" rel="noopener noreferrer" class="">Xwayland</a>.</p>
<p><a href="https://electronjs.org/ja/assets/files/xwayland-8fc6983c43adb7294e26749d678d1b60.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="Screenshot of an Electron app running in X11 compatibility mode (XWayland) in a Wayland session on Ubuntu" src="https://electronjs.org/ja/assets/images/xwayland-8fc6983c43adb7294e26749d678d1b60.png" width="1280" height="960" class="img_ev3q"></a></p>
<p>Running apps through a compatibility layer is not the same as running them directly on Wayland. On Wayland, there’s less sitting between your app and the compositor, so there's lower overhead and much stronger isolation between applications. Modern Wayland compositors also let apps take advantage of newer platform and display features like variable refresh rates, HiDPI and fractional scaling, and HDR.</p>
<p><a href="https://electronjs.org/ja/assets/files/hdr-f6b141a7502024160f550c614c947608.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="Screenshot of an Electron app running natively on Wayland, demonstrating support for wide gamut color and HDR" src="https://electronjs.org/ja/assets/images/hdr-f6b141a7502024160f550c614c947608.png" width="1295" height="1076" class="img_ev3q"></a></p>
<p>These are all good reasons for Electron to make the switch. In late September, Electron followed Chromium’s lead and began <a href="https://www.electronjs.org/blog/electron-38-0#removed-electron_ozone_platform_hint-environment-variable" target="_blank" rel="noopener noreferrer" class="">defaulting to Wayland</a>. And as apps began to update, people who had been “using Wayland” without issues for months or years started to find out what it was really like to experience their apps on Wayland for the first time.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="waylands-house-waylands-rules">Wayland’s house, Wayland’s rules<a href="https://electronjs.org/ja/blog/tech-talk-wayland#waylands-house-waylands-rules" class="hash-link" aria-label="Wayland’s house, Wayland’s rules への直接リンク" title="Wayland’s house, Wayland’s rules への直接リンク" translate="no">​</a></h2>
<p>Supporting Wayland required dozens of changes throughout <a href="https://chromium-review.googlesource.com/q/subject:%22wayland%22" target="_blank" rel="noopener noreferrer" class="">Chromium</a> and <a href="https://github.com/electron/electron/pulls?q=is%3Apr+wayland" target="_blank" rel="noopener noreferrer" class="">Electron</a>, from internals to developer-facing APIs. It also required a different way of thinking about what desktop apps should be able to do.</p>
<p>Wayland reconsiders assumptions made by older systems and asks whether apps should be able to:</p>
<ul>
<li class="">Take focus away from other apps</li>
<li class="">View and interact with windows from other apps</li>
<li class="">Respond to mouse and keyboard input when not focused</li>
<li class="">Choose where to position their own windows on the screen (and which physical monitor to appear on)</li>
<li class="">Resize their windows at any time</li>
</ul>
<p>Wayland's answer to these questions is essentially “no.” When you open a window, the compositor — not the app developer — decides where it goes. Apps cannot unilaterally move, resize, or focus their windows without user input, and they can only interact with the rest of the desktop through optional <a href="https://wayland.app/protocols/" target="_blank" rel="noopener noreferrer" class="">protocol extensions</a> and <a href="https://flatpak.github.io/xdg-desktop-portal/" target="_blank" rel="noopener noreferrer" class="">XDG portals</a>.</p>
<p>These kinds of rules are understandable; no one likes it when a misbehaving app steals focus or loads halfway off the screen. But it can still surprise people when their apps suddenly lose access to familiar affordances on Wayland. This is especially the case for a cross-platform framework like Electron, which exists to help developers achieve consistent results everywhere.</p>
<p>Some widely used Electron APIs that work on X11, macOS, and Windows are not available on Wayland. For example, <a href="https://www.electronjs.org/docs/latest/api/base-window#winsetpositionx-y-animate" target="_blank" rel="noopener noreferrer" class=""><code>win.setPosition(x, y)</code></a> and <a href="https://www.electronjs.org/docs/latest/api/screen#screengetcursorscreenpoint" target="_blank" rel="noopener noreferrer" class=""><code>screen.getCursorScreenPoint()</code></a> aren't supported, as Wayland <a href="https://lists.freedesktop.org/archives/wayland-devel/2015-September/024410.html" target="_blank" rel="noopener noreferrer" class="">deliberately forbids</a> apps from accessing global screen coordinates.</p>
<p>Other features work differently: recording the screen with <a href="https://www.electronjs.org/docs/latest/api/desktop-capturer" target="_blank" rel="noopener noreferrer" class=""><code>desktopCapturer</code></a> and setting keyboard shortcuts with <a href="https://www.electronjs.org/docs/latest/api/global-shortcut" target="_blank" rel="noopener noreferrer" class=""><code>globalShortcut</code></a> are more restricted, and both heavily depend on the desktop environment and portal versions. Here's what it looks like when screen sharing in Signal Desktop on GNOME 48.</p>
<p><a href="https://electronjs.org/ja/assets/files/signalscreenshare-4f0031952ec13722d28814608d871c25.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="Screenshot of Signal Desktop requesting permission to share the screen on GNOME" src="https://electronjs.org/ja/assets/images/signalscreenshare-4f0031952ec13722d28814608d871c25.png" width="1627" height="1198" class="img_ev3q"></a></p>
<p>Making this more complicated for developers is the fact that Wayland isn't a single piece of software, but a protocol. Every <a href="https://en.wikipedia.org/wiki/Wayland_(protocol)#Wayland_compositors" target="_blank" rel="noopener noreferrer" class="">compositor</a> implements it a little differently, almost like browser engines. (There are even <a href="https://absurdlysuspicious.github.io/wayland-protocols-table/" target="_blank" rel="noopener noreferrer" class="">protocol support trackers</a> that look like they came from MDN or CanIUse.)</p>
<p>So when Slack tries to focus its main window with <a href="https://www.electronjs.org/docs/latest/api/browser-window#winfocus" target="_blank" rel="noopener noreferrer" class=""><code>win.focus()</code></a>, GNOME's compositor (Mutter) shows a notification. On KDE Plasma (KWin), the app icon flashes in the panel instead. Neither outcome is what the app's developers had in mind, but both are valid interpretations of the <a href="https://wayland.app/protocols/xdg-activation-v1" target="_blank" rel="noopener noreferrer" class="">activation spec</a>.</p>
<p><a href="https://electronjs.org/ja/assets/files/focus-bd12b1a8eb0999cba0edfb16934505d4.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="Screenshot comparing what happens when Slack tries to focus itself on GNOME and KDE" src="https://electronjs.org/ja/assets/images/focus-bd12b1a8eb0999cba0edfb16934505d4.png" width="1280" height="720" class="img_ev3q"></a></p>
<p>Some capabilities simply work better on Wayland than on X11, including anything to do with colors, transparency, and hardware-accelerated rendering. <a href="https://www.electronjs.org/docs/latest/api/base-window#winsetopacityopacity-windows-macos" target="_blank" rel="noopener noreferrer" class=""><code>win.setOpacity(n)</code></a> is an example of an Electron API which hasn't been available on Linux in the past, but which will now be feasible to support.</p>
<p>Even the stricter restrictions can benefit apps. When 1Password runs on Wayland, its <a href="https://developer.1password.com/docs/ssh/agent/" target="_blank" rel="noopener noreferrer" class="">SSH agent</a> lets users confirm requests with a single click instead of asking them to enter their passwords. This is safe because Wayland's input isolation is strong enough to prevent the prompt from being skipped with <a href="https://en.wikipedia.org/wiki/Clickjacking" target="_blank" rel="noopener noreferrer" class="">clickjacking</a> — only a real human being can click the button.</p>
<p><a href="https://electronjs.org/ja/assets/files/1passwordssh-6ef79e1c3174043cb11571d3874802bf.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="Screenshot of the 1Password SSH agent showing a prompt with an Authorize button, floating over a terminal with an SSH command." src="https://electronjs.org/ja/assets/images/1passwordssh-6ef79e1c3174043cb11571d3874802bf.png" width="1641" height="1293" class="img_ev3q"></a></p>
<p>The basic tradeoff is that Wayland restricts some of what apps can do but also enables them to be more capable and secure. And in one area, Wayland gives developers more flexibility and more responsibility than before: client-side decorations (CSD).</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="understanding-csd-or-when-a-window-isnt-a-window">Understanding CSD, or when a window isn’t a window<a href="https://electronjs.org/ja/blog/tech-talk-wayland#understanding-csd-or-when-a-window-isnt-a-window" class="hash-link" aria-label="Understanding CSD, or when a window isn’t a window への直接リンク" title="Understanding CSD, or when a window isn’t a window への直接リンク" translate="no">​</a></h2>
<p>The Wayland protocol is very lightweight, and its simplicity extends to the way it draws window frames. On X11, the window manager typically supplies a window’s title bar and frame decorations. But when you create a window (<a href="https://wayland.app/protocols/xdg-shell" target="_blank" rel="noopener noreferrer" class=""><code>xdg_toplevel</code></a>) on Wayland, all you get back from the compositor is a plain rectangle.</p>
<p><a href="https://electronjs.org/ja/assets/files/waylandnocsd-1fda0479eb87487d13ce5473ed32277f.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="Screenshot of a blank app window on Wayland with no decorations. It&amp;#39;s just a white rectangle." src="https://electronjs.org/ja/assets/images/waylandnocsd-1fda0479eb87487d13ce5473ed32277f.png" width="1280" height="960" class="img_ev3q"></a></p>
<p>That rectangle is a powerful canvas. On a modern compositor like GNOME’s Mutter, it’s triple-buffered and GPU-accelerated. But if you want any of the trimmings users might expect — title bar buttons, drop shadows, even resize handles — you have to add them yourself. This requirement is called client-side decorations (CSD), and it’s one of the major differences between X11 and Wayland.</p>
<p>Electron already had some support for client-side decorations, provided by a class called <code>ClientFrameViewLinux</code> which uses GTK to paint convincing native window frames. These look very similar to the ones GNOME used to supply on X11, but they are produced entirely in-framework.</p>
<p><a href="https://electronjs.org/ja/assets/files/clientframeviewlinux-cfd509bc5a3099a12009bb9aa9da3749.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="Screenshot of a ClientFrameViewLinux with client-side decorations on GNOME" src="https://electronjs.org/ja/assets/images/clientframeviewlinux-cfd509bc5a3099a12009bb9aa9da3749.png" width="1280" height="960" class="img_ev3q"></a></p>
<p>But client-side window frames are not an exact match for server-side decorations (SSD) from X11 window managers. They need to be implemented by each app or framework, so the details can look noticeably different when you put apps side by side, from their title bar areas right down to their drop shadows and corner shapes.</p>
<p><a href="https://electronjs.org/ja/assets/files/csdcomparison-92a791c2382c1f4c96e8cd20d932276d.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="Screenshot of four apps with CSD from different frameworks (clockwise from top-left: Adwaita, Qt, Electron, and Firefox)" src="https://electronjs.org/ja/assets/images/csdcomparison-92a791c2382c1f4c96e8cd20d932276d.png" width="1728" height="1296" class="img_ev3q"></a></p>
<p>The differences are usually minor, but when CSD is completely absent from a window, the result can be visually jarring.</p>
<p>Many popular apps, including Visual Studio Code, Obsidian, and Discord, use <a href="https://www.electronjs.org/docs/latest/tutorial/custom-window-styles" target="_blank" rel="noopener noreferrer" class="">frameless windows</a> with <a href="https://www.electronjs.org/docs/latest/tutorial/custom-title-bar" target="_blank" rel="noopener noreferrer" class="">custom title bars</a>. Prior to <a href="https://www.electronjs.org/blog/electron-41-0" target="_blank" rel="noopener noreferrer" class="">Electron 41</a>, frameless windows did not support CSD at all, so they looked like featureless rectangles on Wayland.</p>
<p><a href="https://electronjs.org/ja/assets/files/vscodenocsd-6f2013f1656e09eff0cfca1e94fa0a71.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="Screenshot of VS Code on KDE with no CSD" src="https://electronjs.org/ja/assets/images/vscodenocsd-6f2013f1656e09eff0cfca1e94fa0a71.png" width="1731" height="1300" class="img_ev3q"></a></p>
<p>Improving coverage for CSD was a task with framework-wide consequences. The biggest obstacle involved window sizes and how to measure and set them accurately. Electron already manages two different kinds of window boundaries:</p>
<ul>
<li class=""><strong>“window bounds”</strong>, the size of the window, including its titlebar, menubar, and frame.</li>
<li class=""><strong>“content bounds”</strong>, the size of the internal web view which hosts the app’s web content.</li>
</ul>
<p>Both values can be controlled independently. If a developer calls for an 800x600 window, Electron calculates the height of the title bar and shrinks the web app to something like 800x540. (It also works the other way around for <a href="https://www.electronjs.org/docs/latest/api/base-window#new-basewindowoptions" target="_blank" rel="noopener noreferrer" class="">content-sized</a> windows.)</p>
<p><a href="https://electronjs.org/ja/assets/files/windowbounds-b41c7193d91e6981b341bb9acabdc6a6.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="Diagram of an Electron app&amp;#39;s window and content bounds without CSD" src="https://electronjs.org/ja/assets/images/windowbounds-b41c7193d91e6981b341bb9acabdc6a6.png" width="1650" height="1275" class="img_ev3q"></a></p>
<p>To support CSD, Electron also needed to keep track of a new kind of boundary:</p>
<ul>
<li class=""><strong>“widget bounds”</strong>, the size of the transparent widget which draws everything inside of it, including the window frame and its external decorations.</li>
</ul>
<p>When CSD is required, Electron first takes the window's underlying <a href="https://wayland.app/protocols/xdg-shell#xdg_surface" target="_blank" rel="noopener noreferrer" class="">surface</a> (accessed internally via a Chromium <a href="https://source.chromium.org/chromium/chromium/src/+/main:ui/ozone/platform/wayland/host/wayland_window.cc;l=94;drc=ac4eed7b549169cd64f0e15b503f4f0635dc1bd9" target="_blank" rel="noopener noreferrer" class="">accelerated widget</a>) and inflates it so it's large enough to fit all the decorations.</p>
<p>The framework then paints the opaque bits of the window (title bar, frame, and web content) at their appropriate sizes and positions inside the transparent widget. The outermost areas are filled in with drop shadows and resize hit targets, creating the look and feel of a native, three-dimensional window without relying on server-side decorations.</p>
<p>With CSD, a "logical" window at 800x600 might be inset into a 840x640 widget. The exact geometries depend on the user's theme and the window's state: whether it is currently active, maximized, tiled, or fullscreen can affect the size and presence of decorations.</p>
<p><a href="https://electronjs.org/ja/assets/files/widgetbounds-e2921ef22f4dad4281d9cb74357b3d83.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="Diagram of an Electron app&amp;#39;s full CSD bounds, including the transparent widget surrounding the window" src="https://electronjs.org/ja/assets/images/widgetbounds-e2921ef22f4dad4281d9cb74357b3d83.png" width="1650" height="1275" class="img_ev3q"></a></p>
<p>Of course, widget bounds should never leak into the public API. The framework needs to abstract this complexity away from app developers, who are generally not thinking about the extents of resize targets or shadow insets changing underneath them.</p>
<p>The good news is that much of this was sorted out between last September and March, and as a result, Electron 41 supports CSD on Wayland in all window configurations, including frameless windows with <a href="https://www.electronjs.org/docs/latest/api/structures/base-window-options" target="_blank" rel="noopener noreferrer" class="">Window Controls Overlay</a>.</p>
<p><a href="https://electronjs.org/ja/assets/files/vscodecsd-26e13ece78b184484cc8e27f122e3e99.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="Screenshot of VS Code using a prerelease version of Electron 41.x with CSD shadows." src="https://electronjs.org/ja/assets/images/vscodecsd-26e13ece78b184484cc8e27f122e3e99.png" width="1813" height="1316" class="img_ev3q"></a></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next--and-how-you-can-help">What’s next — and how you can help<a href="https://electronjs.org/ja/blog/tech-talk-wayland#whats-next--and-how-you-can-help" class="hash-link" aria-label="What’s next — and how you can help への直接リンク" title="What’s next — and how you can help への直接リンク" translate="no">​</a></h2>
<p>Wayland is an everyday reality for Linux users in 2026, so a great Wayland experience is now just what it means to support Linux.</p>
<p>Electron reached an important milestone last month with the creation of a <a href="https://github.com/electron/electron/pull/49908" target="_blank" rel="noopener noreferrer" class="">Wayland test job in CI</a>. More tests still need to be ported over, but it’s now much easier to catch regressions.</p>
<p>Now that the basic support is in place, Wayland opens up new possibilities for Electron apps. CSD in particular offers developers more ways to customize window frames and integrate them with both their web content and the platform. <a href="https://github.com/electron/electron/issues" target="_blank" rel="noopener noreferrer" class="">Let us know</a> what you'd like to see; one feature that's high on my own shortlist is rounded corners.</p>
<p><a href="https://electronjs.org/ja/assets/files/roundedcorners-da8eb9a58504779605f9f315f9a55392.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="Screenshot of a frameless window with rounded corners (not currently possible in Electron, but soon?)" src="https://electronjs.org/ja/assets/images/roundedcorners-da8eb9a58504779605f9f315f9a55392.png" width="1840" height="1439" class="img_ev3q"></a></p>
<p>The framework is only part of the story. If you develop an Electron app and you haven’t thoroughly tested it on Linux in a while (even as recently as last fall), give it a spin with Electron 41+ on a modern distribution like Ubuntu 25.10 or Fedora 43. Try your app on both KDE Plasma and GNOME, and maybe something more exotic like <a href="https://github.com/niri-wm/niri" target="_blank" rel="noopener noreferrer" class="">Niri</a>.</p>
<p>You may discover changes you could make to accommodate Wayland's unique constraints. Some differences are covered in the <a href="https://www.electronjs.org/docs/latest/api/browser-window" target="_blank" rel="noopener noreferrer" class="">Electron documentation</a>, but the best way to understand the new environment is to use it.</p>
<p>And if you’d like to see faster progress and support for more platform features, consider <a href="https://github.com/electron/electron/blob/main/CONTRIBUTING.md" target="_blank" rel="noopener noreferrer" class="">becoming a contributor</a>. Like Linux itself, Electron is a community-run <a href="https://openjsf.org/blog/electron-joins-the-openjs-foundation" target="_blank" rel="noopener noreferrer" class="">free software project</a> that’s open to everyone, and we're actively looking for Linux contributors and maintainers.</p>
<p>Electron powers many of the most popular desktop apps across platforms, so getting involved is an effective way to help make desktop Linux more viable for millions of people.</p>]]></content:encoded>
            <category>テックトーク</category>
            <category>内部詳細</category>
        </item>
        <item>
            <title><![CDATA[Electron 41]]></title>
            <link>https://electronjs.org/ja/blog/electron-41-0</link>
            <guid>https://electronjs.org/ja/blog/electron-41-0</guid>
            <pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron 41 has been released! It includes upgrades to Chromium 146.0.7680.65, V8 14.6, and Node v24.14.0.]]></description>
            <content:encoded><![CDATA[<p>Electron 41 has been released! It includes upgrades to Chromium 146.0.7680.65, V8 14.6, and Node v24.14.0.</p>
<hr>
<p>The Electron team is excited to announce the release of Electron 41! <code>npm install electron@latest</code> から npm でインストールするか、<a href="https://www.electronjs.org/releases?channel=stable" target="_blank" rel="noopener noreferrer" class="">リリースウェブサイト</a> からダウンロードできます。 このリリースの詳細は続きをご覧ください。</p>
<p>何かフィードバックがあれば、<a href="https://bsky.app/profile/electronjs.org" target="_blank" rel="noopener noreferrer" class="">Bluesky</a> や <a href="https://social.lfx.dev/@electronjs" target="_blank" rel="noopener noreferrer" class="">Mastodon</a> で共有したり、コミュニティの <a href="https://discord.com/invite/electronjs" target="_blank" rel="noopener noreferrer" class="">Discord</a> に参加してみましょう! バグや機能の要望は Electron の <a href="https://github.com/electron/electron/issues" target="_blank" rel="noopener noreferrer" class="">Issue トラッカー</a> で報告できます。</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>After publishing the initial 41.0.0 package, we integrated some high-priority
bugs into follow-up patch releases. We recommend installing <strong>41.0.2</strong> when
upgrading to Electron 41.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="注目すべき変更">注目すべき変更<a href="https://electronjs.org/ja/blog/electron-41-0#%E6%B3%A8%E7%9B%AE%E3%81%99%E3%81%B9%E3%81%8D%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="注目すべき変更 への直接リンク" title="注目すべき変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="asar-integrity-digest-for-improved-security">ASAR Integrity digest for improved security<a href="https://electronjs.org/ja/blog/electron-41-0#asar-integrity-digest-for-improved-security" class="hash-link" aria-label="ASAR Integrity digest for improved security への直接リ��ンク" title="ASAR Integrity digest for improved security への直接リンク" translate="no">​</a></h3>
<p>As of Electron 41, macOS Electron apps can now embed a digest of their <a href="https://www.electronjs.org/docs/latest/tutorial/asar-integrity" target="_blank" rel="noopener noreferrer" class="">ASAR Integrity</a> information. This adds an additional layer of tamper detection for apps that use ASAR Integrity by validating the integrity information itself at app launch.</p>
<p>To enable the feature for your app, you can run the following command with <code>@electron/asar</code> v4.1.0 and above:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">asar integrity-digest on /path/to/YourApp.app</span><br></span></code></pre></div></div>
<p>You <strong><em>must</em></strong> re-sign your app afterwards. For more information, see <a href="https://github.com/electron/asar/blob/v4.1.0/README.md#integrity-digest" target="_blank" rel="noopener noreferrer" class="">the <code>@electron/asar</code> CLI documentation.</a></p>
<p>Support for this feature in <a href="https://electronforge.io/" target="_blank" rel="noopener noreferrer" class="">Electron Forge</a> is planned for the near future (<a href="https://github.com/electron/forge/pull/4159" target="_blank" rel="noopener noreferrer" class="">electron/forge#4159</a>).</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="improved-wayland-support">Improved Wayland support<a href="https://electronjs.org/ja/blog/electron-41-0#improved-wayland-support" class="hash-link" aria-label="Improved Wayland support への直接リンク" title="Improved Wayland support への直接リンク" translate="no">​</a></h3>
<p>On Wayland (Linux), frameless windows now have drop shadows and extended resize boundaries. To create fully frameless windows with no decorations, set <code>hasShadow: false</code> in the window constructor. <a href="https://github.com/electron/electron/pull/49885" target="_blank" rel="noopener noreferrer" class="">#49885</a></p>
<p><a href="https://github.com/mitchchn" target="_blank" rel="noopener noreferrer" class="">Mitchell Cohen</a> is writing a blog article about recent work to improve Electron's support of Wayland and client-side decorations on Linux. Watch this space!</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="added-support-for-msix-auto-updating">Added support for MSIX auto-updating<a href="https://electronjs.org/ja/blog/electron-41-0#added-support-for-msix-auto-updating" class="hash-link" aria-label="Added support for MSIX auto-updating への直接リンク" title="Added support for MSIX auto-updating への直接リンク" translate="no">​</a></h3>
<p>The Electron team recently added MSIX auto-updater support according to <a href="https://github.com/electron/rfcs/pull/21" target="_blank" rel="noopener noreferrer" class="">RFC #21</a>. You can now ship both MSIX and Squirrel.Mac in your update server essentially with the same JSON response format. See the <a href="https://www.electronjs.org/docs/latest/api/auto-updater" target="_blank" rel="noopener noreferrer" class="">autoUpdater documentation</a> for more information.</p>
<p>This was added in Electron 41 by <a href="https://github.com/electron/electron/pull/49586" target="_blank" rel="noopener noreferrer" class="">#49586</a> and has also been backported to Electron 39.5.0 (<a href="https://github.com/electron/electron/pull/49585" target="_blank" rel="noopener noreferrer" class="">#49585</a>) and 40.2.0 (<a href="https://github.com/electron/electron/pull/49587" target="_blank" rel="noopener noreferrer" class="">#49587</a>).</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="累積的変更">累積的変更<a href="https://electronjs.org/ja/blog/electron-41-0#%E7%B4%AF%E7%A9%8D%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="累積的変更 への直接リンク" title="累積�的変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">
<p>Chromium <code>146.0.7680.65</code></p>
<ul>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-146/" target="_blank" rel="noopener noreferrer" class="">Chrome 146 の新機能</a></li>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-145/" target="_blank" rel="noopener noreferrer" class="">Chrome 145 の新機能</a></li>
</ul>
</li>
<li class="">
<p>Node <code>v24.14.0</code></p>
<ul>
<li class=""><a href="https://nodejs.org/en/blog/release/v24.14.0" target="_blank" rel="noopener noreferrer" class="">Node 24.14.0 ブログ記事</a></li>
<li class=""><a href="https://nodejs.org/en/blog/release/v24.13.1" target="_blank" rel="noopener noreferrer" class="">Node 24.13.1 ブログ記事</a></li>
<li class=""><a href="https://nodejs.org/en/blog/release/v24.13.0" target="_blank" rel="noopener noreferrer" class="">Node 24.13.0 ブログ記事</a></li>
<li class=""><a href="https://nodejs.org/en/blog/release/v24.12.0" target="_blank" rel="noopener noreferrer" class="">Node 24.12.0 ブログ記事</a></li>
</ul>
</li>
<li class="">
<p>V8 <code>14.4</code></p>
<ul>
<li class=""><a href="https://chromium.googlesource.com/v8/v8.git/+/3f4b2d428486d982bf51d7c0487adcd9f73f5fd8" target="_blank" rel="noopener noreferrer" class="">V8 roll increment</a></li>
</ul>
</li>
</ul>
<p>Electron 41 upgrades Chromium from <code>144.0.7559.60</code> to <code>146.0.7680.65</code>, Node.js from <code>v24.11.1</code> to <code>v24.14.0</code>, and V8 from <code>14.4</code> to <code>14.6</code>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="新機能と改善点">新機能と改善点<a href="https://electronjs.org/ja/blog/electron-41-0#%E6%96%B0%E6%A9%9F%E8%83%BD%E3%81%A8%E6%94%B9%E5%96%84%E7%82%B9" class="hash-link" aria-label="新機能と改善点 への直接リンク" title="新機能と改善点 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">Added <code>--disable-geolocation</code> command-line flag for macOS apps to disable location services. <a href="https://github.com/electron/electron/pull/45934" target="_blank" rel="noopener noreferrer" class="">#45934</a></li>
<li class="">Added NV12 support for import shared texture. <a href="https://github.com/electron/electron/pull/48922" target="_blank" rel="noopener noreferrer" class="">#48922</a> <sup>(Also in <a href="https://github.com/electron/electron/pull/49040" target="_blank" rel="noopener noreferrer" class="">40</a>)</sup></li>
<li class="">Added a <code>disclaim</code> option to the <code>utilityProcess</code> API to allow for TCC disclaiming on macOS. <a href="https://github.com/electron/electron/pull/49693" target="_blank" rel="noopener noreferrer" class="">#49693</a> <sup>(及び <a href="https://github.com/electron/electron/pull/49696" target="_blank" rel="noopener noreferrer" class="">39</a>, <a href="https://github.com/electron/electron/pull/49695" target="_blank" rel="noopener noreferrer" class="">40</a>)</sup></li>
<li class="">Added a <code>reason</code> property to the <code>Notification</code> <code>'closed'</code> event on Windows to allow developers to know the reason the notification was dismissed. <a href="https://github.com/electron/electron/pull/50029" target="_blank" rel="noopener noreferrer" class="">#50029</a> <sup>(Also in <a href="https://github.com/electron/electron/pull/50030" target="_blank" rel="noopener noreferrer" class="">40</a>)</sup></li>
<li class="">Added an <code>usePrinterDefaultPageSize</code> option to <code>webContents.print()</code> to allow using the printer's default page size. <a href="https://github.com/electron/electron/pull/49812" target="_blank" rel="noopener noreferrer" class="">#49812</a></li>
<li class="">Added support for WebSocket authentication through the <code>login</code> event on <code>webContents</code>. <a href="https://github.com/electron/electron/pull/48512" target="_blank" rel="noopener noreferrer" class="">#48512</a> <sup>(及び <a href="https://github.com/electron/electron/pull/49065" target="_blank" rel="noopener noreferrer" class="">39</a>, <a href="https://github.com/electron/electron/pull/49064" target="_blank" rel="noopener noreferrer" class="">40</a>)</sup></li>
<li class="">Added support for the Node.js <a href="https://nodejs.org/docs/latest-v22.x/api/cli.html#--experimental-transform-types" target="_blank" rel="noopener noreferrer" class=""><code>--experimental-transform-types</code></a> flag. <a href="https://github.com/electron/electron/pull/49882" target="_blank" rel="noopener noreferrer" class="">#49882</a> <sup>(及び <a href="https://github.com/electron/electron/pull/49881" target="_blank" rel="noopener noreferrer" class="">39</a>, <a href="https://github.com/electron/electron/pull/49883" target="_blank" rel="noopener noreferrer" class="">40</a>)</sup></li>
<li class="">Added support for <code>long-animation-frame</code> script attribution (via <code>--enable-features=AlwaysLogLOAFURL</code>). <a href="https://github.com/electron/electron/pull/49773" target="_blank" rel="noopener noreferrer" class="">#49773</a> <sup>(及び <a href="https://github.com/electron/electron/pull/49771" target="_blank" rel="noopener noreferrer" class="">39</a>, <a href="https://github.com/electron/electron/pull/49772" target="_blank" rel="noopener noreferrer" class="">40</a>)</sup></li>
<li class="">Added the ability to disable auto-focusing of <code>WebContents</code> on navigation using <code>webPreferences.focusOnNavigation</code>. <a href="https://github.com/electron/electron/pull/49511" target="_blank" rel="noopener noreferrer" class="">#49511</a> <sup>(Also in <a href="https://github.com/electron/electron/pull/49512" target="_blank" rel="noopener noreferrer" class="">40</a>)</sup></li>
<li class="">Irrelevant errors from the Chromium DevTools frontend are now silenced in the main process. <a href="https://github.com/electron/electron/pull/49292" target="_blank" rel="noopener noreferrer" class="">#49292</a> <sup>(Also in <a href="https://github.com/electron/electron/pull/49359" target="_blank" rel="noopener noreferrer" class="">40</a>)</sup></li>
<li class="">Enable V8 trap handlers for WASM behind <code>WasmTrapHandlers</code> <a href="https://www.electronjs.org/docs/latest/tutorial/fuses" target="_blank" rel="noopener noreferrer" class="">fuse</a>. <a href="https://github.com/electron/electron/pull/49839" target="_blank" rel="noopener noreferrer" class="">#49839</a></li>
<li class="">Extended actions support for Windows notifications to include buttons, select dropdowns, and replies. <a href="https://github.com/electron/electron/pull/49787" target="_blank" rel="noopener noreferrer" class="">#49787</a> <sup>(Also in <a href="https://github.com/electron/electron/pull/49786" target="_blank" rel="noopener noreferrer" class="">40</a>)</sup></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="破壊的変更">破壊的変更<a href="https://electronjs.org/ja/blog/electron-41-0#%E7%A0%B4%E5%A3%8A%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="破壊的変更 への直接リンク" title="破壊的変更 への直接リンク" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="behavior-changed-pdfs-no-longer-create-a-separate-webcontents">Behavior Changed: PDFs no longer create a separate WebContents<a href="https://electronjs.org/ja/blog/electron-41-0#behavior-changed-pdfs-no-longer-create-a-separate-webcontents" class="hash-link" aria-label="Behavior Changed: PDFs no longer create a separate WebContents への直接リンク" title="Behavior Changed: PDFs no longer create a separate WebContents への直接リンク" translate="no">​</a></h4>
<p>Previously, PDF resources created a separate guest <a href="https://www.electronjs.org/docs/latest/api/web-contents" target="_blank" rel="noopener noreferrer" class=""><code>WebContents</code></a> for rendering. Now, PDFs are rendered within the same <code>WebContents</code> instead. If you have code to detect PDF resources, use the <a href="https://www.electronjs.org/docs/latest/api/web-frame-main" target="_blank" rel="noopener noreferrer" class="">frame tree</a> instead of <code>WebContents</code>.</p>
<p>Under the hood, Chromium <a href="https://chromium-review.googlesource.com/c/chromium/src/+/7239572" target="_blank" rel="noopener noreferrer" class="">enabled</a> a feature that changes PDFs to use out-of-process iframes (OOPIFs) instead of the <code>MimeHandlerViewGuest</code> extension.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="behavior-changed-updated-cookie-change-cause-in-the-cookie-changed-event">Behavior Changed: Updated Cookie Change Cause in the Cookie <code>'changed'</code> Event<a href="https://electronjs.org/ja/blog/electron-41-0#behavior-changed-updated-cookie-change-cause-in-the-cookie-changed-event" class="hash-link" aria-label="behavior-changed-updated-cookie-change-cause-in-the-cookie-changed-event への直接リンク" title="behavior-changed-updated-cookie-change-cause-in-the-cookie-changed-event への直接リンク" translate="no">​</a></h4>
<p>We have updated the cookie change cause in the cookie <a href="https://www.electronjs.org/docs/latest/api/cookies#event-changed" target="_blank" rel="noopener noreferrer" class=""><code>'changed'</code> event</a>.
When a new cookie is set, the change cause is <code>inserted</code>.
When a cookie is deleted, the change cause remains <code>explicit</code>.
When the cookie being set is identical to an existing one (same name, domain, path, and value, with no actual changes), the change cause is <code>inserted-no-change-overwrite</code>.
When the value of the cookie being set remains unchanged but some of its attributes are updated, such as the expiration attribute, the change cause will be <code>inserted-no-value-change-overwrite</code>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="38xy-サポートの終了">38.x.y サポートの終了<a href="https://electronjs.org/ja/blog/electron-41-0#38xy-%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E7%B5%82%E4%BA%86" class="hash-link" aria-label="38.x.y サポートの終了 への直接リンク" title="38.x.y サポートの終了 への直接リンク" translate="no">​</a></h2>
<p>プロジェクトの <a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy" target="_blank" rel="noopener noreferrer" class="">サポートポリシー</a> に則り、Electron 38.x.y はサポート終了を迎えました。 開発者とアプリケーションは新しいバージョンの Electron にアップグレードすることを推奨します。 See <a href="https://releases.electronjs.org/schedule" target="_blank" rel="noopener noreferrer" class="">https://releases.electronjs.org/schedule</a> to see the timeline for supported versions of Electron.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="次回予告">次回予告<a href="https://electronjs.org/ja/blog/electron-41-0#%E6%AC%A1%E5%9B%9E%E4%BA%88%E5%91%8A" class="hash-link" aria-label="次回予告 への直接リンク" title="次回予告 への直接リンク" translate="no">​</a></h2>
<p>短期的には、Chromium、Node、V8 といった Electron を構成する主要コンポーネントの開発に遅れないでチームが注力し続けるでしょう。</p>
<p><a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines" target="_blank" rel="noopener noreferrer" class="">Electron の公開タイムラインはこちらで</a> ご覧いただけます。</p>
<p>今後の変更についての詳細は、<a href="https://github.com/electron/electron/blob/main/docs/breaking-changes.md" target="_blank" rel="noopener noreferrer" class="">予定されている破壊的変更</a> のページをご覧ください。</p>]]></content:encoded>
            <category>Release</category>
        </item>
        <item>
            <title><![CDATA[Electron 40.0.0]]></title>
            <link>https://electronjs.org/ja/blog/electron-40-0</link>
            <guid>https://electronjs.org/ja/blog/electron-40-0</guid>
            <pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron 40.0.0 がリリースされました! これには Chromium 144.0.7559.60、V8 14.4、Node 24.11.1 へのアップグレードが含まれています。]]></description>
            <content:encoded><![CDATA[<p>Electron 40.0.0 がリリースされました! これには Chromium <code>144.0.7559.60</code>、V8 <code>14.4</code>、Node <code>24.11.1</code> へのアップグレードが含まれています。</p>
<hr>
<p>Electron チームは、Electron 40.0.0 のリリース発表にワクワクしています! <code>npm install electron@latest</code> から npm でインストールするか、<a href="https://www.electronjs.org/releases?channel=stable" target="_blank" rel="noopener noreferrer" class="">リリースウェブサイト</a> からダウンロードできます。 このリリースの詳細は続きをご覧ください。</p>
<p>何かフィードバックがあれば、<a href="https://bsky.app/profile/electronjs.org" target="_blank" rel="noopener noreferrer" class="">Bluesky</a> や <a href="https://social.lfx.dev/@electronjs" target="_blank" rel="noopener noreferrer" class="">Mastodon</a> で共有したり、コミュニティの <a href="https://discord.com/invite/electronjs" target="_blank" rel="noopener noreferrer" class="">Discord</a> に参加してみましょう! バグや機能の要望は Electron の <a href="https://github.com/electron/electron/issues" target="_blank" rel="noopener noreferrer" class="">Issue トラッカー</a> で報告できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="累積的変更">累積的変更<a href="https://electronjs.org/ja/blog/electron-40-0#%E7%B4%AF%E7%A9%8D%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="累積的変更 への直接リンク" title="累積的変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">
<p>Chromium <code>144.0.7559.60</code></p>
<ul>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-144/" target="_blank" rel="noopener noreferrer" class="">Chrome 144 の新機能</a></li>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-143/" target="_blank" rel="noopener noreferrer" class="">Chrome 143 の新機能</a></li>
</ul>
</li>
<li class="">
<p>Node <code>v24.11.1</code></p>
<ul>
<li class=""><a href="https://nodejs.org/en/blog/release/v24.11.1/" target="_blank" rel="noopener noreferrer" class="">Node 24.11.1 ブログ記事</a></li>
</ul>
</li>
<li class="">
<p>V8 <code>14.4</code></p>
<ul>
<li class=""><a href="https://chromium.googlesource.com/v8/v8.git/+/e4746e7564d601ae4dfb8355c0d7af00d1178694" target="_blank" rel="noopener noreferrer" class="">V8 roll increment</a></li>
</ul>
</li>
</ul>
<p>Electron 40 upgrades Chromium from <code>142.0.7444.52</code> to <code>144.0.7559.60</code>, Node.js from <code>v22.20.0</code> to <code>v24.11.1</code>, and V8 from <code>14.2</code> to <code>14.4</code>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="新機能と改善点">新機能と改善点<a href="https://electronjs.org/ja/blog/electron-40-0#%E6%96%B0%E6%A9%9F%E8%83%BD%E3%81%A8%E6%94%B9%E5%96%84%E7%82%B9" class="hash-link" aria-label="新機能と改善点 への直接リンク" title="新機能と改善点 への直接リンク" translate="no">​</a></h3>
<ul>
<li class="">Added <code>"memory-eviction"</code> as a possible reason for a child process to exit. <a href="https://github.com/electron/electron/pull/48362" target="_blank" rel="noopener noreferrer" class="">#48362</a></li>
<li class="">Added <code>bypassCustomProtocolHandlers</code> option to <code>net.request</code>. <a href="https://github.com/electron/electron/pull/48883" target="_blank" rel="noopener noreferrer" class="">#48883</a> <sup>(及び <a href="https://github.com/electron/electron/pull/48881" target="_blank" rel="noopener noreferrer" class="">38</a>, <a href="https://github.com/electron/electron/pull/48882" target="_blank" rel="noopener noreferrer" class="">39</a>)</sup></li>
<li class="">Added support to import external shared texture as <code>VideoFrame</code>. <a href="https://github.com/electron/electron/pull/48831" target="_blank" rel="noopener noreferrer" class="">#48831</a></li>
<li class="">Automatically focus DevTools when element is inspected or breakpoint is triggered. <a href="https://github.com/electron/electron/pull/46386" target="_blank" rel="noopener noreferrer" class="">#46386</a> <sup>(Also in <a href="https://github.com/electron/electron/pull/48703" target="_blank" rel="noopener noreferrer" class="">37</a>, <a href="https://github.com/electron/electron/pull/48701" target="_blank" rel="noopener noreferrer" class="">38</a>, <a href="https://github.com/electron/electron/pull/48702" target="_blank" rel="noopener noreferrer" class="">39</a>)</sup></li>
<li class="">Enabled resetting accent color to follow system accent settings if a previous color has been set via <code>window.setAccentColor(null)</code>. <a href="https://github.com/electron/electron/pull/48274" target="_blank" rel="noopener noreferrer" class="">#48274</a> <sup>(及び <a href="https://github.com/electron/electron/pull/48853" target="_blank" rel="noopener noreferrer" class="">38</a>, <a href="https://github.com/electron/electron/pull/48852" target="_blank" rel="noopener noreferrer" class="">39</a>)</sup></li>
<li class="">Updated <code>nativeImage.createFromNamedImage</code> to support SF Symbol names. <a href="https://github.com/electron/electron/pull/48772" target="_blank" rel="noopener noreferrer" class="">#48772</a> <sup>(Also in <a href="https://github.com/electron/electron/pull/48773" target="_blank" rel="noopener noreferrer" class="">39</a>)</sup></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="破壊的変更">破壊的変更<a href="https://electronjs.org/ja/blog/electron-40-0#%E7%A0%B4%E5%A3%8A%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="破壊的変更 への直接リンク" title="破壊的変更 への直接リンク" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="deprecated-clipboard-api-access-from-renderer-processes">Deprecated: clipboard API access from renderer processes<a href="https://electronjs.org/ja/blog/electron-40-0#deprecated-clipboard-api-access-from-renderer-processes" class="hash-link" aria-label="Deprecated: clipboard API access from renderer processes への直接リンク" title="Deprecated: clipboard API access from renderer processes への直接リンク" translate="no">​</a></h4>
<p>Using the <code>clipboard</code> API directly in the renderer process is deprecated. If you want to call this API from a renderer process, place the API call in your preload script and expose it using the <code>contextBridge</code> API.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="behavior-changed-macos-dsym-files-now-compressed-with-tarxz">Behavior Changed: macOS dSYM files now compressed with tar.xz<a href="https://electronjs.org/ja/blog/electron-40-0#behavior-changed-macos-dsym-files-now-compressed-with-tarxz" class="hash-link" aria-label="Behavior Changed: macOS dSYM files now compressed with tar.xz への直接リンク" title="Behavior Changed: macOS dSYM files now compressed with tar.xz への直接リンク" translate="no">​</a></h4>
<p>Debug symbols for macOS (dSYM) now use xz compression in order to handle larger file sizes. <code>dsym.zip</code> files are now <code>dsym.tar.xz</code> files. End users using debug symbols may need to update their zip utilities.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="37xy-サポートの終了">37.x.y サポートの終了<a href="https://electronjs.org/ja/blog/electron-40-0#37xy-%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E7%B5%82%E4%BA%86" class="hash-link" aria-label="37.x.y サポートの終了 への直接リンク" title="37.x.y サポートの終了 への直接リンク" translate="no">​</a></h2>
<p>プロジェクトの <a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy" target="_blank" rel="noopener noreferrer" class="">サポートポリシー</a> に則り、Electron 37.x.y はサポート終了を迎えました。 開発者とアプリケーションは新しいバージョンの Electron にアップグレードすることを推奨します。</p>
<table><thead><tr><th>E40 (2026 年 1 月)</th><th>E41 (Mar'26)</th><th>E42 (May'26)</th></tr></thead><tbody><tr><td>40.x.y</td><td>41.x.y</td><td>42.x.y</td></tr><tr><td>39.x.y</td><td>40.x.y</td><td>41.x.y</td></tr><tr><td>38.x.y</td><td>39.x.y</td><td>40.x.y</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="次回予告">次回予告<a href="https://electronjs.org/ja/blog/electron-40-0#%E6%AC%A1%E5%9B%9E%E4%BA%88%E5%91%8A" class="hash-link" aria-label="次回予告 への直接リンク" title="次回予告 への直接リンク" translate="no">​</a></h2>
<p>短期的には、Chromium、Node、V8 といった Electron を構成する主要コンポーネントの開発に遅れないでチームが注力し続けるでしょう。</p>
<p><a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines" target="_blank" rel="noopener noreferrer" class="">Electron の公開タイムラインはこちらで</a> ご覧いただけます。</p>
<p>今後の変更についての詳細は、<a href="https://github.com/electron/electron/blob/main/docs/breaking-changes.md" target="_blank" rel="noopener noreferrer" class="">予定されている破壊的変更</a> のページをご覧ください。</p>]]></content:encoded>
            <category>Release</category>
        </item>
        <item>
            <title><![CDATA[テックトーク: ウインドウのサイズ変更動作の改善]]></title>
            <link>https://electronjs.org/ja/blog/tech-talk-window-resize-behavior</link>
            <guid>https://electronjs.org/ja/blog/tech-talk-window-resize-behavior</guid>
            <pubDate>Fri, 19 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[私たちは、Electron での取り組みを垣間見られる新しいブログ投稿シリーズを開始します。 この働きに興味を感じましたら、貢献をご検討ください！]]></description>
            <content:encoded><![CDATA[<p><em>私たちは、Electron での取り組みを垣間見られる新しいブログ投稿シリーズを開始します。 この働きに興味を感じましたら、<a href="https://github.com/electron/electron/" target="_blank" rel="noopener noreferrer" class="">貢献</a>をご検討ください！</em></p>
<hr>
<p>最近、私は Electron と Chromium のウインドウのサイズ変更動作の改善に取り組みました。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="バグ">バグ<a href="https://electronjs.org/ja/blog/tech-talk-window-resize-behavior#%E3%83%90%E3%82%B0" class="hash-link" aria-label="バグ への直接リンク" title="バグ への直接リンク" translate="no">​</a></h2>
<p>Windows では、ウインドウのサイズを変更すると以下のように古いフレームが表示されるという問題が発生していました。</p>
<p><img decoding="async" loading="lazy" alt="ウインドウの�サイズを変更するときに古いフレームが表示される問題を示すアニメーション GIF" src="https://electronjs.org/ja/assets/images/window-resize-bug-showing-old-frames-4d3f73d4b7d13e44539ca65120662a43.gif" width="860" height="493" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="このバグに特に興味深かった理由は何ですか">このバグに特に興味深かった理由は何ですか？<a href="https://electronjs.org/ja/blog/tech-talk-window-resize-behavior#%E3%81%93%E3%81%AE%E3%83%90%E3%82%B0%E3%81%AB%E7%89%B9%E3%81%AB%E8%88%88%E5%91%B3%E6%B7%B1%E3%81%8B%E3%81%A3%E3%81%9F%E7%90%86%E7%94%B1%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B" class="hash-link" aria-label="このバグに特に興味深かった理由は何ですか？ への直接リンク" title="このバグに特に興味深かった理由は何ですか？ への直接リンク" translate="no">​</a></h2>
<ol>
<li class="">挑戦的だった。</li>
<li class="">大規模なコードベースの奥深くにあった。</li>
<li class="">後でわかるように、内部には 2 つの異なるバグがあった。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="バグの修正">バグの修正<a href="https://electronjs.org/ja/blog/tech-talk-window-resize-behavior#%E3%83%90%E3%82%B0%E3%81%AE%E4%BF%AE%E6%AD%A3" class="hash-link" aria-label="バグの修正 への直接リンク" title="バグの修正 への直接リンク" translate="no">​</a></h2>
<p>このようなバグの場合、最初の課題は調べ始めを把握することです。</p>
<p>Electron は、Google Chrome のオープンソース版である Chromium をベースに構築されています。 Electron をコンパイルするとき、Electron のソースコードがサブディレクトリとして Chromium のソースツリーに追加されます。 Electron は、最新ブラウザの機能を提供するためにそののほとんどを Chromium のコードに依存しています。</p>
<p>Chromium には約 3600 万行のコードがあります。 Electron も大きなプロジェクトです。 この問題の原因となる可能性のあるコードは大量にあります。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="根本原因の絞り込み">根本原因の絞り込み<a href="https://electronjs.org/ja/blog/tech-talk-window-resize-behavior#%E6%A0%B9%E6%9C%AC%E5%8E%9F%E5%9B%A0%E3%81%AE%E7%B5%9E%E3%82%8A%E8%BE%BC%E3%81%BF" class="hash-link" aria-label="根本原因の絞り込み への直接リンク" title="根本原因の絞り込み への直接リンク" translate="no">​</a></h2>
<p>私は色々な実験をしてみました。</p>
<p>まず、Google Chrome でも以下のように問題が発生していることに気付きました。</p>
<p><img decoding="async" loading="lazy" alt="Google Chrome もサイズ変更の問題を示しているスクリーンショット" src="https://electronjs.org/ja/assets/images/google-chrome-repro-4fdc95d866a64783be6bb64eef2f2cab.png" width="3022" height="1818" class="img_ev3q"></p>
<p>これは、Electron ではなく Chromium で問題が発生している可能性を示唆しています。</p>
<p>さらに、macOS ではこの問題は示されませんでした。 これは Windows 固有のソースコードによることを示唆しています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="決定的な手がかり">決定的な手がかり<a href="https://electronjs.org/ja/blog/tech-talk-window-resize-behavior#%E6%B1%BA%E5%AE%9A%E7%9A%84%E3%81%AA%E6%89%8B%E3%81%8C%E3%81%8B%E3%82%8A" class="hash-link" aria-label="決定的な手がかり への直接リンク" title="決定的な手がかり への直接リンク" translate="no">​</a></h2>
<p>私はさまざまなコマンドラインフラグと構成オプションを試しました。</p>
<p>私は <a class="" href="https://electronjs.org/ja/docs/latest/api/app#appdisablehardwareacceleration"><code>app.disableHardwareAcceleration()</code></a> で問題が解決することに気付きました。 ハードウェアアクセラレーションをなくすと問題が消えたのです。</p>
<p>ここで背景を説明すると、Chromium は画面上にピクセルを表示するためのさまざまなグラフィックス API (OpenGL、Vulkan、Metal など) をサポートしています。 Windows では、macOS や Linux とは異なるグラフィックス API を使用しています。 また Windows であっても、Chromium は複数の異なるグラフィックスバックエンドを使用できます。</p>
<p>Chromium が使用するグラフィックスバックエンドは、ユーザーのハードウェアによって異なります。 例えば、一部のグラフィックスバックエンドではコンピュータに GPU が搭載されている必要があります。</p>
<p>さまざまなグラフィックスバックエンドを試したところ、以下のフラグで問題が解決したことに気付きました。</p>
<ul>
<li class=""><code>--use-angle=warp</code></li>
<li class=""><code>--use-angle=vulkan</code></li>
<li class=""><code>--use-gl=desktop</code></li>
<li class=""><code>--use-gl=egl</code></li>
<li class=""><code>--use-gl=osmesa</code></li>
<li class=""><code>--use-gl=swiftshader</code></li>
</ul>
<p>以下のフラグでは問題が再現されました。</p>
<ul>
<li class=""><code>--use-angle=d3d11</code> (これは現在の、Windowsのデフォルトです)</li>
<li class=""><code>--use-angle=gl</code> (WindowsではDirect3D 11へフォールバックします。「chrome://gpu/」を参照してください)</li>
</ul>
<p>正常動作するようなフラグは、どれも Windows 上の Electron アプリでデフォルトとして使用できるほど十分なものではありません。 遅すぎるか、ドライバのサポートが手厚くありませんでした。</p>
<p>しかし、これらの回避策が道を照らすことになりました。 これらは問題が ANGLE Direct3D 11 バックエンドでのみ使用されるコードパスにあることを示していたのです。</p>
<p><a href="https://ja.wikipedia.org/wiki/Direct3D" target="_blank" rel="noopener noreferrer" class="">Direct3D</a> はハードウェアアクセラレーショングラフィックス用の Windows API です。</p>
<p><a href="https://en.wikipedia.org/wiki/ANGLE_(software)" target="_blank" rel="noopener noreferrer" class="">ANGLE</a> は、OpenGL 呼び出しを、指定されたオペレーティングシステムのネイティブのグラフィックス API への呼び出し、ここでは Direct3D に変換するライブラリです。 ANGLE を使用すると、Chromium 開発者はすべてのプラットフォームで OpenGL 呼び出しを記述できます。 ANGLE は、使用されているグラフィックス API に応じてそれらを Direct3D、Vulkan、または Metal の API 呼び出しへ変換します。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="関連する-chromium-コンポーネントの特定">関連する Chromium コンポーネントの特定<a href="https://electronjs.org/ja/blog/tech-talk-window-resize-behavior#%E9%96%A2%E9%80%A3%E3%81%99%E3%82%8B-chromium-%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AE%E7%89%B9%E5%AE%9A" class="hash-link" aria-label="関連する Chromium コンポーネントの特定 への直接リンク" title="関連する Chromium コンポーネントの特定 への直接リンク" translate="no">​</a></h2>
<p>Chromium は数万箇所で Direct3D を参照しています。 それらすべてを検討するのは現実的ではありませんでした。</p>
<p>偶然にも、Chromium のソースコードで役立つ以下のようなデバッグフラグをいくつか見つけました。</p>
<ul>
<li class=""><code>--ui-show-paint-rects</code></li>
<li class=""><code>--ui-show-property-changed-rects</code></li>
<li class=""><code>--ui-show-surface-damage-rects</code></li>
<li class=""><code>--ui-show-composited-layer-borders</code></li>
<li class=""><code>--tint-composited-content</code></li>
<li class=""><code>--tint-composited-content-modulate</code></li>
<li class="">(他にもたくさん)</li>
</ul>
<p>これらは Chromium グラフィックのスタックのさまざまな部分によって再描画または更新されたブラウザウインドウの領域を強調表示してくれます。</p>
<p>これにより、グラフィックスのスタックのどの部分がどの出力を生成しているかを確認できるようになりました。</p>
<p>特に、<code>--tint-composited-content</code> と <code>--tint-composited-content-modulate</code> の組み合わせが非常に役立ちました。 前者は、コンポジッタの出力に色を付けます。 後者は、フレームごとの色付けを変更します。</p>
<p><img decoding="async" loading="lazy" alt="--tint-composited-content フラグ付きの Chromium のスクリーンショット" src="https://electronjs.org/ja/assets/images/tinting-composited-content-07a6dd4403f9d11c087c76cbc0a21d85.png" width="3022" height="1810" class="img_ev3q"></p>
<p>スクリーンショットでは、シアン色のフレームが最後に描画されたフレームです。</p>
<p>そのフレームの右側のジャンクはシアン色になっていませんでした。 これは以前のフレームから残っていたさまざまな色が付いていました。 これは、ジャンクがコンポジッタから発生していないことを示しています。 コンポジッタは正しい出力を送っていました。</p>
<p>コンポジッタは Chromium のグラフィックスのスタックの一部です。 非常に簡略化していますが、このブログ記事の目的のために噛み砕くと以下のようにイメージするとよいでしょう。</p>
<ol>
<li class="">コンポジッタ <code>cc</code> が、描画命令を含む <code>CompositorFrame</code> を生成します。</li>
<li class=""><code>cc</code> がその <code>CompositorFrame</code> をディスプレイコンポジッタ <code>viz</code> へ送信します。</li>
<li class=""><code>viz</code> はフレームを描画して画面に表示します。</li>
</ol>
<p>各 <code>CompositorFrame</code> に色を付けることにより、コンポジッタは正しい出力を生成したことが示されました。 したがって、この問題はディスプレイコンポジターの <code>viz</code> にあるはずです。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="関連する-viz-コードの特定">関連する <code>viz</code> コードの特定<a href="https://electronjs.org/ja/blog/tech-talk-window-resize-behavior#%E9%96%A2%E9%80%A3%E3%81%99%E3%82%8B-viz-%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E7%89%B9%E5%AE%9A" class="hash-link" aria-label="関連する-viz-コ�ードの特定 への直接リンク" title="関連する-viz-コードの特定 への直接リンク" translate="no">​</a></h2>
<p>そこから、私は <code>viz</code> ソースコード内で Direct3D が出てくる箇所を探し始めました。</p>
<p><em>注: ここからは、記事の内容が少し技術的になり、ソースコードのシンボルを参照し始めます。</em></p>
<p>ANGLE Direct3D 11 バックエンドでは、Chromium がウインドウのコンテンツを描画するために Windows の <a href="https://learn.microsoft.com/en-us/windows/win32/directcomp/directcomposition-portal" target="_blank" rel="noopener noreferrer" class="">DirectComposition</a> API を使用していることがわかりました。</p>
<p>Chromium の DirectComposition の <code>OutputSurface</code> は、Chromium の他のほとんどの出力サーフェスと異なります。 これには、<code>supports_viewporter</code> の機能があります (<a href="https://source.chromium.org/chromium/chromium/src/+/main:ui/gl/dcomp_presenter.cc;l=144-146;drc=1cffe9643e1e70f1f369bbb28e015d9c5f968546" target="_blank" rel="noopener noreferrer" class="">ソースリンク 1</a>、<a href="https://source.chromium.org/chromium/chromium/src/+/main:components/viz/service/display/output_surface.h;l=100-103;drc=c96a878b1cb45f60aac2285ffbdbd6b53dc92415" target="_blank" rel="noopener noreferrer" class="">ソースリンク 2</a>)。</p>
<p>出力サーフェスは描画可能なビットマップであり、多くの場合 GPU テクスチャの中身です。</p>
<p><code>supports_viewporter</code> がない場合、ウインドウサイズが変更されるたびに、Chromium は新しいウインドウサイズに一致する出力サーフェスを新規作成することになります。 そしてそのサーフェスに描画されて表示されます。</p>
<p><code>supports_viewporter</code> は、このようなコストのかかるサーフェス割り当てを削減しようとします。 <code>supports_viewporter</code> では、Chromium はサイズ変更ごとに新しいサーフェスを割り当てません。 代わりに、描画が必要な領域よりも大きいサーフェスを割り当てています。 そして、そのサーフェスの特定の部分矩形 ("ビューポート") のみが画面上に描画され表示されます。 サーフェスの他の部分は画面に表示されません。</p>
<p>これにより、サイズ変更のたびに新しいサーフェスを割り当てるのではなく、Chromium がサーフェスを適切な幅と高さにパディングするだけで済むため、サイズ変更処理がより効率的になると考えられるからです。 このサーフェスのサイズ変更ロジックは <a href="https://source.chromium.org/chromium/chromium/src/+/main:components/viz/service/display/direct_renderer.cc;l=1082;drc=c96a878b1cb45f60aac2285ffbdbd6b53dc92415" target="_blank" rel="noopener noreferrer" class=""><code>direct_renderer.cc</code></a> にあります。</p>
<p>つまり以下のようになっています。</p>
<p><img decoding="async" loading="lazy" alt="サーフェス、ビューポート、クリップ矩形を示す視覚化" src="https://electronjs.org/ja/assets/images/visualization-1-da8acf1dbc52d6530cc4d1654c396a46.png" width="2363" height="1074" class="img_ev3q"></p>
<p>説明すると、</p>
<ul>
<li class="">青い長方形がサーフェスです。</li>
<li class="">緑色の領域はビューポート、つまり表示されることになっているサーフェスの領域であり、アクティブに描画する領域です。</li>
<li class="">赤い四角形はクリップ矩形、つまり実際に画面に表示されているサーフェスの部分です。</li>
</ul>
<p>パフォーマンス最適化のため、新しいフレームを得る際にはビューポート (緑色の領域) のみが再描画されます。 残りは変わらないままです。 これは重要です。 緑色のビューポートのみを再描画しています。 ビューポートの外側の領域は更新されません。</p>
<p>ウインドウのサイズを変更する場合、アトミックなトランザクション (= まったく同時) でビューポート (= 画面に表示される領域) を再描画し、クリップ矩形を更新してサーフェスを新しいビューポートサイズにクリップする処理が行われるはずです。</p>
<p>サイズ変更後は、以下のようにならなければなりません。</p>
<p><img decoding="async" loading="lazy" alt="更新されたビューポートとクリップ矩形の視覚化" src="https://electronjs.org/ja/assets/images/visualization-2-c94901caccb784bed5548e159abf88d8.png" width="2363" height="1074" class="img_ev3q"></p>
<p>ここで、2 つのバグのうちの 1 つ目のものに到達します。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-つ目のバグ">1 つ目のバグ<a href="https://electronjs.org/ja/blog/tech-talk-window-resize-behavior#1-%E3%81%A4%E7%9B%AE%E3%81%AE%E3%83%90%E3%82%B0" class="hash-link" aria-label="1 つ目のバグ への直接リンク" title="1 つ目のバグ への直接リンク" translate="no">​</a></h2>
<p>時々これらの操作が同期されなくなることがあります。 例えば、ビューポートが再描画される前にクリップ矩形が更新されることがあります。 すると、次のような結果が得られます。</p>
<p><img decoding="async" loading="lazy" alt="ビューポートの前にクリップ矩形が更新された視覚化" src="https://electronjs.org/ja/assets/images/visualization-3-591fc7ac330ff6a128a21a77c1d7a5a7.png" width="2363" height="1074" class="img_ev3q"></p>
<p>緑色のビューポートには古いフレームがまだ表示されています。 しかしクリップ矩形は大きくなり、まだ再描画していないサーフェスの領域が表示されます。</p>
<p>ウインドウを初めてサイズ変更すると、これらの領域は黒になります。 2 回目のサイズ変更では、これらの領域は古いピクセル値で埋まっています。 そこに表示されるのは、私たちが以前その領域に描いたものです。</p>
<p>同様に、ウインドウを小さくしているときに、特定のエッジケースでクリップ矩形の更新前にビューポートを再描画することがありました。</p>
<p><img decoding="async" loading="lazy" alt="クリップ矩形の更新前にビューポートが再描画された視覚化" src="https://electronjs.org/ja/assets/images/visualization-4-f3426cb7df0dcf75d76bf465c5f9c8fe.png" width="2363" height="1074" class="img_ev3q"></p>
<p>すると、新しいフレームが小さくなり、新しいビューポートを超える領域は再描画されなかったため、クリップ矩形の一部にはまだ前のフレームが表示されます。</p>
<p>では、なぜこれらの操作は同期して行われないのでしょうか？</p>
<p>ここでは 2 つの異なる Windows API を使用しています。</p>
<ul>
<li class=""><a href="https://source.chromium.org/chromium/chromium/src/+/main:gpu/command_buffer/service/shared_image/dxgi_swap_chain_image_backing.cc;l=283;drc=92e802d8fa66bafb0cca9ed32143d6148d8e0411" target="_blank" rel="noopener noreferrer" class=""><code>IDXGISwapChain1::Present1</code></a> — これにより画面上に新しいピクセルが表示され、新しいビューポートが更新されます。</li>
<li class=""><a href="https://source.chromium.org/chromium/chromium/src/+/main:ui/gl/dc_layer_tree.cc;l=1034;drc=35d26d364efb57d0386b98312ba739f7f65ae97e" target="_blank" rel="noopener noreferrer" class=""><code>IDCompositionDevice::Commit</code></a> — これによりクリップ矩形が更新されます。</li>
</ul>
<p>理解しておくべき重要な点は、両方の関数は CPU 上で同期的に戻るということです。 しかし、GPU 上で非同期的に実行されるタスクは後でスケジュールされます。 Windows とそのサービス (<a href="https://ja.wikipedia.org/wiki/Desktop_Window_Manager" target="_blank" rel="noopener noreferrer" class="">DWM</a> など) は、これらのタスクがいつどのような順序で実行されるかを決定します。 したがって、それらは非同期的に有効になり、必ずしも同じフレーム内で有効になるわけではありません。</p>
<p>残念ながら、Windows ではこれらの操作を同期する方法が提供されていません。 そのため、この問題を解決するには他の方法を見つける必要がありました。</p>
<p>Chromium のメンテナと評価した選択肢は以下の 2 つです。</p>
<ol>
<li class="">サイズ変更時に、ビューポートの外側にある以前に描画された全領域を透明で塗る。 これにより、それらの領域は見えなくなります。 これで画面の乱れは修正されます。</li>
<li class="">サイズ変更を、<code>IDXGISwapChain1</code> から、<code>IDCompositionDevice::Commit</code> で更新を同期する DirectComposition サーフェスに切り替える。 これでも画面の乱れは修正されます。</li>
</ol>
<p>私たちは 1 つ目のオプションを選択しました。2 番目の選択肢よりもサイズ変更が高速だったからです。</p>
<p>私は最初の解決策を実装した <a href="https://crrev.com/c/7115438" target="_blank" rel="noopener noreferrer" class="">パッチ</a> を Chromium に導入しました。</p>
<p>メインのパッチの準備として、他に以下の 2 つのパッチも提出しました。</p>
<ol>
<li class=""><a href="https://crrev.com/c/7129658" target="_blank" rel="noopener noreferrer" class="">1 つ目のもの</a> は、メインパッチとの組み合わせると CI が失敗する原因となっていた既存コードのバグを修正しました。 これで Electron アプリと Chrome の起動も少し速くなりました。</li>
<li class=""><a href="https://crrev.com/c/7210913" target="_blank" rel="noopener noreferrer" class="">2 つ目</a> は、メインのパッチのコードレビューを容易にするために分割したものです。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-つ目のバグ">2 つ目のバグ<a href="https://electronjs.org/ja/blog/tech-talk-window-resize-behavior#2-%E3%81%A4%E7%9B%AE%E3%81%AE%E3%83%90%E3%82%B0" class="hash-link" aria-label="2 つ目のバグ への直接リンク" title="2 つ目のバグ への直接リンク" translate="no">​</a></h2>
<p>この 1 つ目のバグに加えて、ピクセルの古さに起因する 2 つ目のバグもありました。</p>
<p>つまり以下のようになっています。</p>
<p>ユーザーがウインドウのサイズを変更すると、Chromium は新しいウインドウサイズに合わせてウインドウの中身を再描画する必要があります。 これには時間がかかります。 新しいフレームをすぐに準備できません。</p>
<p>このようになるフレームの時系列を以下に示します。</p>
<p><img decoding="async" loading="lazy" alt="Chromium サイズ変更の時系列の 1 番目のフレーム" src="https://electronjs.org/ja/assets/images/chromium-resize-sequence-1-1506e1883e774679eb634cc3015ed384.png" width="3248" height="2120" class="img_ev3q">
<img decoding="async" loading="lazy" alt="Chromium サイズ変更の時系列の 2 番目のフレーム" src="https://electronjs.org/ja/assets/images/chromium-resize-sequence-2-222088171e9defb86b9c67a1844d9ef0.png" width="3248" height="2120" class="img_ev3q">
<img decoding="async" loading="lazy" alt="Chromium サイズ変更の時系列の 3 番目のフレーム" src="https://electronjs.org/ja/assets/images/chromium-resize-sequence-3-3195950f19df4d5e2d5554d2318f28d9.png" width="3248" height="2120" class="img_ev3q">
<img decoding="async" loading="lazy" alt="Chromium サイズ変更の時系列の 4 番目のフレーム" src="https://electronjs.org/ja/assets/images/chromium-resize-sequence-4-5368a92b507d2201821905db0418caa7.png" width="3248" height="2120" class="img_ev3q">
<img decoding="async" loading="lazy" alt="Chromium サイズ変更の時系列の 5 番目のフレーム" src="https://electronjs.org/ja/assets/images/chromium-resize-sequence-5-f924ee4ceedd3fc9b0546740ed2d5893.png" width="3248" height="2120" class="img_ev3q"></p>
<p>サイズ変更中のある特定の時点で、Windows は「そのウインドウの幅は 1,000 ピクセルです」と知らせます。 しかし、ブラウザのコンポジッタが生成するフレームは遅れています。 最後に描画したフレームの幅は 600 ピクセルかもしれません。</p>
<p>これまで、Chromium はウインドウの幅が最後に描画したフレームの幅と一致しないフレームをスキップしていました。 このときはただウインドウを更新しないと決めています。</p>
<p>しかし、サイズ変更操作が完了するまでウインドウの内容がまったく更新されないことがよくあります。</p>
<p>そこで <a href="https://crrev.com/1426453006" target="_blank" rel="noopener noreferrer" class="">2015 年</a> に誰かがこう決断しました。「どうしてこれらのフレームを表示しないのか？ ウインドウのサイズと完全には一致しないかもしれないが、少なくとも何かは表示できるだろう。」</p>
<p>これで溝が生じるようになるのですが、当時の溝は黒でした。 そのため以前の実装よりも優れていたのです。</p>
<p>10 年後に DirectComposition になって、この溝はしばしば古いピクセルで埋められるようになりました。</p>
<p>何が起こっていたのかを見てみましょう。</p>
<p>各フレームは複数の描画パスで構成されます。 これらの描画パスは、画面上に描く必要があるさまざまなものを表します。 複雑なビットマップから単色塗りの矩形まであります。</p>
<p>すべてのフレームにはルートの描画パスがあり、ルートの描画パスには他のすべての描画パスが含まれ、それらが結合されます。 (描画パスは木構造に配置され、ルートの描画パスはその木の根になります。)</p>
<p>そこで、サイズ変更によってウインドウの幅が 1,000 ピクセルであることがわかったとします。 したがって、出力サーフェスのビューポートも幅 1,000 ピクセルになるように調整します。 しかし、今受け取ったフレームの幅は 600 ピクセルしかありません。</p>
<p><a href="https://source.chromium.org/chromium/chromium/src/+/main:components/viz/service/display/display.cc;l=1053-1062;drc=152a83bb9fcba4ea3a7b9f8efbe0f6204f95eadd" target="_blank" rel="noopener noreferrer" class="">2015 年からの最適化</a> により、ルートの描画パスの幅も 1,000 ピクセルへ変更されます。 しかし描画パスが実際に画面に描くものは変わりません。 これにはまだ幅 600 ピクセルの画像を描画する命令のみが含まれています。</p>
<p>つまり以下のようになっています。</p>
<p><img decoding="async" loading="lazy" alt="フレームがビューポートより小さいことの視覚化" src="https://electronjs.org/ja/assets/images/visualization-5-5b9be2d5809799e6576c0e3b344c8c7a.png" width="2363" height="1074" class="img_ev3q"></p>
<p>黄色の領域は、フレームの描画パスが実際に何かを描画した領域です。 その幅は 600 ピクセルです。</p>
<p>しかし、緑色のビューポートと赤色のクリップ矩形の幅は 1,000 ピクセルです。 それが画面に表示される領域です。 (結局のところ、ルート描画パスの幅の属性は 1,000 ピクセルの全領域の再描画を要求していました。)</p>
<p>しかし右側 400 ピクセルに対する描画命令がなかったため、それらの領域は更新されませんでした。</p>
<p>最初のサイズ変更では、そこに黒いピクセルが表示されます。 (これはサーフェスの初期化色です。)</p>
<p>その後のサイズ変更では、その領域には以前に描画したものが表示されます。 古いピクセルが表示されることになります。</p>
<p>この問題の修正は <a href="https://crrev.com/c/7156576" target="_blank" rel="noopener noreferrer" class="">crrev.com/c/7156576</a> で行いました。</p>
<p>この修正によりウインドウと異なるサイズのフレームを受信したときの動作が変更されます。 フレームのサイズ変更で古いピクセルを含む溝をつくる代わりに、<a href="https://source.chromium.org/chromium/chromium/src/+/main:components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc;l=555-556;drc=78bd63326c0a2489e6b016140aa4d84014af077a" target="_blank" rel="noopener noreferrer" class="">ビューポートのサイズ変更</a> とクリップ矩形のサイズ変更をします。</p>
<p><img decoding="async" loading="lazy" alt="クリップ矩形とビューポートのサイズがフレームのサイズに合わせて調整されることの視覚化" src="https://electronjs.org/ja/assets/images/visualization-6-182bf0c8c2f7577069b24e766535e5d9.png" width="2363" height="1074" class="img_ev3q"></p>
<p>受け取ったフレームのサイズに合わせてサーフェスをクリップします。 描画指示がある 600 ピクセルを超えるものは表示されません。</p>
<p>ほら、溝も古いピクセルももうありません！</p>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_BuS1"><p><code>supports_viewporter</code> がない場合新しい出力サーフェスを割り当てることになるため、これはコストのかかる操作になります。 そこで、DirectComposition では「ビューポーター」機能を使用します。 なので、ビューポートのサイズを変更してもサーフェスは再割り当てされません。 別の部分を見えるようにするだけです。 したがって、これはコストのかからない操作です。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="パッチを-electron-にバックポートする">パッチを Electron にバックポートする<a href="https://electronjs.org/ja/blog/tech-talk-window-resize-behavior#%E3%83%91%E3%83%83%E3%83%81%E3%82%92-electron-%E3%81%AB%E3%83%90%E3%83%83%E3%82%AF%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B" class="hash-link" aria-label="パッチを Electron にバックポートする への直接リンク" title="パッチを Electron にバックポートする への直接リンク" translate="no">​</a></h2>
<p>修正が Chromium に反映されたら、それを Electron にも反映する必要がありました。</p>
<p><code>main</code> ブランチでは、Electron は Chromium のバージョンを継続的に更新します。 その結果、このパッチは <a href="https://github.com/electron/electron/pull/49145" target="_blank" rel="noopener noreferrer" class="">Chromium ローリング PR</a> で <code>main</code> にマージされました。</p>
<p>しかし、今 <code>main</code> にコミットしたものは約 3 か月後の Electron リリースに含まれるというだけです。 既存のリリースおよびプレリリースの <a class="" href="https://electronjs.org/ja/docs/latest/tutorial/electron-versioning#stabilization-branches">ブランチ</a> は、古いバージョンの Chromium を実行します。</p>
<p>そこで、次のステップはパッチを <a href="https://github.com/electron/electron/pull/49138" target="_blank" rel="noopener noreferrer" class="">Electron 39</a> と <a href="https://github.com/electron/electron/pull/49191" target="_blank" rel="noopener noreferrer" class="">Electron 40</a> にバックポートすることでした。</p>
<p>Electron は <a href="https://github.com/electron/electron/tree/a90ccc753b4d38266323dd054db2b98a45917117/patches/chromium" target="_blank" rel="noopener noreferrer" class=""><code>patches/chromium</code> ディレクトリ</a> で Chromium のパッチのリストを保持しています。 Chromium のパッチをバックポートするときは、ここにそれを追加します。 Electron のビルド時に、これらのパッチは Chromium のソースコードへ適用されます。</p>
<p>(一般論として、私たちは Chromium のパッチ数を少なく抑える](../docs/latest/development/patches#patch-justification) ように努めています。 すべてのパッチは、Chromium の更新でマージコンフリクトを引き起こす可能性があります。 パッチによるメンテナンスの負担は現実問題です。)</p>
<p>Electron 39 の <a href="https://github.com/electron/electron/pull/49138" target="_blank" rel="noopener noreferrer" class="">バックポート PR</a> はすぐにマージされました。 この修正は <a href="https://releases.electronjs.org/release/v39.2.6" target="_blank" rel="noopener noreferrer" class="">Electron 39.2.6</a> の一部となりました。 🎉</p>
<p>Electron 39.2.6 以降でウインドウのサイズを変更しても、古いピクセルは表示されなくなります。</p>
<p><em>(このパッチは <a href="https://www.google.com/chrome/canary/" target="_blank" rel="noopener noreferrer" class="">Google Chrome Canary</a> の一部でもあります。 これらは 2026 年 2 月にリリースされる安定版 Google Chrome の一部となる予定です。)</em></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="謝辞">謝辞<a href="https://electronjs.org/ja/blog/tech-talk-window-resize-behavior#%E8%AC%9D%E8%BE%9E" class="hash-link" aria-label="謝辞 への直接リンク" title="謝辞 への直接リンク" translate="no">​</a></h2>
<p>この作業に資金を提供して頂いた <a href="https://www.plasticity.xyz/" target="_blank" rel="noopener noreferrer" class="">Plasticity</a> に深く感謝します！</p>
<p>ご協力いただいた Chromium チームの Michael Tang 氏と Vasiliy Telezhnikov 氏に感謝します。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="おわりに">おわりに<a href="https://electronjs.org/ja/blog/tech-talk-window-resize-behavior#%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB" class="hash-link" aria-label="おわりに への直接リンク" title="おわりに への直接リンク" translate="no">​</a></h2>
<p>これは私がこれまで取り組んだ中で最も難しいバグでした (18 年間のソフトウェア開発で多くの難しいバグに取り組んできたけれど)。</p>
<p>しかし、これまで取り組んだ中で最も楽しいプロジェクトでもありました。</p>
<p>面白いと思った方は、<a href="https://github.com/electron/electron/" target="_blank" rel="noopener noreferrer" class="">Electron への貢献</a> をご検討ください！ 新人さん大歓迎です。</p>]]></content:encoded>
            <category>テックトーク</category>
            <category>内部詳細</category>
        </item>
        <item>
            <title><![CDATA[12 月の安息月 (Dec'25)]]></title>
            <link>https://electronjs.org/ja/blog/dec-quiet-period-25</link>
            <guid>https://electronjs.org/ja/blog/dec-quiet-period-25</guid>
            <pubDate>Fri, 28 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[12 月 1 日から Electron プロジェクトは安息期間に入り、2026 年 1 月にフル稼働に戻る予定です。 完全な詳細は、ポリシー の節をご参照ください。]]></description>
            <content:encoded><![CDATA[<p>12 月 1 日から Electron プロジェクトは安息期間に入り、2026 年 1 月にフル稼働に戻る予定です。 完全な詳細は、<a class="" href="https://electronjs.org/ja/blog/dec-quiet-period-25#quiet-period-policies">ポリシー</a> の節をご参照ください。</p>
<div style="width:100%;height:0;padding-bottom:56%;position:relative;margin:2rem 0"><iframe src="https://giphy.com/embed/xUA7b5i7joquX9Cp8I" width="100%" height="100%" style="position:absolute" frameborder="0"></iframe></div>
<p>2020 年以来、12 月はプロジェクトメンテナが通常のメンテナンス業務から離れて休憩をとったり集中して作業したりする時期となっています。 この休暇は私たちが休息して来たる年に向けて元気を取り戻すのに役立ちます。</p>
<p>とはいえ、こういった 1 か月に及ぶ休止はオープンソースプロジェクトが健全な状態にあるからこそ実現できます。プロジェクトを継続的に推進してくださっているすべてのメンテナと外部貢献者の方々に感謝申し上げます。 ❤️</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="2025-年の総括">2025 年の総括<a href="https://electronjs.org/ja/blog/dec-quiet-period-25#2025-%E5%B9%B4%E3%81%AE%E7%B7%8F%E6%8B%AC" class="hash-link" aria-label="2025 年の総括 への直接リンク" title="2025 年の総括 への直接リンク" translate="no">​</a></h2>
<p>今年を締めくくるにあたり、私たちが達成したプロジェクトのいくつかを紹介したいと思います。 2025 年に私たちが誇れることは次のとおりです。</p>
<ul>
<li class="">⚛️&nbsp;6 つの Electron の新メジャーバージョンを、他すべての Chromium メジャーバージョンと並行するよう送り出しました。</li>
<li class="">🌿&nbsp;Electron のビルドツールを Ninja から Chromium の新しい <a href="https://groups.google.com/a/chromium.org/g/chromium-dev/c/v-WOvWUtOpg" target="_blank" rel="noopener noreferrer" class="">siso</a> ビルドシステムに移行しました。これによりネイティブのリモートビルド実行サポートが追加されます。</li>
<li class="">✨ <a href="https://releases.electronjs.org/" target="_blank" rel="noopener noreferrer" class="">releases.electronjs.org</a> ページを新しいデザインで改訂しました。</li>
<li class="">✅ 4 つの新しい <a href="https://github.com/electron/rfcs" target="_blank" rel="noopener noreferrer" class="">RFCs</a> を承認し、他に 2 つを <code>electron/electron</code> に実装しました。</li>
<li class="">☀️&nbsp;以下 2 つの新しい <a href="https://summerofcode.withgoogle.com/" target="_blank" rel="noopener noreferrer" class="">Google Summer of Code</a> のプロジェクトを完了しました。<!-- -->
<ul>
<li class=""><a href="https://github.com/electron/devtron/" target="_blank" rel="noopener noreferrer" class="">Devtron</a> DevTools IPC トラッカー拡張機能が、<code>npm install --save-dev @electron/devtron</code> で利用できるようになりました。</li>
<li class="">Electron の <code>BaseWindow</code> モジュールの <a href="https://github.com/electron/rfcs/blob/main/text/0016-save-restore-window-state.md" target="_blank" rel="noopener noreferrer" class="">ウインドウ状態の保存/復元 API</a> が RFC として承認され、Electron コアへの最終マージを待っています。</li>
</ul>
</li>
<li class="">📦&nbsp;すべての <code>@electron/</code> npm パッケージにて、少なくとも Node 22 を必要とする ECMAScript モジュールとして最新化したメジャーバージョンをリリースしました。</li>
<li class="">🔒&nbsp;npm エコシステムにおけるセキュリティインシデントを考慮して、パッケージの公開を <a href="https://docs.continuousauth.dev/" target="_blank" rel="noopener noreferrer" class="">継続的認証</a> から新しいトークンレス OIDC ベースの <a href="https://docs.npmjs.com/trusted-publishers" target="_blank" rel="noopener noreferrer" class="">信頼された頒布</a> システムに移行しました。</li>
<li class="">🧑‍💻 5 人の新しいメンテナーが加わりました。これから毎日素晴らしいソフトウェアを送り出してプロジェクトを長期にわたって運営してくれるでしょう。</li>
</ul>
<p><strong>素晴らしい年をありがとうございました。2026 年に会いましょう！</strong></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="安息期間ポリシー">安息期間ポリシー<a href="https://electronjs.org/ja/blog/dec-quiet-period-25#%E5%AE%89%E6%81%AF%E6%9C%9F%E9%96%93%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC" class="hash-link" aria-label="安息期間ポリシー への直接リンク" title="安息期間ポリシー への直接リンク" translate="no">​</a></h2>
<p>前年から大きな変更はありませんが、期待を和らげつつメンテナが望む限りプロジェクトに関われるように、Issue とプルリクエストのレビューに関する文言を一部変更しました。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="12-月でも変わらないこと">12 月でも変わらないこと<a href="https://electronjs.org/ja/blog/dec-quiet-period-25#12-%E6%9C%88%E3%81%A7%E3%82%82%E5%A4%89%E3%82%8F%E3%82%89%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8" class="hash-link" aria-label="12 月でも変わらないこと への直接リンク" title="12 月でも変わらないこと への直接リンク" translate="no">​</a></h3>
<ol>
<li class="">ゼロデイやその他の主要なセキュリティ関連のリリースは必要に応じて公開されます。 セキュリティインシデントは、<a href="https://github.com/electron/electron/blob/main/SECURITY.md" target="_blank" rel="noopener noreferrer" class="">SECURITY.md</a> ドキュメントに記載されているエスカレーションポリシーを通じて報告されるべきです。</li>
<li class=""><a href="https://github.com/electron/electron/blob/main/CODE_OF_CONDUCT.md" target="_blank" rel="noopener noreferrer" class="">行動規範</a> における通報とモデレーションは継続されます。</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="12-月で変わること">12 月で変わること<a href="https://electronjs.org/ja/blog/dec-quiet-period-25#12-%E6%9C%88%E3%81%A7%E5%A4%89%E3%82%8F%E3%82%8B%E3%81%93%E3%81%A8" class="hash-link" aria-label="12 月で変わること への直接リンク" title="12 月で変わること への直接リンク" translate="no">​</a></h3>
<ol>
<li class="">Electron 37、38、39 を含む、最後の安定ブランチのリリースは、12 月 1 日の週に行われます。 12 月中にこれ以上のリリース予定はありません。</li>
<li class="">12 月の最後の 2 週間は、ナイトリー、アルファ、ベータのリリースを行いません。</li>
<li class=""><a href="https://github.com/electron/governance" target="_blank" rel="noopener noreferrer" class="">ワーキンググループ</a> の定例会は一時停止されます。</li>
<li class="">Issue のトリアージは遅れることがあります。</li>
<li class="">プルリクエストのレビューとマージは遅れることがあります。</li>
</ol>]]></content:encoded>
            <category>ニュース</category>
        </item>
        <item>
            <title><![CDATA[Electron 39.0.0]]></title>
            <link>https://electronjs.org/ja/blog/electron-39-0</link>
            <guid>https://electronjs.org/ja/blog/electron-39-0</guid>
            <pubDate>Tue, 28 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron 39.0.0 がリリースされました! これには Chromium 142.0.7444.52、V8 14.2、Node 22.20.0 へのアップグレードが含まれています。]]></description>
            <content:encoded><![CDATA[<p>Electron 39.0.0 がリリースされました! これには Chromium <code>142.0.7444.52</code>、V8 <code>14.2</code>、Node <code>22.20.0</code> へのアップグレードが含まれています。</p>
<hr>
<p>Electron チームは、Electron 39.0.0 のリリース発表にワクワクしています! <code>npm install electron@latest</code> から npm でインストールするか、<a href="https://www.electronjs.org/releases?channel=stable" target="_blank" rel="noopener noreferrer" class="">リリースウェブサイト</a> からダウンロードできます。 このリリースの詳細は続きをご覧ください。</p>
<p>何かフィードバックがあれば、<a href="https://bsky.app/profile/electronjs.org" target="_blank" rel="noopener noreferrer" class="">Bluesky</a> や <a href="https://social.lfx.dev/@electronjs" target="_blank" rel="noopener noreferrer" class="">Mastodon</a> で共有したり、コミュニティの <a href="https://discord.com/invite/electronjs" target="_blank" rel="noopener noreferrer" class="">Discord</a> に参加してみましょう! バグや機能の要望は Electron の <a href="https://github.com/electron/electron/issues" target="_blank" rel="noopener noreferrer" class="">Issue トラッカー</a> で報告できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="注目すべき変更">注目すべき変更<a href="https://electronjs.org/ja/blog/electron-39-0#%E6%B3%A8%E7%9B%AE%E3%81%99%E3%81%B9%E3%81%8D%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="注目すべき変更 への直接リンク" title="注目すべき変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="asar-整合性が安定版に">ASAR 整合性が安定版に<a href="https://electronjs.org/ja/blog/electron-39-0#asar-%E6%95%B4%E5%90%88%E6%80%A7%E3%81%8C%E5%AE%89%E5%AE%9A%E7%89%88%E3%81%AB" class="hash-link" aria-label="ASAR 整合性が安定版に への直接リンク" title="ASAR 整合性が安定版に への直接リンク" translate="no">​</a></h3>
<p>長年「実験的」機能だったASAR 整合性は、Electron 39 で安定版になりました。 この機能を有効にすると、パッケージされた <code>app.asar</code> が実行時にビルド時のハッシュに対して検証され、改ざんを検出します。 ハッシュが存在しない場合、またはハッシュが一致しない場合は、アプリが強制終了します。</p>
<p><a href="https://www.electronjs.org/docs/latest/tutorial/asar-integrity" target="_blank" rel="noopener noreferrer" class="">ASAR 整合性のドキュメント</a> から、この機能がどのように機能するか、アプリケーションにどのように活用するか、Electron Forge や Electron Packager でどのように使用するかといった、詳細な情報をご覧いただけます。</p>
<p>関連して、<a href="https://github.com/electron/packager" target="_blank" rel="noopener noreferrer" class="">Electron Packager</a> v19 はデフォルトで ASAR が有効になります。 <a href="https://github.com/electron/packager/pull/1841" target="_blank" rel="noopener noreferrer" class="">#1841</a></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="累積的変更">累積的変更<a href="https://electronjs.org/ja/blog/electron-39-0#%E7%B4%AF%E7%A9%8D%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="累積的変更 への直接リンク" title="累積的変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">Chromium <code>142.0.7444.52</code>
<ul>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-142" target="_blank" rel="noopener noreferrer" class="">Chrome 142 の新機能</a></li>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-141" target="_blank" rel="noopener noreferrer" class="">Chrome 141 の新機能</a></li>
</ul>
</li>
<li class="">Node <code>22.20.0</code>
<ul>
<li class=""><a href="https://nodejs.org/en/blog/release/v22.20.0" target="_blank" rel="noopener noreferrer" class="">v22.20.0 のお知らせ</a></li>
<li class=""><a href="https://nodejs.org/en/blog/release/v22.19.0" target="_blank" rel="noopener noreferrer" class="">v22.19.0 のお知らせ</a></li>
</ul>
</li>
<li class="">V8 <code>14.2</code>
<ul>
<li class=""><a href="https://chromium.googlesource.com/v8/v8.git/+/bb294624702efbb17691b642333f06bf5108e600" target="_blank" rel="noopener noreferrer" class="">V8 roll increment</a></li>
</ul>
</li>
</ul>
<p>Electron 39 では、Chromium は <code>140.0.7339.41</code> から <code>142.0.7444.52</code> へ、Node は <code>22.18.0</code> から <code>20.0.0</code> へ、V8 は <code>14.0</code> から <code>14.2</code> へとアップグレードしています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="新機能と改善点">新機能と改善点<a href="https://electronjs.org/ja/blog/electron-39-0#%E6%96%B0%E6%A9%9F%E8%83%BD%E3%81%A8%E6%94%B9%E5%96%84%E7%82%B9" class="hash-link" aria-label="新機能と改善点 への直接リンク" title="新機能と改善点 への直接リンク" translate="no">​</a></h2>
<ul>
<li class=""><code>app.isHardwareAccelerationEnabled()</code>を追加しました。 <a href="https://github.com/electron/electron/pull/48680" target="_blank" rel="noopener noreferrer" class="">#48680</a></li>
<li class="">オフスクリーンレンダリングに scRGB HDR 色空間をサポートする「RGBAF16」出力フォーマットを追加しました。 <a href="https://github.com/electron/electron/pull/48504" target="_blank" rel="noopener noreferrer" class="">#48504</a></li>
<li class="">より詳細なアクセシビリティサポート管理を有効にするためのメソッドを追加しました。 <a href="https://github.com/electron/electron/pull/48625" target="_blank" rel="noopener noreferrer" class="">#48625</a></li>
<li class=""><code>USBDevice.configurations</code> のサポートの追加しました。 <a href="https://github.com/electron/electron/pull/47459" target="_blank" rel="noopener noreferrer" class="">#47459</a></li>
<li class=""><code>systemPreferences.getAccentColor</code> を使用して Linux 上のシステムアクセントカラーを取得する機能を追加しました。 <a href="https://github.com/electron/electron/pull/48628" target="_blank" rel="noopener noreferrer" class="">#48628</a></li>
<li class="">特定のセッション内でファイルシステム API の権限状態を保持できるようにしました。 <a href="https://github.com/electron/electron/pull/48326" target="_blank" rel="noopener noreferrer" class="">#48326</a> <sup>(及び <a href="https://github.com/electron/electron/pull/48328" target="_blank" rel="noopener noreferrer" class="">37</a>, <a href="https://github.com/electron/electron/pull/48327" target="_blank" rel="noopener noreferrer" class="">38</a>)</sup></li>
<li class="">コンテキスト分離されていないプリロードで動的ESMインポートをサポートしました。 <a href="https://github.com/electron/electron/pull/48488" target="_blank" rel="noopener noreferrer" class="">#48488</a> <sup>(及び <a href="https://github.com/electron/electron/pull/48487" target="_blank" rel="noopener noreferrer" class="">37</a>, <a href="https://github.com/electron/electron/pull/48489" target="_blank" rel="noopener noreferrer" class="">38</a>)</sup></li>
<li class=""><a href="https://www.electronjs.org/docs/latest/tutorial/asar-integrity" target="_blank" rel="noopener noreferrer" class="">ASAR 整合性</a> 機能を安定版としてマークしました。 以前まで実験的機能でした。 <a href="https://github.com/electron/electron/pull/48434" target="_blank" rel="noopener noreferrer" class="">#48434</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="破壊的変更">破壊的変更<a href="https://electronjs.org/ja/blog/electron-39-0#%E7%A0%B4%E5%A3%8A%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="破壊的変更 への直接リンク" title="破壊的変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="非推奨---host-rules-コマンドラインスイッチ">非推奨： <code>--host-rules</code> コマンドラインスイッチ<a href="https://electronjs.org/ja/blog/electron-39-0#%E9%9D%9E%E6%8E%A8%E5%A5%A8---host-rules-%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81" class="hash-link" aria-label="非推奨---host-rules-コマンドラインスイッチ への直接リンク" title="非推奨---host-rules-コマンドラインスイッチ への直接リンク" translate="no">​</a></h3>
<p>Chromium は <code>--host-rules</code> スイッチを非推奨にしています。</p>
<p>代わりに <code>--host-resolver-rules</code> を使用してください。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作変更windowopen-ポップアップが常にリサイズ可能に">動作変更：<code>window.open</code> ポップアップが常にリサイズ可能に<a href="https://electronjs.org/ja/blog/electron-39-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4windowopen-%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%81%8C%E5%B8%B8%E3%81%AB%E3%83%AA%E3%82%B5%E3%82%A4%E3%82%BA%E5%8F%AF%E8%83%BD%E3%81%AB" class="hash-link" aria-label="動作変更windowopen-ポップアップが常にリサイズ可能に への直接リンク" title="動作変更windowopen-ポップアップが常にリサイズ可能に への直接リンク" translate="no">​</a></h3>
<p>現行の <a href="https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-open-dev" target="_blank" rel="noopener noreferrer" class="">WHATWG 仕様</a> では、<code>window.open</code> API はいかなる場合において、リサイズ可能なポップアップウィンドウを作成するようになりました。</p>
<p>To restore previous behavior:</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">setWindowOpenHandler</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">details</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">action</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'allow'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">overrideBrowserWindowOptions</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token literal-property property" style="color:#36acaa">resizable</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> details</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">features</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">includes</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'resizable=yes'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="behavior-changed-nsaudiocaptureusagedescription-should-be-included-in-your-apps-infoplist-file-to-use-desktopcapturer--macos-142">Behavior Changed: <code>NSAudioCaptureUsageDescription</code> should be included in your app's Info.plist file to use <code>desktopCapturer</code> (🍏 macOS ≥14.2)<a href="https://electronjs.org/ja/blog/electron-39-0#behavior-changed-nsaudiocaptureusagedescription-should-be-included-in-your-apps-infoplist-file-to-use-desktopcapturer--macos-142" class="hash-link" aria-label="behavior-changed-nsaudiocaptureusagedescription-should-be-included-in-your-apps-infoplist-file-to-use-desktopcapturer--macos-142 への直接リンク" title="behavior-changed-nsaudiocaptureusagedescription-should-be-included-in-your-apps-infoplist-file-to-use-desktopcapturer--macos-142 への直接リンク" translate="no">​</a></h3>
<p>Due to a <a href="https://source.chromium.org/chromium/chromium/src/+/ad17e8f8b93d5f34891b06085d373a668918255e" target="_blank" rel="noopener noreferrer" class="">Chromium update</a> which enables Apple's newer <a href="https://developer.apple.com/documentation/CoreAudio/capturing-system-audio-with-core-audio-taps#Configure-the-sample-code-project" target="_blank" rel="noopener noreferrer" class="">CoreAudio Tap API</a> by default, you now must have <code>NSAudioCaptureUsageDescription</code> defined in your <code>Info.plist</code> to use <code>desktopCapturer</code>.</p>
<p>Electron's <code>desktopCapturer</code> will create a dead audio stream if the new permission is absent. However, no errors or warnings will occur. This is partially a side-effect of Chromium not falling back to the older <code>Screen &amp; System Audio Recording</code> permissions system if the new system fails.</p>
<p>To restore previous behavior:</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">//main.js (right beneath your require/import statments)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">app</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">commandLine</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">appendSwitch</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">'disable-features'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">'MacCatapLoopbackAudioForScreenShare'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作変更共有テクスチャ-osr-paint-イベントデータ構造">動作変更：共有テクスチャ OSR paint イベントデータ構造<a href="https://electronjs.org/ja/blog/electron-39-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4%E5%85%B1%E6%9C%89%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A3-osr-paint-%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0" class="hash-link" aria-label="動作変更：共有テクスチャ OSR paint イベントデータ構造 への直接リンク" title="動作変更：共有テクスチャ OSR paint イベントデータ構造 への�直接リンク" translate="no">​</a></h3>
<p>共有テクスチャオフスクリーンレンダリング機能を使用する際、<code>paint</code> イベントがより構造化されたオブジェクトを発行するようになりました。
これにより、<code>sharedTextureHandle</code>、<code>planes</code>、<code>modifier</code> が統一された <code>handle</code> プロパティにまとめられました。
詳細については、<a href="https://www.electronjs.org/docs/latest/api/structures/offscreen-shared-texture" target="_blank" rel="noopener noreferrer" class="">OffscreenSharedTexture のドキュメント</a> をご覧ください。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="36xy-サポートの終了">36.x.y サポートの終了<a href="https://electronjs.org/ja/blog/electron-39-0#36xy-%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E7%B5%82%E4%BA%86" class="hash-link" aria-label="36.x.y サポートの終了 への直接リンク" title="36.x.y サポートの終了 への直接リンク" translate="no">​</a></h2>
<p>プロジェクトの <a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy" target="_blank" rel="noopener noreferrer" class="">サポートポリシー</a> に則り、Electron 36.x.y はサポート終了を迎えました。 開発者とアプリケーションは新しいバージョンの Electron にアップグレードすることを推奨します。</p>
<table><thead><tr><th>E39 (2025 年 10 月)</th><th>E40 (2026 年 1 月)</th><th>E41 (2026 年 2 月)</th></tr></thead><tbody><tr><td>39.x.y</td><td>40.x.y</td><td>41.x.y</td></tr><tr><td>38.x.y</td><td>39.x.y</td><td>40.x.y</td></tr><tr><td>37.x.y</td><td>38.x.y</td><td>39.x.y</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="次回予告">次回予告<a href="https://electronjs.org/ja/blog/electron-39-0#%E6%AC%A1%E5%9B%9E%E4%BA%88%E5%91%8A" class="hash-link" aria-label="次回予告 への直接リンク" title="次回予告 への直接リンク" translate="no">​</a></h2>
<p>短期的には、Chromium、Node、V8 といった Electron を構成する主要コンポーネントの開発に遅れないでチームが注力し続けるでしょう。</p>
<p><a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines" target="_blank" rel="noopener noreferrer" class="">Electron の公開タイムラインはこちらで</a> ご覧いただけます。</p>
<p>今後の変更についての詳細は、<a href="https://github.com/electron/electron/blob/main/docs/breaking-changes.md" target="_blank" rel="noopener noreferrer" class="">予定されている破壊的変更</a> のページをご覧ください。</p>]]></content:encoded>
            <category>Release</category>
        </item>
        <item>
            <title><![CDATA[Electron 38.0.0]]></title>
            <link>https://electronjs.org/ja/blog/electron-38-0</link>
            <guid>https://electronjs.org/ja/blog/electron-38-0</guid>
            <pubDate>Tue, 09 Sep 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron 38.0.0 がリリースされました! これには Chromium 140.0.7339.41、V8 14.0、Node 22.16.0 へのアップグレードが含まれています。]]></description>
            <content:encoded><![CDATA[<p>Electron 38.0.0 がリリースされました! これには Chromium 140.0.7339.41、V8 14.0、Node 22.16.0 へのアップグレードが含まれています。</p>
<hr>
<p>Electron チームは、Electron 38.0.0 のリリース発表にワクワクしています! <code>npm install electron@latest</code> から npm でインストールするか、<a href="https://www.electronjs.org/releases?channel=stable" target="_blank" rel="noopener noreferrer" class="">リリースウェブサイト</a> からダウンロードできます。 このリリースの詳細は続きをご覧ください。</p>
<p>何かフィードバックがあれば、<a href="https://bsky.app/profile/electronjs.org" target="_blank" rel="noopener noreferrer" class="">Bluesky</a> や <a href="https://social.lfx.dev/@electronjs" target="_blank" rel="noopener noreferrer" class="">Mastodon</a> で共有したり、コミュニティの <a href="https://discord.com/invite/electronjs" target="_blank" rel="noopener noreferrer" class="">Discord</a> に参加してみましょう! バグや機能の要望は Electron の <a href="https://github.com/electron/electron/issues" target="_blank" rel="noopener noreferrer" class="">Issue トラッカー</a> で報告できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="累積的変更">累積的変更<a href="https://electronjs.org/ja/blog/electron-38-0#%E7%B4%AF%E7%A9%8D%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="累積的変更 への直接リンク" title="累積的変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">Chromium <code>140.0.7339.41</code>
<ul>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-140/" target="_blank" rel="noopener noreferrer" class="">Chrome 140 の新機能</a></li>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-139/" target="_blank" rel="noopener noreferrer" class="">Chrome 139 の新機能</a></li>
</ul>
</li>
<li class="">Node <code>22.18.0</code>
<ul>
<li class=""><a href="https://nodejs.org/en/blog/release/v22.18.0/" target="_blank" rel="noopener noreferrer" class="">Node 22.18.0 ブログ記事</a></li>
</ul>
</li>
<li class="">V8 <code>14.0</code>
<ul>
<li class=""><a href="https://chromium.googlesource.com/v8/v8.git/+/fdb12b460f148895f6af2ff0e0d870ff8889f154" target="_blank" rel="noopener noreferrer" class="">V8 roll increment</a></li>
</ul>
</li>
</ul>
<p>Electron 38 では、Chromium は <code>138.0.7204.35</code> から <code>140.0.7339.41</code> へ、Node は <code>22.16.0</code> から <code>22.18.0</code> へ、V8 は <code>13.8</code> から <code>14.0</code> へとアップグレードしています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="新機能と改善点">新機能と改善点<a href="https://electronjs.org/ja/blog/electron-38-0#%E6%96%B0%E6%A9%9F%E8%83%BD%E3%81%A8%E6%94%B9%E5%96%84%E7%82%B9" class="hash-link" aria-label="新機能と改善点 への直接リンク" title="新機能と改善点 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">システムアクセントカラーのカスタマイズと、アクティブなウィンドウの枠線の強調表示をサポートしました。 <a href="https://github.com/electron/electron/pull/47285" target="_blank" rel="noopener noreferrer" class="">#47285</a> (及び <a href="https://github.com/electron/electron/pull/47537" target="_blank" rel="noopener noreferrer" class="">37</a>)</li>
<li class="">macOS の <code>process.getSystemMemoryInfo()</code> に <code>fileBacked</code> と <code>purgeable</code> フィールドを追加しました。 <a href="https://github.com/electron/electron/pull/48146" target="_blank" rel="noopener noreferrer" class="">#48146</a> (及び <a href="https://github.com/electron/electron/pull/48143" target="_blank" rel="noopener noreferrer" class="">37</a>)</li>
<li class="">macOS 上で起動時に Tray アイコンが位置を維持できるように、 <code>guid</code> コンストラクタオプションをサポートしました。 <a href="https://github.com/electron/electron/pull/48077" target="_blank" rel="noopener noreferrer" class="">#48077</a> (及び <a href="https://github.com/electron/electron/pull/48076" target="_blank" rel="noopener noreferrer" class="">37</a>)</li>
<li class=""><code>frameToken</code> から <code>WebFrameMain</code> を取得できるように、 <code>WebFrameMain.fromFrameToken(processId, frameToken)</code> を追加しました。 <a href="https://github.com/electron/electron/pull/47942" target="_blank" rel="noopener noreferrer" class="">#47942</a></li>
<li class="">Windows と macOS に <code>app.getRecentDocuments()</code> のサポートを追加しました。 <a href="https://github.com/electron/electron/pull/47924" target="_blank" rel="noopener noreferrer" class="">#47924</a> (及び <a href="https://github.com/electron/electron/pull/47923" target="_blank" rel="noopener noreferrer" class="">37</a>)</li>
<li class="">アセットやリソースの場所を特定するために、内部的に <code>DIR_ASSETS</code> ではなく <code>DIR_MODULE</code>/<code>DIR_EXE</code> を使用するように変更し、<code>app.getPath</code> で要求できる名前として「assets」を追加しました。 <a href="https://github.com/electron/electron/pull/47950" target="_blank" rel="noopener noreferrer" class="">#47950</a> (及び <a href="https://github.com/electron/electron/pull/47951" target="_blank" rel="noopener noreferrer" class="">37</a>)</li>
<li class=""><code>dialog.showMessageDialog</code> が親ウィンドウを渡したときに、モニターの中心に誤ってウィンドウが表示される問題を修正しました。 <a href="https://github.com/electron/electron/pull/48215" target="_blank" rel="noopener noreferrer" class="">#48215</a></li>
<li class="">macOS で <code>loadURL</code> を介して読み込まれた Web ページをユーザが操作できなかった問題を修正しました。 <a href="https://github.com/electron/electron/pull/47575" target="_blank" rel="noopener noreferrer" class="">#47575</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="破壊的変更">破壊的変更<a href="https://electronjs.org/ja/blog/electron-38-0#%E7%A0%B4%E5%A3%8A%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="破壊的変更 への直接リンク" title="破壊的変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="removed-macos-11-support">Removed: macOS 11 support<a href="https://electronjs.org/ja/blog/electron-38-0#removed-macos-11-support" class="hash-link" aria-label="Removed: macOS 11 support への直接リンク" title="Removed: macOS 11 support への直接リンク" translate="no">​</a></h3>
<p>macOS 11 (Big Sur) は <a href="https://chromium-review.googlesource.com/c/chromium/src/+/6594615" target="_blank" rel="noopener noreferrer" class="">Chromium</a> でサポートされなくなりました。</p>
<p>Older versions of Electron will continue to run on Big Sur, but macOS 12 (Monterey)
or later will be required to run Electron v38.0.0 and higher.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="削除-electron_ozone_platform_hint-環境変数">削除: <code>ELECTRON_OZONE_PLATFORM_HINT</code> 環境変数<a href="https://electronjs.org/ja/blog/electron-38-0#%E5%89%8A%E9%99%A4-electron_ozone_platform_hint-%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0" class="hash-link" aria-label="削除-electron_ozone_platform_hint-環境変数 への直接リンク" title="削除-electron_ozone_platform_hint-環境変数 への直接リンク" translate="no">​</a></h3>
<p>The default value of the <code>--ozone-platform</code> flag <a href="https://chromium-review.googlesource.com/c/chromium/src/+/6775426" target="_blank" rel="noopener noreferrer" class="">changed to <code>auto</code></a>.</p>
<p>Linux の Wayland セッションで起動すると、Electron はデフォルトでネイティブの Wayland アプリとして実行されるようになりました。 一部の機能と API は Wayland と X11 では動作が異なる場合があります。
<code>--ozone-platform=x11</code> フラグを追加することで、古いバージョンのように、X11 互換モード（Xwayland）で Electron を強制的に実行することができます。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="削除-plugin-crashed-イベント">削除: <code>plugin-crashed</code> イベント<a href="https://electronjs.org/ja/blog/electron-38-0#%E5%89%8A%E9%99%A4-plugin-crashed-%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88" class="hash-link" aria-label="削除-plugin-crashed-イベント への直接リンク" title="削除-plugin-crashed-イベント への直接リンク" translate="no">​</a></h3>
<p><code>webContents</code> から <code>plugin-crashed</code> イベントが削除されました。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="非推奨-webframeroutingid-プロパティ">非推奨: <code>webFrame.routingId</code> プロパティ<a href="https://electronjs.org/ja/blog/electron-38-0#%E9%9D%9E%E6%8E%A8%E5%A5%A8-webframeroutingid-%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3" class="hash-link" aria-label="非推奨-webframeroutingid-プロパティ への直接リンク" title="非推奨-webframeroutingid-プロパティ への直接リンク" translate="no">​</a></h3>
<p><code>routingId</code> プロパティは将来的に <code>webFrame</code> オブジェクトから削除されます。</p>
<p>代わりに <code>webFrame.frameToken</code> を使用してください。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="非推奨-webframefindframebyroutingidroutingid">非推奨: <code>webFrame.findFrameByRoutingId(routingId)</code><a href="https://electronjs.org/ja/blog/electron-38-0#%E9%9D%9E%E6%8E%A8%E5%A5%A8-webframefindframebyroutingidroutingid" class="hash-link" aria-label="非推奨-webframefindframebyroutingidroutingid への直接リンク" title="非推奨-webframefindframebyroutingidroutingid への直接リンク" translate="no">​</a></h3>
<p><code>webFrame.findFrameByRoutingId(routingId)</code> 関数は将来的に削除されます。</p>
<p>代わりに <code>webFrame.findFrameByToken(frameToken)</code> を使用してください。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="google-summer-of-code-閉幕">Google Summer of Code 閉幕<a href="https://electronjs.org/ja/blog/electron-38-0#google-summer-of-code-%E9%96%89%E5%B9%95" class="hash-link" aria-label="Google Summer of Code 閉幕 への直接リンク" title="Google Summer of Code 閉幕 への直接リンク" translate="no">​</a></h2>
<p>私たちの 2 人の <a href="https://summerofcode.withgoogle.com/" target="_blank" rel="noopener noreferrer" class="">Google Summer of Code</a> コントリビューターが夏のプロジェクトを完了しました！</p>
<ul>
<li class=""><a href="https://github.com/nilayarya" target="_blank" rel="noopener noreferrer" class="">@nilayarya</a> は Electron コアで新しい <a href="https://github.com/electron/rfcs/pull/16/" target="_blank" rel="noopener noreferrer" class="">ウィンドウ状態の保存/復元 API</a> を作成しました。 この新しい API は、ウインドウの状態の永続化処理のための組み込みで標準化された方法を提供します。 <a href="https://github.com/electron/rfcs/pull/16" target="_blank" rel="noopener noreferrer" class="">electron/rfcs#16</a> で Nilay のオリジナルの RFC を参照してください。</li>
<li class=""><a href="https://github.com/hitarth-gg" target="_blank" rel="noopener noreferrer" class="">@hitarth-gg</a> は Chrome Manifest V3 API を使用して、長期休止状態の <a href="https://github.com/electron-userland/devtron" target="_blank" rel="noopener noreferrer" class="">Devtron</a> 拡張機能の近代化に多大な労力を費やしました。
このプロジェクトは、開発者が IPC 通信のデバッグ、イベントリスナーの追跡、および Electron アプリケーション内のモジュールの依存関係を視覚化するためのツールを提供します。</li>
</ul>
<p>彼らのプロジェクトと成果について、より詳しいブログ記事を近日公開予定。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="35xy-サポートの終了">35.x.y サポートの終了<a href="https://electronjs.org/ja/blog/electron-38-0#35xy-%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E7%B5%82%E4%BA%86" class="hash-link" aria-label="35.x.y サポートの終了 への直接リンク" title="35.x.y サポートの終了 への直接リンク" translate="no">​</a></h2>
<p>プロジェクトの <a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy" target="_blank" rel="noopener noreferrer" class="">サポートポリシー</a> に則り、Electron 35.x.y はサポート終了を迎えました。 開発者とアプリケーションは新しいバージョンの Electron にアップグレードすることを推奨します。</p>
<table><thead><tr><th>E38 (2025 年 9 月)</th><th>E39 (2025 年 10 月)</th><th>E40 (2026 年 1 月)</th></tr></thead><tbody><tr><td>38.x.y</td><td>39.x.y</td><td>40.x.y</td></tr><tr><td>37.x.y</td><td>38.x.y</td><td>39.x.y</td></tr><tr><td>36.x.y</td><td>37.x.y</td><td>38.x.y</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="次回予告">次回予告<a href="https://electronjs.org/ja/blog/electron-38-0#%E6%AC%A1%E5%9B%9E%E4%BA%88%E5%91%8A" class="hash-link" aria-label="次回予告 への直接リンク" title="次回予告 への直接リンク" translate="no">​</a></h2>
<p>短期的には、Chromium、Node、V8 といった Electron を構成する主要コンポーネントの開発に遅れないでチームが注力し続けるでしょう。</p>
<p><a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines" target="_blank" rel="noopener noreferrer" class="">Electron の公開タイムラインはこちらで</a> ご覧いただけます。</p>
<p>今後の変更についての詳細は、<a href="https://github.com/electron/electron/blob/main/docs/breaking-changes.md" target="_blank" rel="noopener noreferrer" class="">予定されている破壊的変更</a> のページをご覧ください。</p>]]></content:encoded>
            <category>Release</category>
        </item>
        <item>
            <title><![CDATA[Electron 37.0.0]]></title>
            <link>https://electronjs.org/ja/blog/electron-37-0</link>
            <guid>https://electronjs.org/ja/blog/electron-37-0</guid>
            <pubDate>Tue, 24 Jun 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron 37.0.0 がリリースされました! これには Chromium 138、V8 13.8、Node 22.16.0 へのアップグレードが含まれています。]]></description>
            <content:encoded><![CDATA[<p>Electron 37.0.0 がリリースされました! これには Chromium 138、V8 13.8、Node 22.16.0 へのアップグレードが含まれています。</p>
<hr>
<p>Electron チームは、Electron 37.0.0 のリリース発表にワクワクしています! <code>npm install electron@latest</code> から npm でインストールするか、<a href="https://www.electronjs.org/releases?channel=stable" target="_blank" rel="noopener noreferrer" class="">リリースウェブサイト</a> からダウンロードできます。 このリリースの詳細は続きをご覧ください。</p>
<p>何かフィードバックがあれば、<a href="https://bsky.app/profile/electronjs.org" target="_blank" rel="noopener noreferrer" class="">Bluesky</a> や <a href="https://social.lfx.dev/@electronjs" target="_blank" rel="noopener noreferrer" class="">Mastodon</a> で共有したり、コミュニティの <a href="https://discord.com/invite/electronjs" target="_blank" rel="noopener noreferrer" class="">Discord</a> に参加してみましょう! バグや機能の要望は Electron の <a href="https://github.com/electron/electron/issues" target="_blank" rel="noopener noreferrer" class="">Issue トラッカー</a> で報告できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="google-summer-of-code-の開始">Google Summer of Code の開始<a href="https://electronjs.org/ja/blog/electron-37-0#google-summer-of-code-%E3%81%AE%E9%96%8B%E5%A7%8B" class="hash-link" aria-label="Google Summer of Code の開始 への直接リンク" title="Google Summer of Code の開始 への直接リンク" translate="no">​</a></h2>
<p>2 人の <a href="https://summerofcode.withgoogle.com/" target="_blank" rel="noopener noreferrer" class="">Google Summer of Code</a> の貢献者がプログラムのコーディング期間を開始しました！</p>
<ul>
<li class=""><a href="https://github.com/nilayarya" target="_blank" rel="noopener noreferrer" class="">@nilayarya</a> は Electron コアで新しい <a href="https://github.com/electron/rfcs/pull/16/" target="_blank" rel="noopener noreferrer" class="">ウィンドウ状態の保存/復元 API</a> を作成しています。 この新しい API は、ウインドウの状態の永続化処理のための組み込みで標準化された方法を提供します。 <a href="https://github.com/electron/rfcs/pull/16" target="_blank" rel="noopener noreferrer" class="">electron/rfcs#16</a> で Nilay さんの進行中の RFC を参照してください。</li>
<li class=""><a href="https://github.com/hitarth-gg" target="_blank" rel="noopener noreferrer" class="">@hitarth-gg</a> は、Chrome Manifest V3 API を使用して、長らく休止状態にあった <a href="https://github.com/electron-userland/devtron" target="_blank" rel="noopener noreferrer" class="">Devtron</a> 拡張機能を最新化することに熱心に取り組んでいます。
このプロジェクトは、開発者が IPC 通信のデバッグ、イベントリスナーの追跡、および Electron アプリケーション内のモジュールの依存関係を視覚化するためのツールを提供します。</li>
</ul>
<p>GSOC 参加者にとってこの数週間は刺激的な日々でした。今後の更新情報もご期待ください！</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="注目すべき変更">注目すべき変更<a href="https://electronjs.org/ja/blog/electron-37-0#%E6%B3%A8%E7%9B%AE%E3%81%99%E3%81%B9%E3%81%8D%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="注目すべき変更 への直接リンク" title="注目すべき変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="滑らかな角-ネイティブ-css-のスクワークル">滑らかな角: ネイティブ CSS のスクワークル<a href="https://electronjs.org/ja/blog/electron-37-0#%E6%BB%91%E3%82%89%E3%81%8B%E3%81%AA%E8%A7%92-%E3%83%8D%E3%82%A4%E3%83%86%E3%82%A3%E3%83%96-css-%E3%81%AE%E3%82%B9%E3%82%AF%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%AB" class="hash-link" aria-label="滑らかな角: ネイティブ CSS のスクワークル への直接リンク" title="滑らかな角: ネイティブ CSS のスクワークル への直接リンク" translate="no">​</a></h3>
<p><img decoding="async" loading="lazy" alt="長方形に異なる角のスムージング値 (0%、30%、60%、100%) を適用した画像。60% は macOS のスタイルに一致するというラベル付き" src="https://electronjs.org/ja/assets/images/corner-smoothing-d3a1b1a6fac2cd9162e7594114aebb97.svg" width="1024" height="512" class="img_ev3q"></p>
<p>Electron 37 では、カスタムの <code>-electron-corner-smoothing</code> CSS プロパティが導入され、アプリは Apple の macOS デザイン言語に合わせたより滑らかな丸角を作成できるようになりました。 この機能はもともと Electron 36 に搭載されていましたが、もっと注目されるべき機能だと感じました。</p>
<table><caption>角スムージング 100% の例</caption><thead><tr><th>コード</th><th>結果</th></tr></thead><tbody><tr><td><div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token selector class" style="color:#00009f">.box</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">width</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">128</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">height</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">128</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">border-radius</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">24</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">-electron-corner-smoothing</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">100</span><span class="token unit">%</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div></td><td><img src="https://raw.githubusercontent.com/electron/rfcs/d89000c638a6d98b497ce2fbea07bce45c2760a8/images/0012/Rectangle.svg" width="128px" alt=""></td></tr></tbody></table>
<p>長方形から四分円の角を削り出す標準の <code>border-radius</code> プロパティとは異なり、 <code>-electron-corner-smoothing</code> は連続した縁を持つ <a href="https://en.wikipedia.org/wiki/Squircle" target="_blank" rel="noopener noreferrer" class=""><strong>四角形</strong></a> 状で曲線をスムーズに遷移させます。</p>
<p>0% から 100% までの値を使用して滑らかさを調整したり、<code>system-ui</code> 値を使用してオペレーティングシステムのスタイルに一致させたりできます (macOS では 60%、それ以外の場合は 0%)。
このデザイン強化は、境界線、アウトライン、影にも適用でき、アプリに絶妙な上品さを加えることができます。</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>ヒント</div><div class="admonitionContent_BuS1"><p>Electron のスクワークル実装の詳細については、<a href="https://github.com/clavin" target="_blank" rel="noopener noreferrer" class="">@clavin</a> の <a href="https://github.com/electron/rfcs/blob/main/text/0012-corner-smoothing.md" target="_blank" rel="noopener noreferrer" class="">RFC 0012</a> をご参照ください。
この文書ではその動機と技術的な実装について詳しく説明してあります。</p><p>初期デザインは Figma の角スムージングの実装からインスピレーションを得ています。 滑らかな角を求める彼らの探求について詳しくは、<a href="https://www.figma.com/blog/desperately-seeking-squircles/" target="_blank" rel="noopener noreferrer" class="">"スクワークルを必死に求めて"</a> をご覧ください。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="累積的変更">累積的変更<a href="https://electronjs.org/ja/blog/electron-37-0#%E7%B4%AF%E7%A9%8D%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="累積的変更 への直接リンク" title="累積的変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">Chromium <code>138.0.7204.35</code>
<ul>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-138/" target="_blank" rel="noopener noreferrer" class="">Chrome 138 の新機能</a></li>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-137/" target="_blank" rel="noopener noreferrer" class="">Chrome 137 の新機能</a></li>
</ul>
</li>
<li class="">Node <code>22.16.0</code>
<ul>
<li class=""><a href="https://nodejs.org/en/blog/release/v22.16.0/" target="_blank" rel="noopener noreferrer" class="">Node 22.16.0 ブログ記事</a></li>
</ul>
</li>
<li class="">V8 <code>13.8</code></li>
</ul>
<p>Electron 37 では、Chromium は <code>136.0.7103.48</code> から <code>138.0.7204.35</code> へ、V8 は <code>13.6</code> から <code>13.8</code> へアップグレードしています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="新機能と改善点">新機能と改善点<a href="https://electronjs.org/ja/blog/electron-37-0#%E6%96%B0%E6%A9%9F%E8%83%BD%E3%81%A8%E6%94%B9%E5%96%84%E7%82%B9" class="hash-link" aria-label="新機能と改善点 への直接リンク" title="新機能と改善点 への直接リンク" translate="no">​</a></h2>
<ul>
<li class=""><code>window.open</code>に<code>innerWidth</code>と<code>innerHeight</code>オプションを追加しました。 <a href="https://github.com/electron/electron/pull/47039" target="_blank" rel="noopener noreferrer" class="">#47039</a> (及び <a href="https://github.com/electron/electron/pull/47045" target="_blank" rel="noopener noreferrer" class="">35</a>, <a href="https://github.com/electron/electron/pull/47038" target="_blank" rel="noopener noreferrer" class="">36</a>)</li>
<li class=""><code>webContents</code> でマウスイベントを傍受および阻害するために、<code>before-mouse-event</code> を追加しました。 <a href="https://github.com/electron/electron/pull/47364" target="_blank" rel="noopener noreferrer" class="">#47364</a> (及び <a href="https://github.com/electron/electron/pull/47365" target="_blank" rel="noopener noreferrer" class="">36</a>)</li>
<li class=""><code>scriptURL</code> プロパティを <code>ServiceWorkerMain</code> に追加しました。 <a href="https://github.com/electron/electron/pull/45863" target="_blank" rel="noopener noreferrer" class="">#45863</a></li>
<li class="">macOS &gt;= 14.4 向けにメニューの <code>sublabel</code> 機能を追加しました。 <a href="https://github.com/electron/electron/pull/47042" target="_blank" rel="noopener noreferrer" class="">#47042</a> (及び <a href="https://github.com/electron/electron/pull/47041" target="_blank" rel="noopener noreferrer" class="">35</a>, <a href="https://github.com/electron/electron/pull/47040" target="_blank" rel="noopener noreferrer" class="">36</a>)</li>
<li class=""><code>HIDDevice.collections</code>のサポートの追加しました。 <a href="https://github.com/electron/electron/pull/47483" target="_blank" rel="noopener noreferrer" class="">#47483</a> (及び <a href="https://github.com/electron/electron/pull/47484" target="_blank" rel="noopener noreferrer" class="">36</a>)</li>
<li class=""><code>--no-experimental-global-navigator</code>フラグのサポートを追加しました。 <a href="https://github.com/electron/electron/pull/47418" target="_blank" rel="noopener noreferrer" class="">#47418</a> (及び <a href="https://github.com/electron/electron/pull/47416" target="_blank" rel="noopener noreferrer" class="">35</a>, <a href="https://github.com/electron/electron/pull/47417" target="_blank" rel="noopener noreferrer" class="">36</a>)</li>
<li class="">Linux X11で<code>screen.dipToScreenPoint(point)</code>と<code>screen.screenToDipPoint(point)</code>のサポートを追加しました。 <a href="https://github.com/electron/electron/pull/46895" target="_blank" rel="noopener noreferrer" class="">#46895</a> (及び <a href="https://github.com/electron/electron/pull/47124" target="_blank" rel="noopener noreferrer" class="">35</a>, <a href="https://github.com/electron/electron/pull/47125" target="_blank" rel="noopener noreferrer" class="">36</a>)</li>
<li class="">macOS 向けにメニュー項目のロール <code>palette</code> と <code>header</code> のサポートを追加しました。 <a href="https://github.com/electron/electron/pull/47245" target="_blank" rel="noopener noreferrer" class="">#47245</a></li>
<li class="">Node のオプション <code>--experimental-network-inspection</code> のサポートを追加しました。 <a href="https://github.com/electron/electron/pull/47031" target="_blank" rel="noopener noreferrer" class="">#47031</a> (及び <a href="https://github.com/electron/electron/pull/47029" target="_blank" rel="noopener noreferrer" class="">35</a>, <a href="https://github.com/electron/electron/pull/47030" target="_blank" rel="noopener noreferrer" class="">36</a>)</li>
<li class="">開発者がウインドウの保護状態を確認できるように <code>win.isContentProtected()</code> を公開しました。 <a href="https://github.com/electron/electron/pull/47310" target="_blank" rel="noopener noreferrer" class="">#47310</a> (及び <a href="https://github.com/electron/electron/pull/47311" target="_blank" rel="noopener noreferrer" class="">36</a>)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="破壊的変更">破壊的変更<a href="https://electronjs.org/ja/blog/electron-37-0#%E7%A0%B4%E5%A3%8A%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="破壊的変更 への直接リンク" title="破壊的変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="utility-process-unhandled-rejection-behavior-change">Utility Process unhandled rejection behavior change<a href="https://electronjs.org/ja/blog/electron-37-0#utility-process-unhandled-rejection-behavior-change" class="hash-link" aria-label="Utility Process unhandled rejection behavior change への直接リンク" title="Utility Process unhandled rejection behavior change への直接リンク" translate="no">​</a></h3>
<p>Utility Processes will now warn with an error message when an unhandled
rejection occurs instead of crashing the process.</p>
<p>To restore the previous behavior, you can use:</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">process</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">on</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'unhandledRejection'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  process</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">exit</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作変更-processexit-がユーティリティプロセスを同期的に強制終了するように">動作変更: <code>process.exit()</code> がユーティリティプロセスを同期的に強制終了するように<a href="https://electronjs.org/ja/blog/electron-37-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4-processexit-%E3%81%8C%E3%83%A6%E3%83%BC%E3%83%86%E3%82%A3%E3%83%AA%E3%83%86%E3%82%A3%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%82%92%E5%90%8C%E6%9C%9F%E7%9A%84%E3%81%AB%E5%BC%B7%E5%88%B6%E7%B5%82%E4%BA%86%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB" class="hash-link" aria-label="動作変更-processexit-がユーティリティプロセスを同期的に強制終了するように への直接リンク" title="動作変更-processexit-がユーティリティプロセスを同期的に強制終了するように への直接リンク" translate="no">​</a></h3>
<p>ユーティリティプロセスで <code>process.exit()</code> を呼び出すと、ユーティリティプロセスを同期的に強制終了するようになりました。
これにより、<code>process.exit()</code> の動作が Node.js の動作と一致するようになります。</p>
<p><code>process.exit()</code> の前に <code>console.log()</code> を呼び出す場合等の潜在的な影響を理解したい方は、<a href="https://nodejs.org/docs/latest-v22.x/api/process.html#processexitcode" target="_blank" rel="noopener noreferrer" class="">Node.js のドキュメント</a> と <a href="https://github.com/electron/electron/pull/45690" target="_blank" rel="noopener noreferrer" class="">PR #45690</a> をご参照ください。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="behavior-changed-webusb-and-webserial-blocklist-support">Behavior Changed: WebUSB and WebSerial Blocklist Support<a href="https://electronjs.org/ja/blog/electron-37-0#behavior-changed-webusb-and-webserial-blocklist-support" class="hash-link" aria-label="Behavior Changed: WebUSB and WebSerial Blocklist Support への直接リンク" title="Behavior Changed: WebUSB and WebSerial Blocklist Support への直接リンク" translate="no">​</a></h3>
<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/WebUSB_API" target="_blank" rel="noopener noreferrer" class="">WebUSB</a> と <a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Serial_API" target="_blank" rel="noopener noreferrer" class="">Web Serial</a> は、Chromium で使用されてそれぞれの仕様で概説されている、<a href="https://wicg.github.io/webusb/#blocklist" target="_blank" rel="noopener noreferrer" class="">WebUSB ブロックリスト</a> と <a href="https://wicg.github.io/serial/#blocklist" target="_blank" rel="noopener noreferrer" class="">Web Serial ブロックリスト</a> をサポートするようになりました。</p>
<p>これらを無効化するには、ユーザーがコマンドラインフラグとして <code>disable-usb-blocklist</code> と <code>disable-serial-blocklist</code> を渡すことでできます。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="削除-protocolresponse-の-session-プロパティの-null-値">削除: <code>ProtocolResponse</code> の <code>session</code> プロパティの <code>null</code> 値<a href="https://electronjs.org/ja/blog/electron-37-0#%E5%89%8A%E9%99%A4-protocolresponse-%E3%81%AE-session-%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3%E3%81%AE-null-%E5%80%A4" class="hash-link" aria-label="削除-protocolresponse-の-session-プロパティの-null-値 への直接リンク" title="削除-protocolresponse-の-session-プロパティの-null-値 への直接リンク" translate="no">​</a></h3>
<p>This deprecated feature has been removed.</p>
<p>以前は、<code>ProtocolResponse.session</code> プロパティに <code>null</code> をセットするとランダムな独立したセッションが作成されていました。 This is no longer supported.</p>
<p>単一目的のセッションを使用するためにこうすることは、オーバーヘッドがかかるため非推奨です。しかしこの動作を維持する必要がある古いコードでは、<code>session.fromPartition(some_random_string)</code> でランダムなセッションを作成し <code>ProtocolResponse.session</code> でそれを使用するようにすることで、この動作を再現できます。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作変更-linux-向けの-browserwindowisvisibleonallworkspaces">動作変更: Linux 向けの <code>BrowserWindow.IsVisibleOnAllWorkspaces()</code><a href="https://electronjs.org/ja/blog/electron-37-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4-linux-%E5%90%91%E3%81%91%E3%81%AE-browserwindowisvisibleonallworkspaces" class="hash-link" aria-label="動作変更-linux-向けの-browserwindowisvisibleonallworkspaces への直接リンク" title="動作変�更-linux-向けの-browserwindowisvisibleonallworkspaces への直接リンク" translate="no">​</a></h3>
<p><code>BrowserWindow.IsVisibleOnAllWorkspaces()</code> は、そのウインドウが現在表示されていない場合 Linux 上で false を返すようになりました。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="34xy-サポートの終了">34.x.y サポートの終了<a href="https://electronjs.org/ja/blog/electron-37-0#34xy-%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E7%B5%82%E4%BA%86" class="hash-link" aria-label="34.x.y サポートの終了 への直接リンク" title="34.x.y サポートの終了 への直接リンク" translate="no">​</a></h2>
<p>プロジェクトの <a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy" target="_blank" rel="noopener noreferrer" class="">サポートポリシー</a> に則り、Electron 34.x.y はサポート終了を迎えました。 開発者とアプリケーションは新しいバージョンの Electron にアップグレードすることを推奨します。</p>
<table><thead><tr><th>E37 (2025 年 6 月)</th><th>E38 (2025 年 8 月)</th><th>E39 (2025 年 10 月)</th></tr></thead><tbody><tr><td>37.x.y</td><td>38.x.y</td><td>39.x.y</td></tr><tr><td>36.x.y</td><td>37.x.y</td><td>38.x.y</td></tr><tr><td>35.x.y</td><td>36.x.y</td><td>37.x.y</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="次回予告">次回予告<a href="https://electronjs.org/ja/blog/electron-37-0#%E6%AC%A1%E5%9B%9E%E4%BA%88%E5%91%8A" class="hash-link" aria-label="次回予告 への直接リンク" title="次回予告 への直接リンク" translate="no">​</a></h2>
<p>短期的には、Chromium、Node、V8 といった Electron を構成する主要コンポーネントの開発に遅れないでチームが注力し続けるでしょう。</p>
<p><a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines" target="_blank" rel="noopener noreferrer" class="">Electron の公開タイムラインはこちらで</a> ご覧いただけます。</p>
<p>今後の変更についての詳細は、<a href="https://github.com/electron/electron/blob/main/docs/breaking-changes.md" target="_blank" rel="noopener noreferrer" class="">予定されている破壊的変更</a> のページをご覧ください。</p>]]></content:encoded>
            <category>Release</category>
        </item>
        <item>
            <title><![CDATA[Electron 36.0.0]]></title>
            <link>https://electronjs.org/ja/blog/electron-36-0</link>
            <guid>https://electronjs.org/ja/blog/electron-36-0</guid>
            <pubDate>Mon, 28 Apr 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron 36.0.0 がリリースされました! これには Chromium 136、V8 13.6、Node 22.14.0 へのアップグレードが含まれています。]]></description>
            <content:encoded><![CDATA[<p>Electron 36.0.0 がリリースされました! これには Chromium 136、V8 13.6、Node 22.14.0 へのアップグレードが含まれています。</p>
<hr>
<p>Electron チームは、Electron 36.0.0 のリリース発表にワクワクしています! <code>npm install electron@latest</code> から npm でインストールするか、<a href="https://www.electronjs.org/releases?channel=stable" target="_blank" rel="noopener noreferrer" class="">リリースウェブサイト</a> からダウンロードできます。 このリリースの詳細は続きをご覧ください。</p>
<p>何かフィードバックがあれば、<a href="https://bsky.app/profile/electronjs.org" target="_blank" rel="noopener noreferrer" class="">Bluesky</a> や <a href="https://social.lfx.dev/@electronjs" target="_blank" rel="noopener noreferrer" class="">Mastodon</a> で共有したり、コミュニティの <a href="https://discord.com/invite/electronjs" target="_blank" rel="noopener noreferrer" class="">Discord</a> に参加してみましょう! バグや機能の要望は Electron の <a href="https://github.com/electron/electron/issues" target="_blank" rel="noopener noreferrer" class="">Issue トラッカー</a> で報告できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="注目すべき変更">注目すべき変更<a href="https://electronjs.org/ja/blog/electron-36-0#%E6%B3%A8%E7%9B%AE%E3%81%99%E3%81%B9%E3%81%8D%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="注目すべき変更 への直接リンク" title="注目すべき変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="作文ツールサポート">作文ツールサポート<a href="https://electronjs.org/ja/blog/electron-36-0#%E4%BD%9C%E6%96%87%E3%83%84%E3%83%BC%E3%83%AB%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88" class="hash-link" aria-label="作文ツールサポート への直接リンク" title="作文ツールサポート への直接リンク" translate="no">​</a></h3>
<p>Electron 36 では、コンテキストメニューでの作文ツール (スペルと文法)、自動入力、サービスメニュー項目など macOS システムレベルの機能を有効化できます。 これを行うには、<a href="https://www.electronjs.org/docs/latest/api/web-frame-main#class-webframemain" target="_blank" rel="noopener noreferrer" class="">WebFrameMain</a> のインスタンスを <code>menu.popup()</code> の <code>frame</code> 引数に渡します。</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">BrowserWindow</span><span class="token imports punctuation" style="color:#393A34">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Menu</span><span class="token imports punctuation" style="color:#393A34">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">WebFrameMain</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'electron'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> currentWindow </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token maybe-class-name">BrowserWindow</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getFocusedWindow</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> focusedFrame </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> currentWindow</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">focusedFrame</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> menu </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token maybe-class-name">Menu</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">buildFromTemplate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">label</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Copy'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">role</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'copy'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">menu</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">popup</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">window</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> currentWindow</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">frame</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> focusedFrame</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="累積的変更">累積的変更<a href="https://electronjs.org/ja/blog/electron-36-0#%E7%B4%AF%E7%A9%8D%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="累積的変更 への直接リンク" title="累積的変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">Chromium <code>136.0.7103.48</code>
<ul>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-136/" target="_blank" rel="noopener noreferrer" class="">Chrome 136 の新機能</a></li>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-135/" target="_blank" rel="noopener noreferrer" class="">Chrome 135 の新機能</a></li>
</ul>
</li>
<li class="">Node <code>22.14.0</code>
<ul>
<li class=""><a href="https://nodejs.org/en/blog/release/v22.14.0/" target="_blank" rel="noopener noreferrer" class="">Node 22.14.0 ブログ記事</a></li>
</ul>
</li>
<li class="">V8 <code>13.6</code></li>
</ul>
<p>Electron 36 では、Chromium は <code>134.0.6998.23</code> から <code>136.0.7103.48</code> へ、Node は <code>13.5</code> から <code>13.6</code> へアップグレードしています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="新機能と改善点">新機能と改善点<a href="https://electronjs.org/ja/blog/electron-36-0#%E6%96%B0%E6%A9%9F%E8%83%BD%E3%81%A8%E6%94%B9%E5%96%84%E7%82%B9" class="hash-link" aria-label="新機能と改善点 への直接リンク" title="新機能と改善点 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">特定のウインドウがスナップで配置されているかを示す <code>BrowserWindow.isSnapped()</code> を Windows 向けに追加しました。 <a href="https://github.com/electron/electron/pull/46226" target="_blank" rel="noopener noreferrer" class="">#46226</a></li>
<li class="">フォーカスされたフレームを取得する <code>WebContents.focusedFrame</code> を追加しました。</li>
<li class=""><code>WebContents.opener</code> の型を <code>null</code> になりうる型へ修正しました。 <a href="https://github.com/electron/electron/pull/45667" target="_blank" rel="noopener noreferrer" class="">#45667</a></li>
<li class="">遅延読み込みの構成に <code>ffmpeg.dll</code> を追加しました。 <a href="https://github.com/electron/electron/pull/46173" target="_blank" rel="noopener noreferrer" class="">#46173</a> (及び <a href="https://github.com/electron/electron/pull/46174" target="_blank" rel="noopener noreferrer" class="">34</a>, <a href="https://github.com/electron/electron/pull/46172" target="_blank" rel="noopener noreferrer" class="">35</a>)</li>
<li class="">システムテーマとアプリテーマを区別できる <code>nativeTheme.shouldUseDarkColorsForSystemIntegratedUI</code> を追加しました。 <a href="https://github.com/electron/electron/pull/46598" target="_blank" rel="noopener noreferrer" class="">#46598</a> (及び <a href="https://github.com/electron/electron/pull/46599" target="_blank" rel="noopener noreferrer" class="">35</a>)</li>
<li class=""><code>webRequest</code> フィルターに <code>excludeUrls</code> を追加し、<code>urls</code> プロパティでの空配列の使用を非推奨化しました。 <a href="https://github.com/electron/electron/pull/44692" target="_blank" rel="noopener noreferrer" class="">#44692</a> (及び <a href="https://github.com/electron/electron/pull/45678" target="_blank" rel="noopener noreferrer" class="">35</a>)</li>
<li class=""><code>menu.popup</code> の新しい <code>frame</code> オプションを介して、コンテキストメニューの自動入力、作文ツール、サービスなど macOS レベルのメニュー項目のサポートを追加しました。 <a href="https://github.com/electron/electron/pull/46350" target="_blank" rel="noopener noreferrer" class="">#46350</a></li>
<li class="">Linux 向けに <code>system-context-menu</code> のサポートを追加しました。 <a href="https://github.com/electron/electron/pull/46399" target="_blank" rel="noopener noreferrer" class="">#46399</a></li>
<li class="">Windows 向けに ASAR の整合性検査を改善しました。 <a href="https://github.com/electron/electron/pull/46537" target="_blank" rel="noopener noreferrer" class="">#46537</a></li>
<li class="">macOS 向けにサムネイルを要求しないときの <code>desktopCapturer.getSources</code> のパフォーマンスが向上しました。 <a href="https://github.com/electron/electron/pull/46251" target="_blank" rel="noopener noreferrer" class="">#46251</a> (及び <a href="https://github.com/electron/electron/pull/46250" target="_blank" rel="noopener noreferrer" class="">34</a>, <a href="https://github.com/electron/electron/pull/46249" target="_blank" rel="noopener noreferrer" class="">35</a>)</li>
<li class="">共有テクスチャ OSR 使用時の 240 FPS 制限を除去しました。 <a href="https://github.com/electron/electron/pull/45669" target="_blank" rel="noopener noreferrer" class="">#45669</a> (及び <a href="https://github.com/electron/electron/pull/45781" target="_blank" rel="noopener noreferrer" class="">35</a>)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="破壊的変更">破壊的変更<a href="https://electronjs.org/ja/blog/electron-36-0#%E7%A0%B4%E5%A3%8A%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="破壊的変更 への直接リンク" title="破壊的変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="非推奨化-nativeimagegetbitmap">非推奨化: <code>NativeImage.getBitmap()</code><a href="https://electronjs.org/ja/blog/electron-36-0#%E9%9D%9E%E6%8E%A8%E5%A5%A8%E5%8C%96-nativeimagegetbitmap" class="hash-link" aria-label="非推奨化-nativeimagegetbitmap への直接リンク" title="非推奨化-nativeimagegetbitmap への直接リンク" translate="no">​</a></h3>
<p><code>NativeImage.getBitmap()</code> 関数は非推奨となり、<code>NativeImage.toBitmap()</code> のエイリアスであると文書化されました。
2 つの関数はどちらもビットマップの新しく確保したコピーを返し、機能的に同等です。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="非推奨化-session-の拡張機能のメソッドとイベント">非推奨化: <code>session</code> の拡張機能のメソッドとイベント<a href="https://electronjs.org/ja/blog/electron-36-0#%E9%9D%9E%E6%8E%A8%E5%A5%A8%E5%8C%96-session-%E3%81%AE%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD%E3%81%AE%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%A8%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88" class="hash-link" aria-label="非推奨化-session-の拡張機能のメソッドとイベント への直接リンク" title="非推奨化-session-の拡張機能のメソッドとイベント への直接リンク" translate="no">​</a></h3>
<p><code>session.loadExtension</code>、<code>session.removeExtension</code>、<code>session.getExtension</code>、
<code>session.getAllExtensions</code>、およびイベント <code>extension-loaded</code>、
<code>extension-unloaded</code>、<code>extension-ready</code> はすべて、<code>session.extensions</code> インスタンスプロパティからアクセスできる新しい
<a href="https://www.electronjs.org/docs/latest/api/extensions-api" target="_blank" rel="noopener noreferrer" class=""><code>Extensions</code> オブジェクト</a> へ移動されました。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="削除-sessionclearstoragedataoptions-の-quota-のタイプ-syncable">削除: <code>session.clearStorageData(options)</code> の <code>quota</code> のタイプ <code>syncable</code><a href="https://electronjs.org/ja/blog/electron-36-0#%E5%89%8A%E9%99%A4-sessionclearstoragedataoptions-%E3%81%AE-quota-%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%97-syncable" class="hash-link" aria-label="削除-sessionclearstoragedataoptions-の-quota-のタイプ-syncable への直接リンク" title="削除-sessionclearstoragedataoptions-の-quota-のタイプ-syncable への直接リンク" translate="no">​</a></h3>
<p><code>session.clearStorageData(options)</code> を呼び出す際の <code>options.quota</code> のタイプ <code>syncable</code> は、上流の Chromium から <a href="https://chromium-review.googlesource.com/c/chromium/src/+/6309405" target="_blank" rel="noopener noreferrer" class="">削除</a> されたためサポートされなくなりました。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="非推奨化-sessionclearstoragedataoptions-の-quota-プロパティ">非推奨化: <code>session.clearStorageData(options)</code> の <code>quota</code> プロパティ<a href="https://electronjs.org/ja/blog/electron-36-0#%E9%9D%9E%E6%8E%A8%E5%A5%A8%E5%8C%96-sessionclearstoragedataoptions-%E3%81%AE-quota-%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3" class="hash-link" aria-label="非推奨化-sessionclearstoragedataoptions-の-quota-プロパティ への直接リンク" title="非推奨化-sessionclearstoragedataoptions-の-quota-プロパティ への直接リンク" translate="no">​</a></h3>
<p><code>Session.clearStorageData(options)</code> を呼び出すときの、<code>options.quota</code> プロパティは非推奨になります。 <code>syncable</code> タイプは削除されたため残ったタイプは <code>'temporary'</code> のみであり、これの指定は不要です。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作変更-gtk-4-が-gnome-で実行する場合のデフォルトに">動作変更: GTK 4 が GNOME で実行する場合のデフォルトに<a href="https://electronjs.org/ja/blog/electron-36-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4-gtk-4-%E3%81%8C-gnome-%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AB" class="hash-link" aria-label="動作変更: GTK 4 が GNOME で実行する場合のデフォルトに への直接リンク" title="動作変更: GTK 4 が GNOME で実行する場合のデフォルトに への直接リンク" translate="no">​</a></h3>
<p><a href="https://chromium-review.googlesource.com/c/chromium/src/+/6310469" target="_blank" rel="noopener noreferrer" class="">上流の変更</a> により、GNOME で実行する場合のデフォルトが GTK 4 になりました。</p>
<p>まれに、これにより一部のアプリケーションまたは構成で以下のメッセージを伴う <a href="https://github.com/electron/electron/issues/46538" target="_blank" rel="noopener noreferrer" class="">エラー</a> が発生する場合があります。</p>
<div class="language-stderr codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-stderr codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Gtk-ERROR **: 11:30:38.382: GTK 2/3 symbols detected. Using GTK 2/3 and GTK 4 in the same process is not supported</span><br></span></code></pre></div></div>
<p>影響を受けるユーザーは <code>gtk-version</code> のコマンドラインフラグを以下のように指定することで回避できます。</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ electron --gtk-version=3   # or --gtk-version=2</span><br></span></code></pre></div></div>
<p><a href="https://www.electronjs.org/docs/latest/api/command-line#commandlineappendswitchswitch-value" target="_blank" rel="noopener noreferrer" class=""><code>app.commandLine.appendSwitch</code></a> 関数でも同様のことができます。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作変更-appcommandline">動作変更: <code>app.commandLine</code><a href="https://electronjs.org/ja/blog/electron-36-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4-appcommandline" class="hash-link" aria-label="動作変更-appcommandline への直接リンク" title="動作変更-appcommandline への直接リンク" translate="no">​</a></h3>
<p><code>app.commandLine</code> は大文字のスイッチと引数を小文字へ変換するようにします。</p>
<p><code>app.commandLine</code> は Chromium のスイッチ (大文字小文字の区別なし) を処理することのみを目的としており、<code>app.commandLine</code> 経由で渡されるスイッチはどの子プロセスにも渡されません。</p>
<p>アプリ固有のコマンドライン引数を解析するために <code>app.commandLine</code> を使用していた方は、<code>process.argv</code> 経由でこれを行うようにすべきです。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="33xy-サポートの終了">33.x.y サポートの終了<a href="https://electronjs.org/ja/blog/electron-36-0#33xy-%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E7%B5%82%E4%BA%86" class="hash-link" aria-label="33.x.y サポートの終了 への直接リンク" title="33.x.y サポートの終了 への直接リンク" translate="no">​</a></h2>
<p>プロジェクトの <a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy" target="_blank" rel="noopener noreferrer" class="">サポートポリシー</a> に則り、Electron 33.x.y はサポート終了を迎えました。 開発者とアプリケーションは新しいバージョンの Electron にアップグレードすることを推奨します。</p>
<table><thead><tr><th>E36 (2025 年 4 月)</th><th>E37 (2025 年 6 月)</th><th>E38 (2025 年 8 月)</th></tr></thead><tbody><tr><td>36.x.y</td><td>37.x.y</td><td>38.x.y</td></tr><tr><td>35.x.y</td><td>36.x.y</td><td>37.x.y</td></tr><tr><td>34.x.y</td><td>35.x.y</td><td>36.x.y</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="次回予告">次回予告<a href="https://electronjs.org/ja/blog/electron-36-0#%E6%AC%A1%E5%9B%9E%E4%BA%88%E5%91%8A" class="hash-link" aria-label="次回予告 への直接リンク" title="次回予告 への直接リンク" translate="no">​</a></h2>
<p>短期的には、Chromium、Node、V8 といった Electron を構成する主要コンポーネントの開発に遅れないでチームが注力し続けるでしょう。</p>
<p><a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines" target="_blank" rel="noopener noreferrer" class="">Electron の公開タイムラインはこちらで</a> ご覧いただけます。</p>
<p>今後の変更についての詳細は、<a href="https://github.com/electron/electron/blob/main/docs/breaking-changes.md" target="_blank" rel="noopener noreferrer" class="">予定されている破壊的変更</a> のページをご覧ください。</p>]]></content:encoded>
            <category>Release</category>
        </item>
        <item>
            <title><![CDATA[Electron 35.0.0]]></title>
            <link>https://electronjs.org/ja/blog/electron-35-0</link>
            <guid>https://electronjs.org/ja/blog/electron-35-0</guid>
            <pubDate>Tue, 04 Mar 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron 35.0.0 がリリースされました! これには Chromium 134.0.6998.44、V8 13.5、Node 22.14.0 へのアップグレードが含まれています。]]></description>
            <content:encoded><![CDATA[<p>Electron 35.0.0 がリリースされました! これには Chromium 134.0.6998.44、V8 13.5、Node 22.14.0 へのアップグレードが含まれています。</p>
<hr>
<p>Electron チームは、Electron 35.0.0 のリリース発表にワクワクしています! <code>npm install electron@latest</code> から npm でインストールするか、<a href="https://www.electronjs.org/releases?channel=stable" target="_blank" rel="noopener noreferrer" class="">リリースウェブサイト</a> からダウンロードできます。 このリリースの詳細は続きをご覧ください。</p>
<p>何かフィードバックがあれば、<a href="https://bsky.app/profile/electronjs.org" target="_blank" rel="noopener noreferrer" class="">Bluesky</a> や <a href="https://social.lfx.dev/@electronjs" target="_blank" rel="noopener noreferrer" class="">Mastodon</a> で共有したり、コミュニティの <a href="https://discord.com/invite/electronjs" target="_blank" rel="noopener noreferrer" class="">Discord</a> に参加してみましょう! バグや機能の要望は Electron の <a href="https://github.com/electron/electron/issues" target="_blank" rel="noopener noreferrer" class="">Issue トラッカー</a> で報告できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="注目すべき変更">注目すべき変更<a href="https://electronjs.org/ja/blog/electron-35-0#%E6%B3%A8%E7%9B%AE%E3%81%99%E3%81%B9%E3%81%8D%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="注目すべき変更 への直接リンク" title="注目すべき変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="拡張機能サポートの改善のためのサービスワーカーのプリロードスクリプト">拡張機能サポートの改善のためのサービスワーカーのプリロードスクリプト<a href="https://electronjs.org/ja/blog/electron-35-0#%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E6%94%B9%E5%96%84%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%83%AF%E3%83%BC%E3%82%AB%E3%83%BC%E3%81%AE%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88" class="hash-link" aria-label="拡張機能サポートの改善のためのサービスワーカーのプリロードスクリプト への直接リンク" title="拡張機能サポートの改善のためのサービスワーカーのプリロードスクリプト への直接リンク" translate="no">​</a></h3>
<p>もともと <a href="https://github.com/electron/rfcs/blob/main/text/0008-preload-realm.md" target="_blank" rel="noopener noreferrer" class="">RFC #8</a> で <a href="https://github.com/samuelmaddock" target="_blank" rel="noopener noreferrer" class="">@samuelmaddock</a> によって提案されていたもので、Electron 35 にて <a href="https://developer.mozilla.org/ja/docs/Web/API/Service_Worker_API" target="_blank" rel="noopener noreferrer" class="">サービスワーカー</a> にプリロードスクリプトをアタッチする機能を追加します。 Chrome の Manifest V3 拡張機能では多くの機能が <a href="https://developer.chrome.com/docs/extensions/develop/concepts/service-workers" target="_blank" rel="noopener noreferrer" class="">拡張機能のサービスワーカー</a> を通じて提供されるため、この機能は Electron と最新の Chrome 拡張機能との間のサポートに関するギャップを埋めます。</p>
<p>Session のレベルでプログラムでプリロードスクリプトを登録する場合、<a href="https://www.electronjs.org/docs/latest/api/session#sesregisterpreloadscriptscript" target="_blank" rel="noopener noreferrer" class=""><code>ses.registerPreloadScript(script)</code></a> API でそれをサービスワーカーのコンテキストへ指定し適用できるようになりました。</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">Main Process</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// セッションにプリロードレルムスクリプトを追加します。</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">session</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">defaultSession</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">registerPreloadScript</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// スクリプトはサービスワーカーのプリロードレルムでのみ実行されるべきです。</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'service-worker'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// スクリプトへの絶対パス。</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">script</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">join</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">__dirname</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'extension-sw-preload.js'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>さらに、<code>ServiceWorkerMain.ipc</code> のインスタンスを介して、サービスワーカーとそれにアタッチされたプリロードスクリプトの間で IPC が利用できるようになりました。 プリロードスクリプトは引き続き <code>ipcRenderer</code> モジュールでもサービスワーカーと通信できます。 詳細は元の RFC をご参照ください。</p>
<p>この機能の実装前に、以下の前提となる他多くの変更が行われました。</p>
<ul>
<li class=""><a href="https://github.com/electron/electron/pull/45329" target="_blank" rel="noopener noreferrer" class="">#45329</a> で Session モジュールのプリロード API を再設計し、個々のプリロードスクリプトの登録と解除をサポートするようになりました。</li>
<li class=""><a href="https://github.com/electron/electron/pull/45330" target="_blank" rel="noopener noreferrer" class="">#45229</a> でコンテキストブリッジを介してメイン ワールドで JavaScript を評価するための実験的なスクリプト <code>contextBridge.executeInMainWorld(executionScript)</code> が追加されました。</li>
<li class=""><a href="https://github.com/electron/electron/pull/45341" target="_blank" rel="noopener noreferrer" class="">#45341</a> でメインプロセスでサービスワーカーとやり取りするための <code>ServiceWorkerMain</code> クラスが追加されました。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="累積的変�更">累積的変更<a href="https://electronjs.org/ja/blog/electron-35-0#%E7%B4%AF%E7%A9%8D%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="累積的変更 への直接リンク" title="累積的変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">Chromium <code>134.0.6998.44</code>
<ul>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-134/" target="_blank" rel="noopener noreferrer" class="">Chrome 134 の新機能</a></li>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-133/" target="_blank" rel="noopener noreferrer" class="">Chrome 133 の新機能</a></li>
</ul>
</li>
<li class="">Node <code>22.14.0</code>
<ul>
<li class=""><a href="https://nodejs.org/en/blog/release/v22.14.0/" target="_blank" rel="noopener noreferrer" class="">Node 22.14.0 ブログ記事</a></li>
</ul>
</li>
<li class="">V8 <code>13.5</code></li>
</ul>
<p>Electron 35 では、Chromium は <code>132.0.6834.83</code> から <code>134.0.6998.44</code> へ、Node は <code>20.18.1</code> から <code>22.14.0</code> へ、V8 は <code>13.2</code> から <code>13.5</code> へとアップグレードしています。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="新機能">新機能<a href="https://electronjs.org/ja/blog/electron-35-0#%E6%96%B0%E6%A9%9F%E8%83%BD" class="hash-link" aria-label="新機能 への直接リンク" title="新機能 への直接リンク" translate="no">​</a></h3>
<ul>
<li class=""><code>Info.plist</code> に <code>NSPrefersDisplaySafeAreaCompatibilityMode</code> = <code>false</code> を追加してアプリの設定から「内蔵カメラの下に収まるようにサイズ調整」を削除しました。 <a href="https://github.com/electron/electron/pull/45357" target="_blank" rel="noopener noreferrer" class="">#45357</a> <sup>(同じく <a href="https://github.com/electron/electron/pull/45469" target="_blank" rel="noopener noreferrer" class="">v34.1.0</a>)</sup></li>
<li class="">メインプロセスでサービスワーカーとやり取りするための <code>ServiceWorkerMain</code> クラスを追加しました。 <a href="https://github.com/electron/electron/pull/45341" target="_blank" rel="noopener noreferrer" class="">#45341</a>
<ul>
<li class="">サービスワーカーの実行状態が変化したことを表すために、<code>ServiceWorkers</code> に <code>running-status-changed</code> イベントを追加しました。</li>
<li class="">以前に停止された可能性のあるワーカーを起動するために、<code>ServiceWorkers</code> に <code>startWorkerForScope</code> を追加しました。</li>
</ul>
</li>
<li class="">ワールドの境界を越えてコードを安全に実行するための実験的な <code>contextBridge.executeInMainWorld</code> を追加しました。 <a href="https://github.com/electron/electron/pull/45330" target="_blank" rel="noopener noreferrer" class="">#45330</a></li>
<li class=""><code>'console-message'</code> イベントに <code>frame</code> を追加しました。 <a href="https://github.com/electron/electron/pull/43617" target="_blank" rel="noopener noreferrer" class="">#43617</a></li>
<li class="">Windows 向けに、<code>query-session-end</code> イベントを追加し <code>session-end</code> イベントを改善しました。 <a href="https://github.com/electron/electron/pull/44598" target="_blank" rel="noopener noreferrer" class="">#44598</a></li>
<li class=""><code>view.getVisible()</code>を追加しました。 <a href="https://github.com/electron/electron/pull/45409" target="_blank" rel="noopener noreferrer" class="">#45409</a></li>
<li class="">ナビゲーション履歴の復元を可能にする <code>webContents.navigationHistory.restore(index, entries)</code> API を追加しました。 <a href="https://github.com/electron/electron/pull/45583" target="_blank" rel="noopener noreferrer" class="">#45583</a></li>
<li class=""><code>BrowserWindow.setVibrancy</code> に任意のアニメーション引数を追加しました。 <a href="https://github.com/electron/electron/pull/35987" target="_blank" rel="noopener noreferrer" class="">#35987</a></li>
<li class=""><code>document.executeCommand("paste")</code> の権限サポートを追加しました。 <a href="https://github.com/electron/electron/pull/45471" target="_blank" rel="noopener noreferrer" class="">#45471</a> <sup>(同じく <a href="https://github.com/electron/electron/pull/45472" target="_blank" rel="noopener noreferrer" class="">v34.1.0</a>)</sup></li>
<li class="">Windows 向けに BrowserWindow コンストラクタのオプション <code>roundedCorners</code> のサポートを追加しました。 <a href="https://github.com/electron/electron/pull/45740" target="_blank" rel="noopener noreferrer" class="">#45740</a> <sup>(同じく <a href="https://github.com/electron/electron/pull/45739" target="_blank" rel="noopener noreferrer" class="">v34.3.0</a>)</sup></li>
<li class="">サービスワーカーのプリロードスクリプトのサポートを追加しました。 <a href="https://github.com/electron/electron/pull/45408" target="_blank" rel="noopener noreferrer" class="">#45408</a></li>
<li class="">Portal の <code>globalShortcuts</code> をサポートします。 この機能を動作させるには、Electron を <code>--enable-features=GlobalShortcutsPortal</code> で実行する必要があります。 <a href="https://github.com/electron/electron/pull/45297" target="_blank" rel="noopener noreferrer" class="">#45297</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="破壊的変更">破壊的変更<a href="https://electronjs.org/ja/blog/electron-35-0#%E7%A0%B4%E5%A3%8A%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="破壊的変更 への直接リンク" title="破壊的変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="削除-printerinfo-の-isdefault-プロパティと-status-プロパティ">削除: <code>PrinterInfo</code> の <code>isDefault</code> プロパティと <code>status</code> プロパティ<a href="https://electronjs.org/ja/blog/electron-35-0#%E5%89%8A%E9%99%A4-printerinfo-%E3%81%AE-isdefault-%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3%E3%81%A8-status-%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3" class="hash-link" aria-label="削除-printerinfo-の-isdefault-プロパティと-status-�プロパティ への直接リンク" title="削除-printerinfo-の-isdefault-プロパティと-status-プロパティ への直接リンク" translate="no">​</a></h3>
<p>これらのプロパティは上流の Chromium から削除されたため、<code>PrinterInfo</code> オブジェクトからも削除されました。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="非推奨化-sessionserviceworkers-の-fromversionid">非推奨化: <code>session.serviceWorkers</code> の <code>fromVersionID</code><a href="https://electronjs.org/ja/blog/electron-35-0#%E9%9D%9E%E6%8E%A8%E5%A5%A8%E5%8C%96-sessionserviceworkers-%E3%81%AE-fromversionid" class="hash-link" aria-label="非推奨化-sessionserviceworkers-の-fromversionid への直接リンク" title="非推奨化-sessionserviceworkers-の-fromversionid への直接リンク" translate="no">​</a></h3>
<p><code>session.serviceWorkers.getInfoFromVersionID(versionId)</code> の代わりに <code>session.serviceWorkers.fromVersionID(versionId)</code> API は非推奨化されました。 <code>session.serviceWorkers.getWorkerFromVersionID(versionId)</code> API を導入したため、何のオブジェクトを返すかがより明確になるように変更されました。</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// 非推奨</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">session</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">serviceWorkers</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">fromVersionID</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">versionId</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// こちらで置換</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">session</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">serviceWorkers</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getInfoFromVersionID</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">versionId</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="非推奨化-session-の-setpreloadsgetpreloads">非推奨化: <code>Session</code> の <code>setPreloads</code>、<code>getPreloads</code><a href="https://electronjs.org/ja/blog/electron-35-0#%E9%9D%9E%E6%8E%A8%E5%A5%A8%E5%8C%96-session-%E3%81%AE-setpreloadsgetpreloads" class="hash-link" aria-label="非推奨化-session-の-setpreloadsgetpreloads への直接リンク" title="非推奨化-session-の-setpreloadsgetpreloads への直接リンク" translate="no">​</a></h3>
<p>非推奨メソッドの代わりとして、<code>registerPreloadScript</code>、<code>unregisterPreloadScript</code>、 <code>getPreloadScripts</code> が導入されました。 These new APIs allow third-party libraries to register
preload scripts without replacing existing scripts. また、新たな <code>type</code> オプションにより <code>frame</code> 以外のさらなるプリロード対象を指定できます。</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// 非推奨</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">session</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">setPreloads</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">join</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">__dirname</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'preload.js'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// こちらで置換:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">session</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">registerPreloadScript</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'frame'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">id</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'app-preload'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">filePath</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">join</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">__dirname</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'preload.js'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="非推奨化-webcontents-の-console-message-イベントの-levelmessagelinesourceid-引数">非推奨化: <code>WebContents</code> の <code>console-message</code> イベントの <code>level</code>、<code>message</code>、<code>line</code>、<code>sourceId</code> 引数<a href="https://electronjs.org/ja/blog/electron-35-0#%E9%9D%9E%E6%8E%A8%E5%A5%A8%E5%8C%96-webcontents-%E3%81%AE-console-message-%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%81%AE-levelmessagelinesourceid-%E5%BC%95%E6%95%B0" class="hash-link" aria-label="非推奨化-webcontents-の-console-message-イベントの-levelmessagelinesourceid-引数 への直接リンク" title="非推奨化-webcontents-の-console-message-イベントの-levelmessagelinesourceid-引数 への直接リンク" translate="no">​</a></h3>
<p><code>WebContents</code> の <code>console-message</code> イベントが更新され、<code>Event</code> 引数で詳細が提供されるようになりました。</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// 非推奨</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">on</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">'console-message'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">event</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> level</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> message</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> line</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> sourceId</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// こちらで置換:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">on</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">'console-message'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">{</span><span class="token parameter"> level</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> message</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> lineNumber</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> sourceId</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> frame </span><span class="token parameter punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>さらに、<code>level</code> は <code>info</code>、<code>warning</code>、<code>error</code>、<code>debug</code> のうちいずれかの値を持つ文字列になりました。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作変更-webrequestfilter-の-urls-プロパティ">動作変更: <code>WebRequestFilter</code> の <code>urls</code> プロパティ<a href="https://electronjs.org/ja/blog/electron-35-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4-webrequestfilter-%E3%81%AE-urls-%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3" class="hash-link" aria-label="動作変更-webrequestfilter-の-urls-プロパティ への直接リンク" title="動作変更-webrequestfilter-の-urls-プロパティ への直接リンク" translate="no">​</a></h3>
<p>Previously, an empty urls array was interpreted as including all URLs. 明示的にすべての URL を含めるには、開発者が <code>&lt;all_urls&gt;</code> パターンを使用する必要があります。これは、考えられるすべての URL に一致する <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns#all_urls" target="_blank" rel="noopener noreferrer" class="">特定の URL パターン</a> です。 This change clarifies the intent and ensures more predictable behavior.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// 非推奨</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> deprecatedFilter </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">urls</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// こちらで置換</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> newFilter </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">urls</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">'&lt;all_urls&gt;'</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="非推奨化-systempreferencesisaeroglassenabled">非推奨化: <code>systemPreferences.isAeroGlassEnabled()</code><a href="https://electronjs.org/ja/blog/electron-35-0#%E9%9D%9E%E6%8E%A8%E5%A5%A8%E5%8C%96-systempreferencesisaeroglassenabled" class="hash-link" aria-label="非推奨化-systempreferencesisaeroglassenabled への直接リンク" title="非推奨化-systempreferencesisaeroglassenabled への直接リンク" translate="no">​</a></h3>
<p><code>systemPreferences.isAeroGlassEnabled()</code> 関数は代替なしで非推奨になりました。
Electron 23 以降は常に <code>true</code> を返しています。Electron 23 からは Windows 10 以降のみをサポートしており、この Windows からは DWM のコンポジションを無効化できなくなりました。</p>
<p><a href="https://learn.microsoft.com/en-us/windows/win32/dwm/composition-ovw#disabling-dwm-composition-windows7-and-earlier" target="_blank" rel="noopener noreferrer" class="">https://learn.microsoft.com/en-us/windows/win32/dwm/composition-ovw#disabling-dwm-composition-windows7-and-earlier</a></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="32xy-サポートの終了">32.x.y サポートの終了<a href="https://electronjs.org/ja/blog/electron-35-0#32xy-%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E7%B5%82%E4%BA%86" class="hash-link" aria-label="32.x.y サポートの終了 への直接リンク" title="32.x.y サポートの終了 への直接リンク" translate="no">​</a></h2>
<p>プロジェクトの <a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy" target="_blank" rel="noopener noreferrer" class="">サポートポリシー</a> に則り、Electron 32.x.y はサポート終了を迎えました。 開発者とアプリケーションは新しいバージョンの Electron にアップグレードすることを推奨します。</p>
<table><thead><tr><th>E35 (2025 年 3 月)</th><th>E36 (2025 年 4 月)</th><th>E37 (2025 年 6 月)</th></tr></thead><tbody><tr><td>35.x.y</td><td>36.x.y</td><td>37.x.y</td></tr><tr><td>34.x.y</td><td>35.x.y</td><td>36.x.y</td></tr><tr><td>33.x.y</td><td>34.x.y</td><td>35.x.y</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="次回予告">次回予告<a href="https://electronjs.org/ja/blog/electron-35-0#%E6%AC%A1%E5%9B%9E%E4%BA%88%E5%91%8A" class="hash-link" aria-label="次回予告 への直接リンク" title="次回予告 への直接リンク" translate="no">​</a></h2>
<p>短期的には、Chromium、Node、V8 といった Electron を構成する主要コンポーネントの開発に遅れないでチームが注力し続けるでしょう。</p>
<p><a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines" target="_blank" rel="noopener noreferrer" class="">Electron の公開タイムラインはこちらで</a> ご覧いただけます。</p>
<p>今後の変更についての詳細は、<a href="https://github.com/electron/electron/blob/main/docs/breaking-changes.md" target="_blank" rel="noopener noreferrer" class="">予定されている破壊的変更</a> のページをご覧ください。</p>]]></content:encoded>
            <category>Release</category>
        </item>
        <item>
            <title><![CDATA[Google Summer of Code 2025]]></title>
            <link>https://electronjs.org/ja/blog/2025-summer-of-code</link>
            <guid>https://electronjs.org/ja/blog/2025-summer-of-code</guid>
            <pubDate>Mon, 03 Mar 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron は Google Summer of Code (GSoC) 2025 のメンター組織として再び採用されました！]]></description>
            <content:encoded><![CDATA[<p>Electron は Google Summer of Code (GSoC) 2025 のメンター組織として再び採用されました！
Google Summer of Code は、オープンソースソフトウェア開発に新たな貢献者を呼び込むことに重点を置いた国際プログラムです。</p>
<p>詳細については、Google の <a href="https://summerofcode.withgoogle.com/" target="_blank" rel="noopener noreferrer" class="">Summer of Code のホームページ</a> をご覧ください。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="私たちについて">私たちについて<a href="https://electronjs.org/ja/blog/2025-summer-of-code#%E7%A7%81%E3%81%9F%E3%81%A1%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6" class="hash-link" aria-label="私たちについて への直接リンク" title="私たちについて への直接リンク" translate="no">​</a></h2>
<p>Electron は、ウェブ技術を用いたクロスプラットフォームのデスクトップアプリケーションを構築する JavaScript フレームワークです。 Electron フレームワークのコアは <a href="https://chromium.org/" target="_blank" rel="noopener noreferrer" class="">Chromium</a> と <a href="https://nodejs.org/" target="_blank" rel="noopener noreferrer" class="">Node.js</a> で構築されたコンパイル済みバイナリ実行形式であり、主に C++ で書かれています。</p>
<p>Electron のコア リポジトリ以外では、Electron エコシステムをサポートするいくつかのプロジェクトを管理しています：</p>
<ul>
<li class="">エンドユーザの頒布ツール (例えば <a href="https://www.electronforge.io/" target="_blank" rel="noopener noreferrer" class="">Electron Forge</a> や <a href="https://github.com/electron/update.electronjs.org" target="_blank" rel="noopener noreferrer" class="">update.electronjs.org</a>)。</li>
<li class="">Electron 開発者向けの学習教材 (例えば <a href="https://electronjs.org/" target="_blank" rel="noopener noreferrer" class="">electronjs.org</a> や <a href="https://github.com/electron/fiddle" target="_blank" rel="noopener noreferrer" class="">Electron Fiddle</a>)。</li>
<li class="">開発者の生産性を効率化する内部ツール (例えば <a href="https://github.com/electron/build-tools" target="_blank" rel="noopener noreferrer" class="">Electron Build Tools</a> や <a href="https://github.com/electron/sheriff" target="_blank" rel="noopener noreferrer" class="">Sheriff</a>)。</li>
</ul>
<p>GSoC 貢献者となって、<a href="https://github.com/electron" target="_blank" rel="noopener noreferrer" class="">github.com/electron</a> 傘下の多くのプロジェクトのうちの 1 つで Electron のコア貢献者と共同作業する機会が得られます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="応募する前に">応募する前に<a href="https://electronjs.org/ja/blog/2025-summer-of-code#%E5%BF%9C%E5%8B%9F%E3%81%99%E3%82%8B%E5%89%8D%E3%81%AB" class="hash-link" aria-label="応募する前に への直接リンク" title="応募する前に への直接リンク" translate="no">​</a></h2>
<p>Electron にあまり詳しくない方は、<a href="https://electronjs.org/docs/latest" target="_blank" rel="noopener noreferrer" class="">ドキュメント</a> を読んだり、<a href="https://electronjs.org/fiddle" target="_blank" rel="noopener noreferrer" class="">Electron Fiddle</a> のサンプルを試してみることをお勧めします。</p>
<p>Electron アプリの頒布について学びたい方は、以下のようにして <a href="https://www.electronforge.io/" target="_blank" rel="noopener noreferrer" class="">Electron Forge</a> 付きのサンプルアプリケーションを作成してみてください。</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">npm init electron-app@latest my-app</span><br></span></code></pre></div></div>
<p>コードに少し慣れたら、<a href="https://discord.gg/electronjs" target="_blank" rel="noopener noreferrer" class="">Electron の Discord サーバー</a> での会話にご参加ください。</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Google Summer of Code に初めて参加する方やオープンソース全般に馴染みがない方は、コミュニティに参加する前に、まず Google の <a href="https://google.github.io/gsocguides/student/" target="_blank" rel="noopener noreferrer" class="">貢献者ガイド</a> を読むことをお勧めします。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="プロジェクトの貢献者">プロジェクトの貢献者<a href="https://electronjs.org/ja/blog/2025-summer-of-code#%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E8%B2%A2%E7%8C%AE%E8%80%85" class="hash-link" aria-label="プロジェクトの貢献者 への直接リンク" title="プロジェクトの貢献者 への直接リンク" translate="no">​</a></h2>
<p>あなたが興味のあるプロジェクトのアイデアに関連するリポジトリを見てみることをお勧めします。 あなたの研究を行う一つの方法は、バグを報告したり、
既存の問題をトリアージしたり、プルリクエストを送信したりすることです。 そうすることはコードベースで実践的な練習をする効果的な方法ですが、提案の提出には必須ではありません。 よく検討された提案は、過去のコントリビューションを参照することなくコードへの理解度を実証できるものである必要があります。</p>
<p>Electronへの貢献を検討されている場合は、提案を提出する前に以下のヒントを参考にしてください。</p>
<ol>
<li class="">コントリビューションを送信する際は、わかりやすいイシューやプルリクエストの説明を記入してください。 コードの中身に関わらず、貢献の執筆に力を入れると共同作業の環境で効果的なコミュニケーションを発揮できるでしょう。</li>
<li class="">開かれている Issue に対する PR はいつでも歓迎します。 メンテナへその Issue にアサインしてもらうよう求めるコメントは不要です。 解決策のアイデアを洗練させる必要がある場合は、問題に対する潜在的な解決策について話し合うことを引き続き推奨します。しかし注意として、何かに取り組めるかどうかをつぶさに尋ねるコメントは冗長で、Issue トラッカーにノイズを加えることになります。</li>
<li class="">あまり労力されていないプロジェクト貢献 (無効な Issue 報告、リポジトリの README への些細な文言の変更、フロントエンドコードのスタイル上の小さな変更など) はあなたの最終的な提案に悪影響を及ぼします。メンテナの限られた時間を奪い、Electron プロジェクトに純粋な利益をもたらさないためです。</li>
<li class="">AI コーディングアシスタントはデバッグや新しい概念の理解に効果的なツールですが、AI 生成の出力を直接コピー/ペーストした貢献は強く推奨されません。 これらはしばしば品質が低く、メンテナが LLM 生成コードをきれいにする方が PR をまとめて拒否するよりも手間なことがよくあります。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="提案の作成">提案の作成<a href="https://electronjs.org/ja/blog/2025-summer-of-code#%E6%8F%90%E6%A1%88%E3%81%AE%E4%BD%9C%E6%88%90" class="hash-link" aria-label="提案の作成 への直接リンク" title="提案の作成 への直接リンク" translate="no">​</a></h2>
<p>Electron との共同開発に興味を持てましたか? 最初に、準備されている<a href="https://electronhq.notion.site/Electron-Google-Summer-of-Code-2025-Ideas-List-1851459d1bd1811894dad8b48a68596d" target="_blank" rel="noopener noreferrer" class="">7つのプロジェクトアイデア案</a>をご覧ください。 リストにあるすべてのアイデアは、提案可能です。</p>
<p>リストにないユニークなアイデアをお持ちの場合には検討いたしましが、提案内容が詳細かつ十分に整理されていることを確認してください。 あまり自信がないのであれば、リストのアイデアに従うことをお勧めします。</p>
<p>応募には以下のものがあるとよいでしょう。</p>
<ul>
<li class="">夏に達成する予定の内容をまとめた詳細な提案書。</li>
<li class="">開発者としての経歴。 履歴書がある場合は、コピーを添付してください。
それ以外の場合は、過去の技術経験についてお教えください。<!-- -->
<ul>
<li class="">特定の分野での経験不足で不合格になることはありませんが、これはメンターがあなたを最も効果的にサポートし、サマープロジェクトが成功するよう計画を立てるのに役立ちます。</li>
</ul>
</li>
</ul>
<p><a href="https://electronhq.notion.site/Electron-Google-Summer-of-Code-2025-Contributor-Guidance-1851459d1bd181ac8004ecb9e031b368" target="_blank" rel="noopener noreferrer" class="">Electronアプリケーションの一部として提出する必要のある項目の詳細なガイドはこちらをご確認ください</a>。 <strong>Google Summer of Codeポータルに直接提案を送信する</strong>。 Electron チームへ電子メールで送信された提案は、最終提出物とみなされません。</p>
<p>提案に関する詳細なガイダンスについては、<a href="https://google.github.io/gsocguides/student/writing-a-proposal" target="_blank" rel="noopener noreferrer" class="">こちらの Google Summer of Code 公式の提案作成アドバイス</a> に従うことをお勧めします。</p>
<p>応募開始は <strong>2025 年 3 月 24 日</strong>、締め切りは <strong>2025 年 4 月 8 日</strong> です。</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>過去のプロジェクトの提案</div><div class="admonitionContent_BuS1"><p>📚 GSoC 2024 にて、<a href="https://github.com/piotrpdev" target="_blank" rel="noopener noreferrer" class="">@piotrpdev</a> は Electron コアドキュメントに API 履歴を追加する作業に取り組みました。 Piotr さんが夏に Electron で取り組んだ内容を確認したい方は、<a href="https://summerofcode.withgoogle.com/archive/2024/organizations/electron" target="_blank" rel="noopener noreferrer" class="">2024 GSoC プログラムのアーカイブ</a> にある彼のレポートをご覧ください。</p><p>🔐 GSoC 2022 にて、<a href="https://github.com/aryanshridhar" target="_blank" rel="noopener noreferrer" class="">@aryanshridhar</a> は Electron Fiddle でのコンテキスト隔離の有効化に取り組みました。 Aryan さんが夏に Electron で取り組んだことを確認したい方は、<a href="https://summerofcode.withgoogle.com/archive/2022/organizations/electron" target="_blank" rel="noopener noreferrer" class="">2022 GSoC プログラムのアーカイブ</a> から彼のレポートを閲覧できます。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="質問">質問?<a href="https://electronjs.org/ja/blog/2025-summer-of-code#%E8%B3%AA%E5%95%8F" class="hash-link" aria-label="質問? への直接リンク" title="質問? への直接リンク" translate="no">​</a></h2>
<p>ブログ記事で取り上げられていない質問や提案の執筆に関するお問い合わせは、<a href="mailto:summer-of-code@electronjs.org" target="_blank" rel="noopener noreferrer" class="">summer-of-code@electronjs.org</a> までメールしていただくか、<a href="https://developers.google.com/open-source/gsoc/faq" target="_blank" rel="noopener noreferrer" class="">GSoC FAQ</a> をご確認ください。 メールを送る前に、
<a href="https://electronhq.notion.site/Electron-Google-Summer-of-Code-2025-Contributor-Guidance-1851459d1bd181ac8004ecb9e031b368" target="_blank" rel="noopener noreferrer" class="">コントリビューターガイダンス</a>をお読みください。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="リソース">リソース<a href="https://electronjs.org/ja/blog/2025-summer-of-code#%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9" class="hash-link" aria-label="リソース への直接リンク" title="リソース への直接リンク" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://electronhq.notion.site/Electron-Google-Summer-of-Code-2025-Ideas-List-1851459d1bd1811894dad8b48a68596d" target="_blank" rel="noopener noreferrer" class="">Electron の Google Summer of Code 2025 アイデアリスト</a></li>
<li class=""><a href="https://electronhq.notion.site/Electron-Google-Summer-of-Code-2025-Contributor-Guidance-1851459d1bd181ac8004ecb9e031b368" target="_blank" rel="noopener noreferrer" class="">Electron Google Summer of Code 2025 貢献者ガイダンス</a></li>
<li class=""><a href="https://google.github.io/gsocguides/student/" target="_blank" rel="noopener noreferrer" class="">Google Summer of Code 学生/貢献者ガイド</a></li>
</ul>]]></content:encoded>
            <category>コミュニティ</category>
        </item>
        <item>
            <title><![CDATA[Electron 34.0.0]]></title>
            <link>https://electronjs.org/ja/blog/electron-34-0</link>
            <guid>https://electronjs.org/ja/blog/electron-34-0</guid>
            <pubDate>Tue, 14 Jan 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron 34.0.0 がリリースされました! これには Chromium 132.0.6834.83、V8 13.2、Node 20.18.1 へのアップグレードが含まれています。]]></description>
            <content:encoded><![CDATA[<p>Electron 34.0.0 がリリースされました! これには Chromium <code>132.0.6834.83</code>、V8 <code>13.2</code>、Node <code>20.18.1</code> へのアップグレードが含まれています。</p>
<hr>
<p>Electron チームは、Electron 34.0.0 のリリース発表にワクワクしています! <code>npm install electron@latest</code> から npm でインストールするか、<a href="https://www.electronjs.org/releases?channel=stable" target="_blank" rel="noopener noreferrer" class="">リリースウェブサイト</a> からダウンロードできます。 このリリースの詳細は続きをご覧ください。</p>
<p>何かフィードバックがあれば、<a href="https://bsky.app/profile/electronjs.org" target="_blank" rel="noopener noreferrer" class="">Bluesky</a> や <a href="https://social.lfx.dev/@electronjs" target="_blank" rel="noopener noreferrer" class="">Mastodon</a> で共有したり、コミュニティの <a href="https://discord.com/invite/electronjs" target="_blank" rel="noopener noreferrer" class="">Discord</a> に参加してみましょう! バグや機能の要望は Electron の <a href="https://github.com/electron/electron/issues" target="_blank" rel="noopener noreferrer" class="">Issue トラッカー</a> で報告できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="注目すべき変更">注目すべき変更<a href="https://electronjs.org/ja/blog/electron-34-0#%E6%B3%A8%E7%9B%AE%E3%81%99%E3%81%B9%E3%81%8D%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="注目すべき変更 への直接リンク" title="注目すべき変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="http-圧縮における共有辞書管理-api">HTTP 圧縮における共有辞書管理 API<a href="https://electronjs.org/ja/blog/electron-34-0#http-%E5%9C%A7%E7%B8%AE%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E5%85%B1%E6%9C%89%E8%BE%9E%E6%9B%B8%E7%AE%A1%E7%90%86-api" class="hash-link" aria-label="HTTP 圧縮における共有辞書管理 API への直接リンク" title="HTTP 圧縮における共有辞書管理 API への直接リンク" translate="no">​</a></h3>
<p>HTTP 圧縮は、ブラウザがデータを受信する前に、Web サーバーによってデータを圧縮することを可能にします。 最新バージョンの Chromium は Brotli や Zstandard などの新しい圧縮アルゴリウムをサポートしており、テキストファイルに対して gzip などの従来方式よりも優れた性能を発揮します。</p>
<p>カスタム圧縮辞書は Brotli や Zstandard の圧縮効率をさらに向上させます。 詳細は<a href="https://developer.chrome.com/blog/shared-dictionary-compression" target="_blank" rel="noopener noreferrer" class="">共有辞書についてのChrome for Developers ブログ</a>をご覧ください。</p>
<p><a href="https://github.com/felixrieseberg" target="_blank" rel="noopener noreferrer" class="">@felixrieseberg</a> は <a href="https://github.com/electron/electron/pull/44950" target="_blank" rel="noopener noreferrer" class="">#44950</a> に以下の API を追加し、セッションレベルで共有辞書を管理できるようになりました。</p>
<ul>
<li class=""><code>session.getSharedDictionaryUsageInfo()</code></li>
<li class=""><code>session.getSharedDictionaryInfo(options)</code></li>
<li class=""><code>session.clearSharedDictionaryCache()</code></li>
<li class=""><code>session.clearSharedDictionaryCacheForIsolationKey(options)</code></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="応答しないレンダラーのjavascriptコールスタック">応答しないレンダラーのJavaScriptコールスタック<a href="https://electronjs.org/ja/blog/electron-34-0#%E5%BF%9C%E7%AD%94%E3%81%97%E3%81%AA%E3%81%84%E3%83%AC%E3%83%B3%E3%83%80%E3%83%A9%E3%83%BC%E3%81%AEjavascript%E3%82%B3%E3%83%BC%E3%83%AB%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF" class="hash-link" aria-label="応答しないレンダラーのJavaScriptコールスタック への直接リンク" title="応答しないレンダラーのJavaScriptコールスタック への直接リンク" translate="no">​</a></h3>
<p>レンダラープロセスが規定の時間以上ハングした場合、Electron の <a href="https://www.electronjs.org/docs/latest/api/web-contents#event-unresponsive" target="_blank" rel="noopener noreferrer" class=""><code>unresponsive</code></a> イベントが発生します。 <a href="https://github.com/samuelmaddock" target="_blank" rel="noopener noreferrer" class="">@samuelmaddock</a> が <a href="https://github.com/electron/electron/pull/44204" target="_blank" rel="noopener noreferrer" class="">#44204</a> で追加した新しい <code>webFrameMain.collectJavaScriptCallStack()</code> API は、関連する <code>WebFrameMain</code> オブジェクト（<code>webContnets.mainFrame</code>）から JavaScript のコールスタックを収集できるようにします。</p>
<p>この API は、JavaScript イベントが長時間実行され、プロセスがハングした場合にフレームが応答しなくなる原因を特定するのに役立ちます。 詳細は<a href="https://wicg.github.io/crash-reporting/" target="_blank" rel="noopener noreferrer" class="">クラッシュレポート API の Web 標準への提唱</a>をご覧ください。</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">Main Process</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> app </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'electron'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">app</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">commandLine</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">appendSwitch</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">'enable-features'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">'DocumentPolicyIncludeJSCallStacksInCrashReports'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">app</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">on</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'web-contents-created'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">_</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> webContents</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">on</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'unresponsive'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// 応答しないレンダラーの実行を中断し、コールスタックを収集する</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> callStack </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">mainFrame</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">collectJavaScriptCallStack</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'Renderer unresponsive\n'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> callStack</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<blockquote>
<p>[! 注意] このAPIはヘッダーに <code>'Document-Policy': 'include-js-call-stacks-in-crash-reports'</code> を追加して、有効化する必要があります。 詳しい情報は <a href="https://github.com/electron/electron/issues/45356" target="_blank" rel="noopener noreferrer" class="">#45356</a> を参照してください。</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="累積的変更">累積的変更<a href="https://electronjs.org/ja/blog/electron-34-0#%E7%B4%AF%E7%A9%8D%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="累積的変更 への直接リンク" title="累積的変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">Chromium <code>132.0.6834.83</code>
<ul>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-131/" target="_blank" rel="noopener noreferrer" class="">Chrome 131 の新機能</a></li>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-132/" target="_blank" rel="noopener noreferrer" class="">Chrome 132 の新機能</a></li>
</ul>
</li>
<li class="">Node <code>20.18.1</code>
<ul>
<li class=""><a href="https://nodejs.org/en/blog/release/v20.18.1/" target="_blank" rel="noopener noreferrer" class="">Node 20.18.1 ブログ記事</a></li>
</ul>
</li>
<li class="">V8 <code>13.2</code></li>
</ul>
<p>Electron 34 では、<code>130.0.6723.44</code> から <code>132.0.6834.83</code> へ、Node は <code>20.18.2</code> から <code>20.18.1</code> へ、V8 は <code>13.0</code> から <code>13.2</code> へとアップグレードしています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="新機能">新機能<a href="https://electronjs.org/ja/blog/electron-34-0#%E6%96%B0%E6%A9%9F%E8%83%BD" class="hash-link" aria-label="新機能 への直接リンク" title="新機能 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">Brotli または ZStandard を使用して圧縮効率を向上するための、共有辞書を管理する API を追加しました。 新しい <code>session.getSharedDictionaryUsageInfo()</code>、<code>session.getSharedDictionaryInfo(options)</code>、<code>session.clearSharedDictionaryCache()</code>、<code>session.clearSharedDictionaryCacheForIsolationKey(options)</code> APIを追加しました。 <a href="https://github.com/electron/electron/pull/44950" target="_blank" rel="noopener noreferrer" class="">#44950</a></li>
<li class=""><code>WebFrameMain.collectJavaScriptCallStack()</code> を追加し、応答しないレンダラーの JavaScript コールスタックにアクセスすることができるようになりました。 <a href="https://github.com/electron/electron/pull/44938" target="_blank" rel="noopener noreferrer" class="">#44938</a></li>
<li class="">フレームのアンロード状態に <code>WebFrameMain.detached</code> を追加しました。<!-- -->
<ul>
<li class="">フレームが破棄されたかどうかを判断するために <code>WebFrameMain.isDestroyed()</code> が追加されました。</li>
<li class="">フレームのアンロード中に、<code>WebFrameMain.fromId(processId, frameId)</code> が与えられたパラメータと一致しないインスタンスを返すのを修正しました。 <a href="https://github.com/electron/electron/pull/43473" target="_blank" rel="noopener noreferrer" class="">#43473</a></li>
</ul>
</li>
<li class="">V8 の致命的なエラーに関する診断レポートをサポートするために、ユーティリティプロセスにエラーのイベントを追加しました。 <a href="https://github.com/electron/electron/pull/43774" target="_blank" rel="noopener noreferrer" class="">#43774</a></li>
<li class="">機能：GPUアクセラレーションによる共有テクスチャのオフスクリーンレンダリングを追加。 <a href="https://github.com/electron/electron/pull/42953" target="_blank" rel="noopener noreferrer" class="">#42953</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="破壊的変更">破壊的変更<a href="https://electronjs.org/ja/blog/electron-34-0#%E7%A0%B4%E5%A3%8A%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="破壊的変更 への直接リンク" title="破壊的変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作変更-windows-では全画面表示中にメニューバーが非表示になります">動作変更: Windows では、全画面表示中にメニューバーが非表示になります。<a href="https://electronjs.org/ja/blog/electron-34-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4-windows-%E3%81%A7%E3%81%AF%E5%85%A8%E7%94%BB%E9%9D%A2%E8%A1%A8%E7%A4%BA%E4%B8%AD%E3%81%AB%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%8C%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99" class="hash-link" aria-label="動作変更: Windows では、全画面表示中にメニューバーが非表示になります。 への直接リンク" title="動作変更: Windows では、全画面表示中にメニューバーが非表示になります。 への直接リンク" translate="no">​</a></h3>
<p>これにより、Linux と同等の動作になります。 以前までは、Windows では全画面表示中にメニューバーが表示されていました。 これからは、Windows では全画面表示中にメニューバーが隠れます。</p>
<p><strong>訂正</strong>: これは以前、Electron 33 で破壊的変更として記載されていましたが、Electron 34 で最初にリリースされました。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="31xy-サポートの終了">31.x.y サポートの終了<a href="https://electronjs.org/ja/blog/electron-34-0#31xy-%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E7%B5%82%E4%BA%86" class="hash-link" aria-label="31.x.y サポートの終了 への直接リンク" title="31.x.y サポートの終了 への直接リンク" translate="no">​</a></h2>
<p>プロジェクトの <a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy" target="_blank" rel="noopener noreferrer" class="">サポートポリシー</a> に則り、Electron 31.x.y はサポート終了を迎えました。 開発者とアプリケーションは新しいバージョンの Electron にアップグレードすることを推奨します。</p>
<table><thead><tr><th>E34 (2025 年 1 月)</th><th>E35 (2025 年 4 月)</th><th>E36 (2025 年 6 月)</th></tr></thead><tbody><tr><td>34.x.y</td><td>35.x.y</td><td>36.x.y</td></tr><tr><td>33.x.y</td><td>34.x.y</td><td>35.x.y</td></tr><tr><td>32.x.y</td><td>33.x.y</td><td>34.x.y</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="次回予告">次回予告<a href="https://electronjs.org/ja/blog/electron-34-0#%E6%AC%A1%E5%9B%9E%E4%BA%88%E5%91%8A" class="hash-link" aria-label="次回予告 への直接リンク" title="次回予告 への直接リンク" translate="no">​</a></h2>
<p>短期的には、Chromium、Node、V8 といった Electron を構成する主要コンポーネントの開発に遅れないでチームが注力し続けるでしょう。</p>
<p><a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines" target="_blank" rel="noopener noreferrer" class="">Electron の公開タイムラインはこちらで</a> ご覧いただけます。</p>
<p>今後の変更についての詳細は、<a href="https://github.com/electron/electron/blob/main/docs/breaking-changes.md" target="_blank" rel="noopener noreferrer" class="">予定されている破壊的変更</a> のページをご覧ください。</p>]]></content:encoded>
            <category>Release</category>
        </item>
        <item>
            <title><![CDATA[エコシステムを Node 22 へ移行する]]></title>
            <link>https://electronjs.org/ja/blog/ecosystem-node-22</link>
            <guid>https://electronjs.org/ja/blog/ecosystem-node-22</guid>
            <pubDate>Tue, 07 Jan 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[2025 年初頭に、Electron の npm エコシステムリポジトリ (@electron/ および @electron-forge/ 名前空間の下) は、最小サポートバージョンを Node.js 22 へ移行します。]]></description>
            <content:encoded><![CDATA[<p>2025 年初頭に、Electron の npm エコシステムリポジトリ (<code>@electron/</code> および <code>@electron-forge/</code> 名前空間の下) は、最小サポートバージョンを Node.js 22 へ移行します。</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="どういう意味ですか">どういう意味ですか？<a href="https://electronjs.org/ja/blog/ecosystem-node-22#%E3%81%A9%E3%81%86%E3%81%84%E3%81%86%E6%84%8F%E5%91%B3%E3%81%A7%E3%81%99%E3%81%8B" class="hash-link" aria-label="どういう意味ですか？ への直接リンク" title="どういう意味ですか？ への直接リンク" translate="no">​</a></h3>
<p>これまで、Electron の npm エコシステム (Forge、Packager など) のパッケージは、その Node バージョンのサポート終了 (EOL) 日が過ぎた後でも、可能な限りそのバージョンをサポートしてきました。 これは、エコシステムが断片化されないようにするためです。多くのプロジェクトが古いバージョンの Node に依存していることを理解していますが、アップグレードする緊急の理由がなかっただけでそれらのプロジェクトが取り残されるリスクを冒したくありません。</p>
<p>時間の経過とともに、Node.js 14 を最小バージョンとして使用することが、以下の理由によりますます困難になってきました。</p>
<ul>
<li class="">公式の Node.js 14 は macOS ARM64 ビルドがないため、完全なテストカバレッジを提供するために CI インフラストラクチャでの回避策をメンテンナンスする必要があります。</li>
<li class="">上流パッケージの依存関係に対する <code>engines</code> の要件が進み、依存関係の増加によるサプライ チェーンのセキュリティ問題を解決することがますます困難になっています。</li>
</ul>
<p>さらに、Node.js の新しいバージョンには、ランタイムネイティブの共通ユーティリティ (例: <a href="https://nodejs.org/api/fs.html#fsglobpattern-options-callback" target="_blank" rel="noopener noreferrer" class=""><code>fs.glob</code></a> や <a href="https://nodejs.org/api/util.html#utilparseargsconfig" target="_blank" rel="noopener noreferrer" class=""><code>util.parseArgs</code></a>) や、付属の新規モジュール (例: <a href="https://nodejs.org/api/test.html" target="_blank" rel="noopener noreferrer" class=""><code>node:test</code></a>、<a href="https://nodejs.org/api/sqlite.html" target="_blank" rel="noopener noreferrer" class=""><code>node:sqlite</code></a>) など、活用したい多くの改善点が含まれています。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="なぜ今アップグレードするのですか">なぜ今アップグレードするのですか？<a href="https://electronjs.org/ja/blog/ecosystem-node-22#%E3%81%AA%E3%81%9C%E4%BB%8A%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%99%E3%81%8B" class="hash-link" aria-label="なぜ今アップグレードするのですか？ への直接リンク" title="なぜ今アップグレードするのですか？ への直接リンク" translate="no">​</a></h3>
<p>2024 年 7 月、Electron のエコシステムワーキンググループは、そのバージョンが LTS の日付に達した後の将来、同期的な ESM グラフの <code>require()</code> がサポートされる最初の Node バージョンで全パッケージをアップグレードすることを決定しました (<a href="https://github.com/nodejs/node/pull/51977" target="_blank" rel="noopener noreferrer" class="">nodejs/node#51977</a> および <a href="https://github.com/nodejs/node/pull/53500" target="_blank" rel="noopener noreferrer" class="">nodejs/node#53500</a> を参照)。</p>
<p>このアップデート時期は 2025 年 1 月 / 2 月に設定しました。 このアップグレードが行われると、Node 22 が既存のエコシステムパッケージでサポートされる最小バージョンになります。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="自分に必要なアクションは何ですか">自分に必要なアクションは何ですか？<a href="https://electronjs.org/ja/blog/ecosystem-node-22#%E8%87%AA%E5%88%86%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AA%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B" class="hash-link" aria-label="自分に必要なアクションは何ですか？ への直接リンク" title="自分に必要なアクションは何ですか？ への直接リンク" translate="no">​</a></h3>
<p>私たちは可能な限り互換性を維持するよう努めています。 しかし、最適なサポートを確実に受けるためにアプリを Node 22 以降へアップグレードすることを推奨します。</p>
<p>注意として、プロジェクトを実行している Node のバージョンは現在の Electron バージョンに組み込まれている Node のバージョンと無関係です。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="今後の予定">今後の予定<a href="https://electronjs.org/ja/blog/ecosystem-node-22#%E4%BB%8A%E5%BE%8C%E3%81%AE%E4%BA%88%E5%AE%9A" class="hash-link" aria-label="今後の予定 への��直接リンク" title="今後の予定 への直接リンク" translate="no">​</a></h3>
<p>ご質問やご不明な点がありましたら、<a href="mailto:info@electronjs.org" target="_blank" rel="noopener noreferrer" class="">info@electronjs.org</a> まで気軽にお問い合わせください。 公式の <a href="https://discord.gg/electronjs" target="_blank" rel="noopener noreferrer" class="">Electron の Discord</a> でコミュニティのサポートも得られるでしょう。</p>]]></content:encoded>
            <category>コミュニティ</category>
            <category>エコシステム</category>
        </item>
        <item>
            <title><![CDATA[12 月の安息月 (Dec'24)]]></title>
            <link>https://electronjs.org/ja/blog/dec-quiet-period-24</link>
            <guid>https://electronjs.org/ja/blog/dec-quiet-period-24</guid>
            <pubDate>Fri, 22 Nov 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron プロジェクトは 2024 年 12 月の 1 ヶ月間休止し、2025 年 1 月から全力に戻ります。]]></description>
            <content:encoded><![CDATA[<p>Electron プロジェクトは 2024 年 12 月の 1 ヶ月間休止し、2025 年 1 月から全力に戻ります。</p>
<div style="width:100%;height:0;padding-bottom:54%;position:relative"><iframe src="https://giphy.com/embed/3otPoSDQczp1s9kVAQ" width="100%" height="100%" style="position:absolute" frameborder="0" class="giphy-embed" allowfullscreen=""></iframe></div>
<p><a href="https://giphy.com/gifs/filmeditor-disney-pixar-3otPoSDQczp1s9kVAQ">GIPHY より</a></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="12-月でも変わらないこと">12 月でも変わらないこと<a href="https://electronjs.org/ja/blog/dec-quiet-period-24#12-%E6%9C%88%E3%81%A7%E3%82%82%E5%A4%89%E3%82%8F%E3%82%89%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8" class="hash-link" aria-label="12 月でも変わらないこと への直接リンク" title="12 月でも変わらないこと への直接リンク" translate="no">​</a></h2>
<ol>
<li class="">ゼロデイやその他の主要なセキュリティ関連のリリースは必要に応じて公開されます。 セキュリティインシデントは、<a href="https://github.com/electron/electron/tree/main/SECURITY.md" target="_blank" rel="noopener noreferrer" class="">SECURITY.md</a> に則って報告してください。</li>
<li class=""><a href="https://github.com/electron/electron/blob/main/CODE_OF_CONDUCT.md" target="_blank" rel="noopener noreferrer" class="">行動規範</a> における通報とモデレーションは継続されます。</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="12-月で変わること">12 月で変わること<a href="https://electronjs.org/ja/blog/dec-quiet-period-24#12-%E6%9C%88%E3%81%A7%E5%A4%89%E3%82%8F%E3%82%8B%E3%81%93%E3%81%A8" class="hash-link" aria-label="12 月で変わること への直接リンク" title="12 月で変わること への直接リンク" translate="no">​</a></h2>
<ol>
<li class="">Electron 31、32、33 を含む、2024 年の最後の安定ブランチのリリースは、12 月 1 日の週に行われます。 12 月中にこれ以上のリリース予定はありません。</li>
<li class="">12 月の最後の 2 週間は、ナイトリーやアルファのリリースはありません。</li>
<li class="">いくつかの例外を除いて、プルリクエストのレビューやマージはしません。</li>
<li class="">どのリポジトリでも Issue トラッカーは更新されません。</li>
<li class="">メンテナからの Discord デバッグのヘルプはありません。</li>
<li class="">ソーシャルメディアコンテンツの更新はありません。</li>
</ol>
<p>皆さん、2025 年にまたお会いしましょう!</p>]]></content:encoded>
            <category>ニュース</category>
        </item>
        <item>
            <title><![CDATA[BrowserView から WebContentsView への移行]]></title>
            <link>https://electronjs.org/ja/blog/migrate-to-webcontentsview</link>
            <guid>https://electronjs.org/ja/blog/migrate-to-webcontentsview</guid>
            <pubDate>Mon, 11 Nov 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[BrowserView は Electron 30 から非推奨となり、WebContentView に置き換えられます。 ありがたいことに、移行は比較的簡単です。]]></description>
            <content:encoded><![CDATA[<p><code>BrowserView</code> は <a href="http://www.electronjs.org/blog/electron-30-0" target="_blank" rel="noopener noreferrer" class="">Electron 30</a> から非推奨となり、<code>WebContentView</code> に置き換えられます。 ありがたいことに、移行は比較的簡単です。</p>
<hr>
<p>Electron は、Chromium の UI フレームワークである <a href="https://www.chromium.org/chromium-os/developer-library/guides/views/intro/" target="_blank" rel="noopener noreferrer" class="">Views API</a> に合わせて、<a href="https://www.electronjs.org/docs/latest/api/browser-view" target="_blank" rel="noopener noreferrer" class=""><code>BrowserView</code></a> から <a href="https://www.electronjs.org/docs/latest/api/web-contents-view" target="_blank" rel="noopener noreferrer" class=""><code>WebContentsView</code></a> へ移行しています。 <code>WebContentsView</code> は、Chromium のレンダリングパイプラインに直接結び付けられた再利用可能なビューを提供し、将来のアップグレードを簡素化し、開発者が Electron アプリに非ウェブ UI 要素を統合する可能性を広げます。 <code>WebContentsView</code> を採用することで、アプリケーションは今後のアップデートに備えることができるだけでなく、長期的にはコードの複雑さが軽減され、潜在的なバグも減少するというメリットも得られます。</p>
<p>BrowserWindow と BrowserView に精通している開発者は、<code>BrowserWindow</code> と <code>WebContentsView</code> がそれぞれ <a href="https://www.electronjs.org/docs/latest/api/base-window" target="_blank" rel="noopener noreferrer" class=""><code>BaseWindow</code></a> と <a href="https://www.electronjs.org/docs/latest/api/view" target="_blank" rel="noopener noreferrer" class=""><code>View</code></a> の基底クラスから派生したサブクラスであることに注意するとよいでしょう。 利用可能なインスタンス変数とメソッドを完全に理解するには、これら基底クラスのドキュメントを参照するようにしてください。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="移行ステップ">移行ステップ<a href="https://electronjs.org/ja/blog/migrate-to-webcontentsview#%E7%A7%BB%E8%A1%8C%E3%82%B9%E3%83%86%E3%83%83%E3%83%97" class="hash-link" aria-label="移行ステップ への直接リンク" title="移行ステップ への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-electron-3000-以降へアップグレード">1. Electron 30.0.0 以降へアップグレード<a href="https://electronjs.org/ja/blog/migrate-to-webcontentsview#1-electron-3000-%E4%BB%A5%E9%99%8D%E3%81%B8%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89" class="hash-link" aria-label="1. Electron 30.0.0 以降へアップグレード への直接リンク" title="1. Electron 30.0.0 以降へアップグレード への直接リンク" translate="no">​</a></h3>
<div class="theme-admonition theme-admonition-warning admonition_xJq3 alert alert--warning"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>警告</div><div class="admonitionContent_BuS1"><p>Electron のリリースは、アプリケーションに影響する破壊的変更を含むことがあります。 残りの移行に進む前に、<em>まず</em> Electron のアップグレードをあなたのアプリでテストしてから実装することを推奨します。 Electron の各メジャーバージョンにおける破壊的変更点のリストは、<a href="https://www.electronjs.org/docs/latest/breaking-changes" target="_blank" rel="noopener noreferrer" class="">こちら</a> および Electron ブログの各メジャーバージョンのリリースノートに記載されています。</p></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-あなたのアプリケーションが-browserview-を使う場所を把握する">2. あなたのアプリケーションが BrowserView を使う場所を把握する<a href="https://electronjs.org/ja/blog/migrate-to-webcontentsview#2-%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%8C-browserview-%E3%82%92%E4%BD%BF%E3%81%86%E5%A0%B4%E6%89%80%E3%82%92%E6%8A%8A%E6%8F%A1%E3%81%99%E3%82%8B" class="hash-link" aria-label="2. あなたのアプリケーションが BrowserView を使う場所を把握する への直接リンク" title="2. あなたのアプリケーションが BrowserView を使う場所を把握する への直接リンク" translate="no">​</a></h3>
<p>1 つ方法は、あなたのコードベースで <code>new BrowserView(</code> を検索することです。 これにより、アプリケーションが BrowserView をどのように使用しているか、および移行する必要がある呼び出し箇所の数がわかります。</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>ヒント</div><div class="admonitionContent_BuS1"><p>ほとんどの場合、アプリが新規 BrowserView をインスタンス化している各コードは、他とは独立して移行できます。</p></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-browserview-の使用それぞれを移行する">3. <code>BrowserView</code> の使用それぞれを移行する<a href="https://electronjs.org/ja/blog/migrate-to-webcontentsview#3-browserview-%E3%81%AE%E4%BD%BF%E7%94%A8%E3%81%9D%E3%82%8C%E3%81%9E%E3%82%8C%E3%82%92%E7%A7%BB%E8%A1%8C%E3%81%99%E3%82%8B" class="hash-link" aria-label="3-browserview-の使用それぞれを移行する への直接リンク" title="3-browserview-の使用それぞれを移行する への直接リンク" translate="no">​</a></h3>
<ol>
<li class="">
<p>それぞれのインスタンス化を移行します。 <a href="https://www.electronjs.org/docs/latest/api/web-contents-view#new-webcontentsviewoptions" target="_blank" rel="noopener noreferrer" class="">WebContentsView</a> と <a href="https://www.electronjs.org/docs/latest/api/browser-view#new-browserviewoptions-experimental-deprecated" target="_blank" rel="noopener noreferrer" class="">BrowserView</a> のコンストラクターは本質的に同じ形状なので、これはかなり簡単なはずです。 どちらも <code>webPreferences</code> 引数を介して <a href="https://www.electronjs.org/docs/latest/api/structures/web-preferences" target="_blank" rel="noopener noreferrer" class="">WebPreferences</a> を受け入れます。</p>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49"> this.tabBar = new BrowserView({</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa"> this.tabBar = new WebContentsView({</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>デフォルトでは、<code>WebContentsView</code> は白い背景でインスタンス化され、<code>BrowserView</code> は透明な背景でインスタンス化されます。
<code>WebContentsView</code> で透明な背景にするには、以下のように背景色をアルファ (不透明度) チャンネルが <code>00</code> の RGBA 16 進値に設定します。</p><div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa"> this.webContentsView.setBackgroundColor("#00000000");</span><br></span></code></pre></div></div></div></div>
</li>
<li class="">
<p><code>BrowserView</code> を親ウインドウへ追加する場所を移行します。</p>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49"> this.browserWindow.addBrowserView(this.tabBar)</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa"> this.browserWindow.contentView.addChildView(this.tabBar);</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>親ウインドウの <code>BrowserView</code> インスタンスメソッドの呼び出しを移行します。</p>
<table><thead><tr><th>旧メソッド</th><th>新メソッド</th><th>注釈</th></tr></thead><tbody><tr><td><code>win.setBrowserView</code></td><td><code>win.contentView.removeChildView</code> + <code>win.contentView.addChildView</code></td><td></td></tr><tr><td><code>win.getBrowserView</code></td><td><code>win.contentView.children</code></td><td></td></tr><tr><td><code>win.removeBrowserView</code></td><td><code>win.contentView.removeChildView</code></td><td></td></tr><tr><td><code>win.setTopBrowserView</code></td><td><code>win.contentView.addChildView</code></td><td>既存のビューで <code>addChildView</code> を呼び出すと、そのビューが最上位に並べ替えられます。</td></tr><tr><td><code>win.getBrowserViews</code></td><td><code>win.contentView.children</code></td><td></td></tr></tbody></table>
</li>
<li class="">
<p><code>setAutoResize</code> インスタンスメソッドをサイズ変更のリスナーへ移行します。</p>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49"> this.browserView.setAutoResize({</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49">   vertical: true,</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49"> })</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa"> this.browserWindow.on('resize', () =&gt; {</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">   if (!this.browserWindow || !this.webContentsView) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">     return;</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">   }</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">   const bounds = this.browserWindow.getBounds();</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">   this.webContentsView.setBounds({</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">     x: 0,</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">     y: 0,</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">     width: bounds.width,</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">     height: bounds.height,</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">    });</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">  });</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>ヒント</div><div class="admonitionContent_BuS1"><p><code>browserView.webContents</code> とインスタンスメソッド <code>browserView.setBounds</code>、<code>browserView.getBounds</code>、<code>browserView.setBackgroundColor</code> の既存の使用法はすべて移行不要で、そのままの <code>WebContentsView</code> インスタンスで動作するはずです！</p></div></div>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-テストして変更をコミットする">4) テストして変更をコミットする<a href="https://electronjs.org/ja/blog/migrate-to-webcontentsview#4-%E3%83%86%E3%82%B9%E3%83%88%E3%81%97%E3%81%A6%E5%A4%89%E6%9B%B4%E3%82%92%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%81%99%E3%82%8B" class="hash-link" aria-label="4) テストして変更をコミットする への直接リンク" title="4) テストして変更をコミットする への直接リンク" translate="no">​</a></h3>
<p>問題が発生しましたか？ Electron の Issue トラッカーの <a href="https://github.com/electron/electron/labels/component%2FWebContentsView" target="_blank" rel="noopener noreferrer" class="">WebContentsView</a> タグを確認して、発生している問題が報告済かどうかご確認ください。 ここで Issue が見つからない場合は、お気軽に新しいバグレポートを追加してください。 テストケースの要点を含めてもらえると、Issue のより適切なトリアージに役立ちます！</p>
<p>おめでとうございます。WebContentsView への移行が完了しました！ 🎉</p>]]></content:encoded>
            <category>コミュニティ</category>
        </item>
        <item>
            <title><![CDATA[Electron 33.0.0]]></title>
            <link>https://electronjs.org/ja/blog/electron-33-0</link>
            <guid>https://electronjs.org/ja/blog/electron-33-0</guid>
            <pubDate>Mon, 14 Oct 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron 33.0.0 がリリースされました! これには Chromium 130.0.6723.44、V8 13.0、Node 20.18.0 へのアップグレードが含まれています。]]></description>
            <content:encoded><![CDATA[<p>Electron 33.0.0 がリリースされました! これには Chromium <code>130.0.6723.44</code>、V8 <code>13.0</code>、Node <code>20.18.0</code> へのアップグレードが含まれています。</p>
<hr>
<p>Electron チームは、Electron 33.0.0 のリリース発表にワクワクしています! <code>npm install electron@latest</code> から npm でインストールするか、<a href="https://www.electronjs.org/releases?channel=stable" target="_blank" rel="noopener noreferrer" class="">リリースウェブサイト</a> からダウンロードできます。 このリリースの詳細は続きをご覧ください。</p>
<p>何かフィードバックがあれば、<a href="https://twitter.com/electronjs" target="_blank" rel="noopener noreferrer" class="">Twitter</a> や <a href="https://social.lfx.dev/@electronjs" target="_blank" rel="noopener noreferrer" class="">Mastodon</a> で共有したり、コミュニティの <a href="https://discord.com/invite/electronjs" target="_blank" rel="noopener noreferrer" class="">Discord</a> に参加してみましょう! バグや機能の要望は Electron の <a href="https://github.com/electron/electron/issues" target="_blank" rel="noopener noreferrer" class="">Issue トラッカー</a> で報告できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="注目すべき変更">注目すべき変更<a href="https://electronjs.org/ja/blog/electron-33-0#%E6%B3%A8%E7%9B%AE%E3%81%99%E3%81%B9%E3%81%8D%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="注目すべき変更 への直接リンク" title="注目すべき変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">PIN が必要な暗号化デバイスのロック解除に役立つハンドラ <code>app.setClientCertRequestPasswordHandler(handler)</code> を追加しました。 <a href="https://github.com/electron/electron/pull/41205" target="_blank" rel="noopener noreferrer" class="">#41205</a></li>
<li class="">履歴管理を改善するために、2 つの新しい関数を追加して <code>navigationHistory</code> API を拡張しました。 <a href="https://github.com/electron/electron/pull/42014" target="_blank" rel="noopener noreferrer" class="">#42014</a></li>
<li class="">ネイティブのテーマの透明度チェックを改善しました。 <a href="https://github.com/electron/electron/pull/42862" target="_blank" rel="noopener noreferrer" class="">#42862</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="累積的変更">累積的変更<a href="https://electronjs.org/ja/blog/electron-33-0#%E7%B4%AF%E7%A9%8D%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="累積的変更 への直接リンク" title="累積的変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">Chromium <code>130.0.6723.44</code>
<ul>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-130/" target="_blank" rel="noopener noreferrer" class="">Chrome 130 の新機能</a></li>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-129/" target="_blank" rel="noopener noreferrer" class="">Chrome 129 の新機能</a></li>
</ul>
</li>
<li class="">Node <code>20.18.0</code>
<ul>
<li class=""><a href="https://nodejs.org/en/blog/release/v20.18.0/" target="_blank" rel="noopener noreferrer" class="">Node 20.18.0 ブログ記事</a></li>
<li class=""><a href="https://nodejs.org/en/blog/release/v20.17.0/" target="_blank" rel="noopener noreferrer" class="">Node 20.17.0 ブログ記事</a></li>
</ul>
</li>
<li class="">V8 <code>13.0</code></li>
</ul>
<p>Electron 33 では、Chromium は <code>128.0.6613.36</code> から <code>130.0.6723.44</code> へ、Node は <code>20.16.0</code> から <code>20.18.0</code> へ、V8 は <code>12.8</code> から <code>13.0</code> へとアップグレードしています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="新機能">新機能<a href="https://electronjs.org/ja/blog/electron-33-0#%E6%96%B0%E6%A9%9F%E8%83%BD" class="hash-link" aria-label="新機能 への直接リンク" title="新機能 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">PIN が必要な暗号化デバイスのロック解除に役立つハンドラ <code>app.setClientCertRequestPasswordHandler(handler)</code> を追加しました。 <a href="https://github.com/electron/electron/pull/41205" target="_blank" rel="noopener noreferrer" class="">#41205</a></li>
<li class="">V8 の致命的なエラーに関する診断レポートをサポートするために、ユーティリティプロセスにエラーのイベントを追加しました。 <a href="https://github.com/electron/electron/pull/43997" target="_blank" rel="noopener noreferrer" class="">#43997</a></li>
<li class="">ビューの境界線の半径をカスタマイズする <code>View.setBorderRadius(radius)</code> が追加されました。<code>WebContentsView</code> との互換性付きです。 <a href="https://github.com/electron/electron/pull/42320" target="_blank" rel="noopener noreferrer" class="">#42320</a></li>
<li class="">履歴管理を改善するために、2 つの新しい関数を追加して <code>navigationHistory</code> API を拡張しました。 <a href="https://github.com/electron/electron/pull/42014" target="_blank" rel="noopener noreferrer" class="">#42014</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="破壊的変更">破壊的変更<a href="https://electronjs.org/ja/blog/electron-33-0#%E7%A0%B4%E5%A3%8A%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="破壊的変更 への直接リンク" title="破壊的変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="削除-macos-1015-のサポート">削除: macOS 10.15 のサポート<a href="https://electronjs.org/ja/blog/electron-33-0#%E5%89%8A%E9%99%A4-macos-1015-%E3%81%AE%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88" class="hash-link" aria-label="削除: macOS 10.15 のサポート への直接リンク" title="削除: macOS 10.15 のサポート への直接リンク" translate="no">​</a></h3>
<p>macOS 10.15 (Catalina) は <a href="https://chromium-review.googlesource.com/c/chromium/src/+/5734361" target="_blank" rel="noopener noreferrer" class="">Chromium</a> でサポートされなくなりました。</p>
<p>旧バージョンの Electron はこれらのオペレーティングシステムでも引き続き動作しますが、Electron v20.0.0 以降の動作には macOS 11 (High Sierra) 以降が必要です。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作変更-ネイティブモジュールにc20が必要になりました">動作変更: ネイティブモジュールにC++20が必要になりました<a href="https://electronjs.org/ja/blog/electron-33-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4-%E3%83%8D%E3%82%A4%E3%83%86%E3%82%A3%E3%83%96%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%ABc20%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F" class="hash-link" aria-label="動作変更: ネイティブモジュールにC++20が必要になりました への直接リンク" title="動作変更: ネイティブモジュールにC++20が必要になりました への直接リンク" translate="no">​</a></h3>
<p>上流における変更により、<a href="https://chromium-review.googlesource.com/c/v8/v8/+/5587859" target="_blank" rel="noopener noreferrer" class="">V8</a> と <a href="https://github.com/nodejs/node/pull/45427" target="_blank" rel="noopener noreferrer" class="">Node.js</a> の両方が、最小バージョンとしてC++20を必要とするようになりました。 ネイティブのNodeモジュールを使用する開発者は、 <code>--std=c++17</code> ではなく <code>--std=c++20</code> でモジュールをビルドする必要があります。 gcc9 以下のバージョンで作成されたイメージは、コンパイルするには gcc10 への更新が必要になる場合があります。 詳細は<a href="https://github.com/electron/electron/pull/43555" target="_blank" rel="noopener noreferrer" class="">#43555</a>を参照してください。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作変更-windowsにおけるカスタムプロトコルurlの処理">動作変更: WindowsにおけるカスタムプロトコルURLの処理<a href="https://electronjs.org/ja/blog/electron-33-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4-windows%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%ABurl%E3%81%AE%E5%87%A6%E7%90%86" class="hash-link" aria-label="動作変更: WindowsにおけるカスタムプロトコルURLの処理 への直接リンク" title="動作変更: WindowsにおけるカスタムプロトコルURLの処理 への直接リンク" translate="no">​</a></h3>
<p>Chromiumが「<a href="http://bit.ly/url-non-special" target="_blank" rel="noopener noreferrer" class="">特別でないURL (Non-special URL)</a>」をサポートのために変更を加えたため、Windowsファイルパスを使用するカスタムプロトコルURLは、非推奨となった <code>protocol.registerFileProtocol</code> と <code>BrowserWindow.loadURL</code>、<code>WebContents.loadURL</code> 、<code>&lt;webview&gt;.loadURL</code> の <code>baseURLForDataURL</code> プロパティでは正しく動作しなくなります。 <code>protocol.handle</code> もこれらのタイプのURLでは動作しませんが、これは元々そのように動作しているため、変更ではありません。</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// 動作しない</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">protocol</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">registerFileProtocol</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'other'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">callback</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">filePath</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'/path/to/my/file'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> mainWindow </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">BrowserWindow</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mainWindow</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">loadURL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">'data:text/html,&lt;script src="loaded-from-dataurl.js"&gt;&lt;/script&gt;'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">baseURLForDataURL</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'other://C:\\myapp'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mainWindow</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">loadURL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'other://C:\\myapp\\index.html'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// 代替案</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> path </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'node:path'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> nodeUrl </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'node:url'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">protocol</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">handle</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">other</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">req</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> srcPath </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'C:\\myapp\\'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> reqURL </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">URL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">req</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> net</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">fetch</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    nodeUrl</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">pathToFileURL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">join</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">srcPath</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> reqURL</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">pathname</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">toString</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mainWindow</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">loadURL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">'data:text/html,&lt;script src="loaded-from-dataurl.js"&gt;&lt;/script&gt;'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">baseURLForDataURL</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'other://'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mainWindow</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">loadURL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'other://index.html'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作変更-app-の-login-における-webcontents-プロパティ">動作変更: <code>app</code> の <code>login</code> における <code>webContents</code> プロパティ<a href="https://electronjs.org/ja/blog/electron-33-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4-app-%E3%81%AE-login-%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B-webcontents-%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3" class="hash-link" aria-label="動作変更-app-の-login-における-webcontents-プロパティ への直接リンク" title="動作変更-app-の-login-における-webcontents-プロパティ への直接リンク" translate="no">​</a></h3>
<p><code>app</code> の <code>login</code> イベントにおける <code>webContents</code> プロパティは、 <a href="https://www.electronjs.org/docs/latest/api/utility-process" target="_blank" rel="noopener noreferrer" class="">ユーティリティプロセス</a> の <code>respondToAuthRequestsFromMainProcess</code> オプションによってイベントがトリガーされたとき <code>null</code> が返るようになります。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="非推奨-browserwindowconstructoroptiontype-の-textured-オプション">非推奨: <code>BrowserWindowConstructorOption.type</code> の <code>textured</code> オプション<a href="https://electronjs.org/ja/blog/electron-33-0#%E9%9D%9E%E6%8E%A8%E5%A5%A8-browserwindowconstructoroptiontype-%E3%81%AE-textured-%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3" class="hash-link" aria-label="非推奨-browserwindowconstructoroptiontype-の-textured-オプション への直接リンク" title="非推奨-browserwindowconstructoroptiontype-の-textured-オプション への直接リンク" translate="no">​</a></h3>
<p><code>BrowserWindowConstructorOptions</code> の <code>type</code> プロパティの <code>textured</code> オプションは非推奨となりました。代替となるオプションはありません。 このオプションはmacOSの <a href="https://developer.apple.com/documentation/appkit/nswindowstylemask/nswindowstylemasktexturedbackground" target="_blank" rel="noopener noreferrer" class=""><code>NSWindowStyleMaskTexturedBackground</code></a> スタイルマスクに依存していましたが、これは代替手段なく非推奨になりました。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="非推奨-systempreferencesaccessibilitydisplayshouldreducetransparency">非推奨: <code>systemPreferences.accessibilityDisplayShouldReduceTransparency</code><a href="https://electronjs.org/ja/blog/electron-33-0#%E9%9D%9E%E6%8E%A8%E5%A5%A8-systempreferencesaccessibilitydisplayshouldreducetransparency" class="hash-link" aria-label="非推奨-systempreferencesaccessibilitydisplayshouldreducetransparency への直接リンク" title="非推奨-systempreferencesaccessibilitydisplayshouldreducetransparency への直接リンク" translate="no">​</a></h3>
<p><code>systemPreferences.accessibilityDisplayShouldReduceTransparency</code> プロパティは非推奨となり、新しい <code>nativeTheme.prefersReducedTransparency</code> が推奨されます。新しいものでは全く同じ情報を提供しながら、クロスプラットフォームで動作します。</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// 非推奨</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> shouldReduceTransparency </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  systemPreferences</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">accessibilityDisplayShouldReduceTransparency</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// こちらで置き換えてください</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> prefersReducedTransparency </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> nativeTheme</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">prefersReducedTransparency</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="30xy-サポートの終了">30.x.y サポートの終了<a href="https://electronjs.org/ja/blog/electron-33-0#30xy-%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E7%B5%82%E4%BA%86" class="hash-link" aria-label="30.x.y サポートの終了 への直接リンク" title="30.x.y サポートの終了 への直接リンク" translate="no">​</a></h2>
<p>プロジェクトの <a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy" target="_blank" rel="noopener noreferrer" class="">サポートポリシー</a> に則り、Electron 30.x.y はサポート終了を迎えました。 開発者とアプリケーションは新しいバージョンの Electron にアップグレードすることを推奨します。</p>
<table><thead><tr><th>E33 (2024 年 10 月)</th><th>E34 (2025 年 1 月)</th><th>E35 (2025 年 4 月)</th></tr></thead><tbody><tr><td>33.x.y</td><td>34.x.y</td><td>35.x.y</td></tr><tr><td>32.x.y</td><td>33.x.y</td><td>34.x.y</td></tr><tr><td>31.x.y</td><td>32.x.y</td><td>33.x.y</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="次回予告">次回予告<a href="https://electronjs.org/ja/blog/electron-33-0#%E6%AC%A1%E5%9B%9E%E4%BA%88%E5%91%8A" class="hash-link" aria-label="次回予告 への直接リンク" title="次回予告 への直接リンク" translate="no">​</a></h2>
<p>短期的には、Chromium、Node、V8 といった Electron を構成する主要コンポーネントの開発に遅れないでチームが注力し続けるでしょう。</p>
<p><a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines" target="_blank" rel="noopener noreferrer" class="">Electron の公開タイムラインはこちらで</a> ご覧いただけます。</p>
<p>今後の変更についての詳細は、<a href="https://github.com/electron/electron/blob/main/docs/breaking-changes.md" target="_blank" rel="noopener noreferrer" class="">予定されている破壊的変更</a> のページをご覧ください。</p>]]></content:encoded>
            <category>Release</category>
        </item>
        <item>
            <title><![CDATA[API 履歴の導入 (GSoC 2024)]]></title>
            <link>https://electronjs.org/ja/blog/introducing-api-history</link>
            <guid>https://electronjs.org/ja/blog/introducing-api-history</guid>
            <pubDate>Wed, 21 Aug 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron API の履歴がドキュメント内で詳解されるようになります。]]></description>
            <content:encoded><![CDATA[<p>Electron API の履歴がドキュメント内で詳解されるようになります。</p>
<hr>
<p>こんにちは 👋、2024 年 <a href="https://summerofcode.withgoogle.com/" target="_blank" rel="noopener noreferrer" class="">Google Summer of Code (GSoC)</a> の Electron のコントリビューターの、Peter です。</p>
<p>GSoC プログラムの過程で、Electron ドキュメントとその関数、クラスなどに API の履歴の機能を実装しました。これは、<a href="https://nodejs.org/en/docs" target="_blank" rel="noopener noreferrer" class="">Node.js ドキュメント</a> と同様の方法で、API ドキュメントの Markdown ファイルにシンプルかつ強力な YAML スキーマを使用できるようにし、Electron ドキュメントのウェブサイトでわかりやすく表示することで実現しました。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="詳細">詳細<a href="https://electronjs.org/ja/blog/introducing-api-history#%E8%A9%B3%E7%B4%B0" class="hash-link" aria-label="詳細 への直接リンク" title="詳細 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api-履歴ドキュメント化システム--yaml-スキーマ">API 履歴ドキュメント化システム / YAML スキーマ<a href="https://electronjs.org/ja/blog/introducing-api-history#api-%E5%B1%A5%E6%AD%B4%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E5%8C%96%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0--yaml-%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%9E" class="hash-link" aria-label="API 履歴ドキュメント化システム / YAML スキーマ への直接リンク" title="API 履歴ドキュメント化システム / YAML スキーマ への直接リンク" translate="no">​</a></h3>
<p>Markdown API ドキュメントにて、関数/クラスなどの履歴が HTML コメントで包まれた YAML コードブロックの形式で、その項目のヘッダーの直後に配置されるようになりました。</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">#### `win.setTrafficLightPosition(position)` _macOS_</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;</span><span class="token tag" style="color:#00009f">!--</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">```YAML history</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">added</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">pr-url</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//github.com/electron/electron/pull/22533</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">changes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">pr-url</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//github.com/electron/electron/pull/26789</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">description</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"`trafficLightPosition` オプションが `customButtonOnHover` のウインドウで機能するようにしました。"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">deprecated</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">pr-url</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//github.com/electron/electron/pull/37094</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">breaking-changes-header</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> deprecated</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">browserwindowsettrafficlightpositionposition</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">```</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">-</span><span class="token punctuation" style="color:#393A34">-</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">* `position` </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">Point</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain">(structures/point.md)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">信号機ボタンのカスタム位置を設定します。`titleBarStyle` が `hidden` に設定されている場合にのみ使用できます。</span><br></span></code></pre></div></div>
<p>Node.js のドキュメントのように YAML を使用すると読みやすいので、これが最善のアプローチだと考えています。 この API 履歴は、できるだけ複雑にせず、簡単に書いたり読んだりできることが理想です。</p>
<p>上述の最終的なデザインは、実際に私が提案した以下のものとは大きく異なります。</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&lt;</span><span class="token tag" style="color:#00009f">!--</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">```YAML history</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">added</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> v10.0.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">deprecated</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> v25.0.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">removed</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> v28.0.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">changes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">version</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> v13.0.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">pr-url</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//github.com/electron/electron/pull/26789</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">description</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> `trafficLightPosition` オプションが `customButtonOnHover` のウインドウで機能するようにしました。</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">```</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">-</span><span class="token punctuation" style="color:#393A34">-</span><span class="token punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<p>大きな変更としては、バージョン番号の削除です。</p>
<blockquote>
<p>「[...] この提案について、私たちが指摘したい重要な変更点が 1 つあります。これは、提唱をレビューしていて議論されたときに浮上したものです。
[...]</p>
<p>[私たちは] 提唱のようなハードコードされたバージョン文字列ではなく、PR の URL (main への大本の PR) のみを使用するのが [最も欠点の少ない] アプローチであると判断しました。</p>
<p>これは、正確なバージョン番号を導き出すために使用できる唯一の真の情報源として機能し、変更が他のブランチにバックポートされた場合も mainでのドキュメントの変更は不要になります。」</p>
<p>— David Sanders <a href="https://github.com/dsanders11" target="_blank" rel="noopener noreferrer" class="">(@dsanders11)</a>、Slack にて</p>
</blockquote>
<p>また、API が Electron から削除されるとドキュメントからも削除されるため、API 履歴には削除を含めないことにしました。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript-実装">JavaScript 実装<a href="https://electronjs.org/ja/blog/introducing-api-history#javascript-%E5%AE%9F%E8%A3%85" class="hash-link" aria-label="JavaScript 実装 への直接リンク" title="JavaScript 実装 への直接リンク" translate="no">​</a></h3>
<p>当初は、ドキュメントファイル内の API 履歴を抽出、検証/lint、変換するためのスクリプトを含んだ <code>@electron/docs-api-history-tools</code> npm パッケージを新しく作成する予定でした。</p>
<p>コーディング期間が始まる約 1 週間前に、メンターと話し合った結果、それはおそらく不要だと気づきました。</p>
<blockquote>
<p>「皆さんこんにちは。話し合いの後でプロジェクトについて考えていました。依存関係のため、<code>e/website</code> と <code>e/lint-roller</code> では抽出ロジックを別々に対処する必要があることを考慮すると、API 履歴用の個別パッケージは不要かもしれません。」</p>
<table><thead><tr><th style="text-align:center">提唱</th><th style="text-align:center">改訂後</th></tr></thead><tbody><tr><td style="text-align:center"><img decoding="async" loading="lazy" src="https://electronjs.org/ja/static/assets/img/blog/api-history-js-proposed.png" alt="提唱" class="img_ev3q"></td><td style="text-align:center"><img decoding="async" loading="lazy" src="https://electronjs.org/ja/static/assets/img/blog/api-history-js-revised.png" alt="改訂後" class="img_ev3q"></td></tr></tbody></table>
<p>— Piotr Płaczek (私)、Slack にて</p>
</blockquote>
<p>最終的に、私たちは私の当初のアイデアを実行しないことに決めました。</p>
<blockquote>
<p>「@Piotr Płaczek それは良さそうですね！ いずれにしても、2 つの実装間で多くのコードを共有すべきだとわかれば、後のイテレーションで別のモジュールにリファクタリングできると思います <!-- -->🙂<!-- -->」</p>
<p>— Erick Zhao (<a href="https://github.com/erickzhao" target="_blank" rel="noopener noreferrer" class="">@erickzhao</a>)、Slack にて</p>
</blockquote>
<p>代わりに、私たちは、それらに最も関連性の高いさまざまなツールを Electron のリポジトリへと分割しました。</p>
<ul>
<li class=""><code>yaml-api-history-schema.json</code>
<ul>
<li class="">-&gt; <code>electron/electron</code> (<a href="https://github.com/electron/electron/blob/main/docs/api-history.schema.json" target="_blank" rel="noopener noreferrer" class=""><code>api-history.schema.json</code></a>)</li>
</ul>
</li>
<li class=""><code>lint-yaml-api-history.ts</code>
<ul>
<li class="">-&gt; <code>electron/lint-roller</code> (<a href="https://github.com/electron/lint-roller/blob/3d87b7ba8f99868a28648297f31a1587945045ab/bin/lint-markdown-api-history.ts#L4" target="_blank" rel="noopener noreferrer" class=""><code>lint-markdown-api-history.ts</code></a>)</li>
</ul>
</li>
<li class=""><code>extract-yaml-api-history.ts</code>
<ul>
<li class="">-&gt; <code>electron/website</code> (<a href="https://github.com/electron/website/blob/f7e9446dd7d04b3369e9454f7c95f638fa061f1e/scripts/tasks/preprocess-api-history.ts#L4" target="_blank" rel="noopener noreferrer" class=""><code>preprocess-api-history.ts</code></a>)</li>
</ul>
</li>
<li class=""><code>yaml-api-history-to-markdown.ts</code>
<ul>
<li class="">-&gt; <code>electron/website</code> (<a href="https://github.com/electron/website/blob/f7e9446dd7d04b3369e9454f7c95f638fa061f1e/src/transformers/api-history.ts" target="_blank" rel="noopener noreferrer" class=""><code>transformers/api-history.ts</code></a>)</li>
<li class="">-&gt; <code>electron/website</code> (<a href="https://github.com/electron/website/blob/f7e9446dd7d04b3369e9454f7c95f638fa061f1e/src/components/ApiHistoryTable.tsx" target="_blank" rel="noopener noreferrer" class=""><code>ApiHistoryTable.tsx</code></a>)</li>
</ul>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="electron-のドキュメントのウェブサイトの-ui-とスタイル">Electron のドキュメントのウェブサイトの UI とスタイル<a href="https://electronjs.org/ja/blog/introducing-api-history#electron-%E3%81%AE%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AE%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE-ui-%E3%81%A8%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB" class="hash-link" aria-label="Electron のドキュメントのウェブサイトの UI とスタイル への直接リンク" title="Electron のドキュメントのウェブサイトの UI とスタイル への直接リンク" translate="no">​</a></h3>
<p>私は当初、API の履歴データを表示するためのシンプルな表を提案していました。</p>
<table><thead><tr><th style="text-align:center">デザインプロトタイプ (閉じ状態)</th><th style="text-align:center">デザインプロトタイプ (開き状態)</th></tr></thead><tbody><tr><td style="text-align:center"><img decoding="async" loading="lazy" src="https://electronjs.org/ja/static/assets/img/blog/api-history-prototype-closed.png" alt="デモ1" class="img_ev3q"></td><td style="text-align:center"><img decoding="async" loading="lazy" src="https://electronjs.org/ja/static/assets/img/blog/api-history-prototype-open.png" alt="デモ2" class="img_ev3q"></td></tr></tbody></table>
<p>最終的に実装されたデザインは次のようになります。</p>
<p><img decoding="async" loading="lazy" src="https://electronjs.org/ja/static/assets/img/blog/api-history-open-implemented.png" alt="デモ3" class="img_ev3q"></p>
<p>これはプロトタイプとほぼ同じです。 最も重要な追加は、<a href="https://semver.org/" target="_blank" rel="noopener noreferrer" class="">SemVer</a> の範囲の使用です。これは、機能がどのバージョンに存在するかをより適切に伝えるために選びました (提案して頂いた Samuel Attard <a href="https://github.com/MarshallOfSound" target="_blank" rel="noopener noreferrer" class="">(@MarshallOfSound)</a> さんに感謝します)。</p>
<p>これは、変更がサポートされている Electron のリリースライン全体に頻繁にバックポートされるため重要です。例えば、ある修正は Electron v32.0.0、v31.1.0、v30.2.0 に反映される可能性があります。
この場合、v31.0.0 には存在しないことになり、ユーザーは v30.x.x リリースに存在するという事実に基づいて誤って推測するかもしれないのです。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="使用方法スタイルガイド">使用方法/スタイルガイド<a href="https://electronjs.org/ja/blog/introducing-api-history#%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89" class="hash-link" aria-label="使用方法/スタイルガイド への直接リンク" title="使用方法/スタイルガイド への直接リンク" translate="no">​</a></h3>
<p>新機能の API 履歴ドキュメントの作成に特化した、使用方法/スタイルガイドを追加しました。 YAML スキーマの適切な使用方法を詳しく説明し、典型的/便利な例などを示しています。 <a href="https://github.com/electron/electron/blob/main/docs/development/style-guide.md#api-history" target="_blank" rel="noopener noreferrer" class="">こちら</a> でご覧いただけます。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="移行ガイド">移行ガイド<a href="https://electronjs.org/ja/blog/introducing-api-history#%E7%A7%BB%E8%A1%8C%E3%82%AC%E3%82%A4%E3%83%89" class="hash-link" aria-label="移行ガイド への直接リンク" title="移行ガイド への直接リンク" translate="no">​</a></h3>
<p>既存の API を新しいドキュメントシステムに移行する必要があるため、移行ガイドを作成しました。 これは、古い API を移行するときに開発者が実行する必要がある一般的な手順として、重大な変更の確認、過去のリリースの参照、古いコミットの確認などを取り上げています。
そして開発者に、使用方法/スタイル ガイドに従って既存のクラス/関数などの API に履歴のドキュメントを追加するように指示します。</p>
<p>残念ながら、これを効果的に自動化する方法は思いつきませんでした。 おそらくこれは AI/機械学習エンジニアにとっては楽しい仕事でしょうが、私にそのスキルはなく、誤って API 履歴に <a href="https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence)" target="_blank" rel="noopener noreferrer" class="">ハルシネーション</a> を導入してしまうことが心配でした。 たとえ自動化されたとしても、その情報は最終的には人間によって検証される必要があるでしょう 😕。 このタスクは、おそらく <a href="https://github.com/nodejs/node/issues/6578" target="_blank" rel="noopener noreferrer" class="">Node.js ドキュメントの場合と同じように</a>、ファイルごとに手動で実行する必要があります。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="成果物">成果物<a href="https://electronjs.org/ja/blog/introducing-api-history#%E6%88%90%E6%9E%9C%E7%89%A9" class="hash-link" aria-label="成果物 への直接リンク" title="成果物 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">
<p><code>api-history.schema.json</code></p>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="">API 履歴をドキュメント化するための包括的な YAML スキーマで、以下のサポートを含みます。<!-- -->
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->機能追加</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->非推奨</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->変更</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->関連プルリクエストへのリンク</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->バックポート</li>
</ul>
</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->提唱内容: <a href="https://github.com/electron/rfcs/pull/6" target="_blank" rel="noopener noreferrer" class="">electron/rfc#6</a></li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->実装/利用内容: <a href="https://github.com/electron/electron/pull/42982" target="_blank" rel="noopener noreferrer" class="">electron/electron#42982</a></li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->利用内容: <a href="https://github.com/electron/website/pull/594" target="_blank" rel="noopener noreferrer" class="">electron/website#594</a></li>
</ul>
</li>
<li class="">
<p><code>lint-markdown-api-history.ts</code></p>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="">カスタムの YAML (技術的には JSON) スキーマに従って記述された YAML の API 履歴を lint するスクリプト。<!-- -->
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->便利なエラーメッセージ</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->包括的なドキュメント / コードのコメント</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->広範囲にわたる <del>Jest</del> Vitest のテスト</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->良好なパフォーマンス</li>
</ul>
</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->実装内容: <a href="https://github.com/electron/lint-roller/pull/73" target="_blank" rel="noopener noreferrer" class="">electron/lint-roller#73</a></li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->利用内容: <a href="https://github.com/electron/electron/pull/42982" target="_blank" rel="noopener noreferrer" class="">electron/electron#42982</a></li>
</ul>
</li>
<li class="">
<p><code>preprocess-api-history.ts</code></p>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="">誤った API 履歴がリポジトリに取り込まれた場合に備えて、簡単な検証を実行します。 また、<a href="https://docusaurus.io/" target="_blank" rel="noopener noreferrer" class="">Docusaurus</a> が解析できないため、API 履歴ブロックを囲む HTML コメントタグも取り除きます。</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->実装内容: <a href="https://github.com/electron/website/pull/594" target="_blank" rel="noopener noreferrer" class="">electron/website#594</a></li>
</ul>
</li>
<li class="">
<p><code>transformers/api-history.ts</code></p>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="">Markdown ドキュメントファイル内の YAML API 履歴ブロックを <del>Markdown/HTML</del> <a href="https://react.dev/" target="_blank" rel="noopener noreferrer" class="">React</a> の表 (<code>ApiHistoryTable.tsx</code>) に変換するスクリプト。</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->実装内容: <a href="https://github.com/electron/website/pull/594" target="_blank" rel="noopener noreferrer" class="">electron/website#594</a></li>
</ul>
</li>
<li class="">
<p><code>ApiHistoryTable.tsx</code></p>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="">ドキュメントのウェブサイトで解析した API 履歴データの表示に使用する React の表のコンポーネント。<!-- -->
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->ウェブサイトの周りのデザインに従ったスタイルを使用します。</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->レスポンシブでアクセスしやすく、全体的に適切に記述された HTML、CSS、JS です。</li>
</ul>
</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->実装内容: <a href="https://github.com/electron/website/pull/594" target="_blank" rel="noopener noreferrer" class="">electron/website#594</a></li>
</ul>
</li>
<li class="">
<p><code>styleguide.md</code></p>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="">新しい API 履歴ドキュメントシステムの使用方法/スタイルガイドのセクション。<!-- -->
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->わかりやすい</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->十分な記述</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->サンプル付き</li>
</ul>
</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->実装/利用内容: <a href="https://github.com/electron/electron/pull/42982" target="_blank" rel="noopener noreferrer" class="">electron/electron#42982</a></li>
</ul>
</li>
<li class="">
<p><code>api-history-migration-guide.md</code></p>
<ul class="contains-task-list containsTaskList_mC6p">
<li class="">新しい API 履歴ドキュメントシステムの移行ガイド。<!-- -->
<ul class="contains-task-list containsTaskList_mC6p">
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->わかりやすい</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->十分な記述</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->サンプル付き</li>
</ul>
</li>
<li class="task-list-item"><input type="checkbox" disabled="" checked=""> <!-- -->実装/利用内容: <a href="https://github.com/electron/electron/pull/42982" target="_blank" rel="noopener noreferrer" class="">electron/electron#42982</a></li>
</ul>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="おわりに">おわりに<a href="https://electronjs.org/ja/blog/introducing-api-history#%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB" class="hash-link" aria-label="おわりに への直接リンク" title="おわりに への直接リンク" translate="no">​</a></h2>
<p>この機能に取り組むのはとても楽しく、チームとのコードレビューやさまざまな実装の詳細の議論を通じて貴重な経験を積むことができました。</p>
<p>ドキュメントに API 履歴が追加されることで、Electron を使用する開発者、特に既存のアプリを数年前の Electron バージョンから移行しようとしている開発者の作業が、大幅に楽になると思います。</p>
<p>以下の私のメンターの方々にも心から謝意を述べたいと思います。</p>
<ul>
<li class="">David Sanders <a href="https://github.com/dsanders11" target="_blank" rel="noopener noreferrer" class="">(@dsanders11)</a></li>
<li class="">Keeley Hammond <a href="https://github.com/VerteDinde" target="_blank" rel="noopener noreferrer" class="">(@VerteDinde)</a></li>
<li class="">Erick Zhao <a href="https://github.com/erickzhao" target="_blank" rel="noopener noreferrer" class="">(@erickzhao)</a></li>
</ul>
<p>...そして、私の質問に回答してくださり、時間を割いてプルリクエストにフィードバックを提供して頂いた Electron チームの他のメンバーの方々にも感謝します。
大変お世話になりました。</p>]]></content:encoded>
            <category>コミュニティ</category>
        </item>
        <item>
            <title><![CDATA[Electron 32.0.0]]></title>
            <link>https://electronjs.org/ja/blog/electron-32-0</link>
            <guid>https://electronjs.org/ja/blog/electron-32-0</guid>
            <pubDate>Tue, 20 Aug 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron 32.0.0 がリリースされました! これには Chromium 128.0.6613.36、V8 12.8、Node 20.16.0 へのアップグレードが含まれています。]]></description>
            <content:encoded><![CDATA[<p>Electron 32.0.0 がリリースされました! これには Chromium <code>128.0.6613.36</code>、V8 <code>12.8</code>、Node <code>20.16.0</code> へのアップグレードが含まれています。</p>
<hr>
<p>Electron チームは、Electron 32.0.0 のリリース発表にワクワクしています! <code>npm install electron@latest</code> から npm でインストールするか、<a href="https://www.electronjs.org/releases?channel=stable" target="_blank" rel="noopener noreferrer" class="">リリースウェブサイト</a> からダウンロードできます。 このリリースの詳細は続きをご覧ください。</p>
<p>何かフィードバックがあれば、<a href="https://twitter.com/electronjs" target="_blank" rel="noopener noreferrer" class="">Twitter</a> や <a href="https://social.lfx.dev/@electronjs" target="_blank" rel="noopener noreferrer" class="">Mastodon</a> で共有したり、コミュニティの <a href="https://discord.com/invite/electronjs" target="_blank" rel="noopener noreferrer" class="">Discord</a> に参加してみましょう! バグや機能の要望は Electron の <a href="https://github.com/electron/electron/issues" target="_blank" rel="noopener noreferrer" class="">Issue トラッカー</a> で報告できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="注目すべき変更">注目すべき変更<a href="https://electronjs.org/ja/blog/electron-32-0#%E6%B3%A8%E7%9B%AE%E3%81%99%E3%81%B9%E3%81%8D%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="注目すべき変更 への直接リンク" title="注目すべき変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">ドキュメントに新しく API バージョン履歴を追加しました。これは、Google Summer of Code の一環として @piotrpdev によって作成された機能です。 詳細については、<a class="" href="https://electronjs.org/ja/blog/introducing-api-history">こちらのブログ記事</a> をご覧ください。 <a href="https://github.com/electron/electron/pull/42982" target="_blank" rel="noopener noreferrer" class="">#42982</a></li>
<li class="">ウェブの File API から非標準の File.path 拡張を削除しました。 <a href="https://github.com/electron/electron/pull/42053" target="_blank" rel="noopener noreferrer" class="">#42053</a></li>
<li class="">ブロックされたパス内のファイルまたはディレクトリを開こうとしたときに、ウェブの <a href="https://developer.mozilla.org/en-US/docs/Web/API/File_System_API" target="_blank" rel="noopener noreferrer" class="">ファイル システム API</a> が失敗する流れを上流と整合させました。 <a href="https://github.com/electron/electron/pull/42993" target="_blank" rel="noopener noreferrer" class="">#42993</a></li>
<li class=""><code>webcontents.navigationHistory</code> に、次の既存のナビゲーション関連 API を追加しました: <code>canGoBack</code>, <code>goBack</code>, <code>canGoForward</code>, <code>goForward</code>, <code>canGoToOffset</code>, <code>goToOffset</code>, <code>clear</code>。 以前のナビゲーション API は非推奨になりました。 <a href="https://github.com/electron/electron/pull/41752" target="_blank" rel="noopener noreferrer" class="">#41752</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="累積的変更">累積的変更<a href="https://electronjs.org/ja/blog/electron-32-0#%E7%B4%AF%E7%A9%8D%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="累積的変更 への直接リンク" title="累積的変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">Chromium <code>128.0.6613.36</code>
<ul>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-128/" target="_blank" rel="noopener noreferrer" class="">Chrome 128 の新機能</a></li>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-127/" target="_blank" rel="noopener noreferrer" class="">Chrome 127 の新機能</a></li>
</ul>
</li>
<li class="">Node <code>20.16.0</code>
<ul>
<li class=""><a href="https://nodejs.org/en/blog/release/v20.16.0/" target="_blank" rel="noopener noreferrer" class="">Node 20.16.0 ブログ記事</a></li>
</ul>
</li>
<li class="">V8 <code>12.8</code></li>
</ul>
<p>Electron 32 では、Chromium は <code>126.0.6478.36</code> から <code>128.0.6613.36</code> へ、Node は <code>20.14.0</code> から <code>20.16.0</code> へ、V8 は <code>12.6</code> から <code>12.8</code> へとアップグレードしています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="新機能">新機能<a href="https://electronjs.org/ja/blog/electron-32-0#%E6%96%B0%E6%A9%9F%E8%83%BD" class="hash-link" aria-label="新機能 への直接リンク" title="新機能 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">ユーティリティプロセスから開始された認証の要求に、<code>app</code> モジュールの <a href="https://www.electronjs.org/docs/latest/api/app" target="_blank" rel="noopener noreferrer" class=""><code>'login'</code></a> イベントを介して応答するためのサポートが追加されました。 <a href="https://github.com/electron/electron/pull/43317" target="_blank" rel="noopener noreferrer" class="">#43317</a></li>
<li class=""><code>CPUUsage</code> 構造体に <code>cumulativeCPUUsage</code> プロパティを追加しました。このプロパティは、プロセスの起動以降に使用された CPU 時間の累計秒数を返します。 <a href="https://github.com/electron/electron/pull/41819" target="_blank" rel="noopener noreferrer" class="">#41819</a></li>
<li class=""><code>webContents.navigationHistory</code> に、次の既存のナビゲーション関連 API を追加しました: <code>canGoBack</code>, <code>goBack</code>, <code>canGoForward</code>, <code>goForward</code>, <code>canGoToOffset</code>, <code>goToOffset</code>, <code>clear</code>。 <a href="https://github.com/electron/electron/pull/41752" target="_blank" rel="noopener noreferrer" class="">#41752</a></li>
<li class=""><code>WebContentsView</code> を既存の <code>webContents</code> オブジェクトを受け入れるように拡張しました。 <a href="https://github.com/electron/electron/pull/42086" target="_blank" rel="noopener noreferrer" class="">#42086</a></li>
<li class=""><code>nativeTheme</code> に新しいプロパティ <code>prefersReducedTransparency</code> を追加しました。これは、ユーザーがシステムのアクセシビリティ設定を介して OS レベルの透過度を下げることを選択したかどうかを示します。 <a href="https://github.com/electron/electron/pull/43137" target="_blank" rel="noopener noreferrer" class="">#43137</a></li>
<li class="">ブロックされたパスでファイルまたはディレクトリを開こうとしたときに、ファイルシステムアクセス API が失敗する流れを上流と整合させました。 <a href="https://github.com/electron/electron/pull/42993" target="_blank" rel="noopener noreferrer" class="">#42993</a></li>
<li class="">Linux でウインドウコントロールオーバーレイ API を使えるようにしました。 <a href="https://github.com/electron/electron/pull/42681" target="_blank" rel="noopener noreferrer" class="">#42681</a></li>
<li class="">ネットワークリクエストで <code>zstd</code> 圧縮を使えるようにしました。 <a href="https://github.com/electron/electron/pull/43300" target="_blank" rel="noopener noreferrer" class="">#43300</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="破壊的変更">破壊的変更<a href="https://electronjs.org/ja/blog/electron-32-0#%E7%A0%B4%E5%A3%8A%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="破壊的変更 への直接リンク" title="破壊的変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="削除-filepath">削除: <code>File.path</code><a href="https://electronjs.org/ja/blog/electron-32-0#%E5%89%8A%E9%99%A4-filepath" class="hash-link" aria-label="削除-filepath への直接リンク" title="削除-filepath への直接リンク" translate="no">​</a></h3>
<p>ウェブの <a href="https://developer.mozilla.org/en-US/docs/Web/API/File" target="_blank" rel="noopener noreferrer" class=""><code>File</code></a> オブジェクトの非標準の <code>path</code> プロパティは、レンダラー内ですべてを実行するのが一般的だった時代に、ネイティブのファイルを操作する便利な方法として Electron の初期バージョンで追加されました。 ただし、これは標準からの逸脱であり軽微なセキュリティリスクも伴うため、Electron 32.0 以降では <a href="https://github.com/electron/electron/tree/main/docs/api/web-utils.md#webutilsgetpathforfilefile" target="_blank" rel="noopener noreferrer" class=""><code>webUtils.getPathForFile</code></a> メソッドに置き換えられました。</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// 以前 (レンダラー)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> file </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token dom variable" style="color:#36acaa">document</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">querySelector</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'input[type=file]'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">alert</span><span class="token punctuation" style="color:#393A34">(</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">Uploaded file path was: </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">file</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">path</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// これから (レンダラー)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> file </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token dom variable" style="color:#36acaa">document</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">querySelector</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'input[type=file]'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">electron</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">showFilePath</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">file</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// これから (プリロード)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> contextBridge</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> webUtils </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'electron'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">contextBridge</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">exposeInMainWorld</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'electron'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">showFilePath</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">file</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// できればウェブコンテンツへの完全なファイルパスを</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// 公開しないことを推奨します。</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> path </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> webUtils</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getPathForFile</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">file</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">alert</span><span class="token punctuation" style="color:#393A34">(</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">Uploaded file path was: </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">path</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="非推奨-webcontents-の-clearhistory-cangoback-goback-cangoforward-goforward-gotoindex-cangotooffset-gotooffset">非推奨: <code>WebContents</code> の <code>clearHistory</code>, <code>canGoBack</code>, <code>goBack</code>, <code>canGoForward</code>, <code>goForward</code>, <code>goToIndex</code>, <code>canGoToOffset</code>, <code>goToOffset</code><a href="https://electronjs.org/ja/blog/electron-32-0#%E9%9D%9E%E6%8E%A8%E5%A5%A8-webcontents-%E3%81%AE-clearhistory-cangoback-goback-cangoforward-goforward-gotoindex-cangotooffset-gotooffset" class="hash-link" aria-label="非推奨-webcontents-の-clearhistory-cangoback-goback-cangoforward-goforward-gotoindex-cangotooffset-gotooffset への直接リンク" title="非推奨-webcontents-の-clearhistory-cangoback-goback-cangoforward-goforward-gotoindex-cangotooffset-gotooffset への直接リンク" translate="no">​</a></h3>
<p><code>WebContents</code> インスタンスのナビゲーション関連の API が非推奨になりました。 これらの API は、ナビゲーション履歴を管理するための、より構造化された直感的なインターフェースを提供するために、<code>WebContents</code> の <code>navigationHistory</code> プロパティへ移動されました。</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// 非推奨</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">win</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">clearHistory</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">win</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">canGoBack</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">win</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">goBack</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">win</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">canGoForward</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">win</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">goForward</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">win</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">goToIndex</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">index</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">win</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">canGoToOffset</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">win</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">goToOffset</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">index</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// こちらで置き換えてください</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">win</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">navigationHistory</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">clear</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">win</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">navigationHistory</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">canGoBack</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">win</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">navigationHistory</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">goBack</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">win</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">navigationHistory</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">canGoForward</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">win</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">navigationHistory</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">goForward</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">win</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">navigationHistory</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">canGoToOffset</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">win</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">webContents</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">navigationHistory</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">goToOffset</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">index</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作変更-userdataのディレクトリ-databases-が削除される">動作変更: <code>userData</code>のディレクトリ <code>databases</code> が削除される<a href="https://electronjs.org/ja/blog/electron-32-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4-userdata%E3%81%AE%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA-databases-%E3%81%8C%E5%89%8A%E9%99%A4%E3%81%95%E3%82%8C%E3%82%8B" class="hash-link" aria-label="動作変更-userdataのディレクトリ-databases-が削除される への直接リンク" title="動作変更-userdataのディレクトリ-databases-が削除される への直接リンク" translate="no">​</a></h3>
<p><code>app.getPath('userData')</code> が返すディレクトリに <code>databases</code> という名前のディレクトリがある場合、Electron 32 の初回実行で削除されます。 <code>databases</code> ディレクトリは WebSQL で使用されており、これは Electron 31 で削除されました。 Chromium はこのディレクトリを削除するクリーンアップを実行するようになりました。 <a href="https://github.com/electron/electron/issues/45396" target="_blank" rel="noopener noreferrer" class="">Issue #45396</a> をご参照ください。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="29xy-サポートの終了">29.x.y サポートの終了<a href="https://electronjs.org/ja/blog/electron-32-0#29xy-%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E7%B5%82%E4%BA%86" class="hash-link" aria-label="29.x.y サポートの終了 への直接リンク" title="29.x.y サポートの終了 への直接リンク" translate="no">​</a></h2>
<p>プロジェクトの <a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy" target="_blank" rel="noopener noreferrer" class="">サポートポリシー</a> に則り、Electron 29.x.y はサポート終了を迎えました。 開発者とアプリケーションは新しいバージョンの Electron にアップグレードすることを推奨します。</p>
<table><thead><tr><th>E32 (2024 年 8 月)</th><th>E33 (2024 年 10 月)</th><th>E34 (2025 年 1 月)</th></tr></thead><tbody><tr><td>32.x.y</td><td>33.x.y</td><td>34.x.y</td></tr><tr><td>31.x.y</td><td>32.x.y</td><td>33.x.y</td></tr><tr><td>30.x.y</td><td>31.x.y</td><td>32.x.y</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="次回予告">次回予告<a href="https://electronjs.org/ja/blog/electron-32-0#%E6%AC%A1%E5%9B%9E%E4%BA%88%E5%91%8A" class="hash-link" aria-label="次回予告 への直接リンク" title="次回予告 への直接リンク" translate="no">​</a></h2>
<p>短期的には、Chromium、Node、V8 といった Electron を構成する主要コンポーネントの開発に遅れないでチームが注力し続けるでしょう。</p>
<p><a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines" target="_blank" rel="noopener noreferrer" class="">Electron の公開タイムラインはこちらで</a> ご覧いただけます。</p>
<p>今後の変更についての詳細は、<a href="https://github.com/electron/electron/blob/main/docs/breaking-changes.md" target="_blank" rel="noopener noreferrer" class="">予定されている破壊的変更</a> のページをご覧ください。</p>]]></content:encoded>
            <category>Release</category>
        </item>
        <item>
            <title><![CDATA[Electron 31.0.0]]></title>
            <link>https://electronjs.org/ja/blog/electron-31-0</link>
            <guid>https://electronjs.org/ja/blog/electron-31-0</guid>
            <pubDate>Tue, 11 Jun 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron 31.0.0 がリリースされました! これには Chromium 126.0.6478.36、V8 12.6、Node 20.14.0 へのアップグレードが含まれています。]]></description>
            <content:encoded><![CDATA[<p>Electron 31.0.0 がリリースされました! これには Chromium <code>126.0.6478.36</code>、V8 <code>12.6</code>、Node <code>20.14.0</code> へのアップグレードが含まれています。</p>
<hr>
<p>Electron チームは、Electron 31.0.0 のリリース発表にワクワクしています! <code>npm install electron@latest</code> から npm でインストールするか、<a href="https://www.electronjs.org/releases?channel=stable" target="_blank" rel="noopener noreferrer" class="">リリースウェブサイト</a> からダウンロードできます。 このリリースの詳細は続きをご覧ください。</p>
<p>何かフィードバックがあれば、<a href="https://twitter.com/electronjs" target="_blank" rel="noopener noreferrer" class="">Twitter</a> や <a href="https://social.lfx.dev/@electronjs" target="_blank" rel="noopener noreferrer" class="">Mastodon</a> で共有したり、コミュニティの <a href="https://discord.com/invite/electronjs" target="_blank" rel="noopener noreferrer" class="">Discord</a> に参加してみましょう! バグや機能の要望は Electron の <a href="https://github.com/electron/electron/issues" target="_blank" rel="noopener noreferrer" class="">Issue トラッカー</a> で報告できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="注目すべき変更">注目すべき変更<a href="https://electronjs.org/ja/blog/electron-31-0#%E6%B3%A8%E7%9B%AE%E3%81%99%E3%81%B9%E3%81%8D%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="注目すべき変更 への直接リンク" title="注目すべき変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class=""><code>WebContentsView</code> を既存の <code>webContents</code> オブジェクトを受け入れるように拡張しました。 <a href="https://github.com/electron/electron/pull/42319" target="_blank" rel="noopener noreferrer" class="">#42319</a></li>
<li class=""><code>NODE_EXTRA_CA_CERTS</code> のサポートを追加しました。 <a href="https://github.com/electron/electron/pull/41689" target="_blank" rel="noopener noreferrer" class="">#41689</a></li>
<li class="">window.flashFrame(bool) を macOS 上で持続的に点滅するように更新しました。 <a href="https://github.com/electron/electron/pull/41391" target="_blank" rel="noopener noreferrer" class="">#41391</a></li>
<li class=""><code>WebSQL</code> のサポートを削除しました <a href="https://github.com/electron/electron/pull/41868" target="_blank" rel="noopener noreferrer" class="">#41868</a></li>
<li class=""><code>nativeImage.toDataURL</code> が PNG 色空間を保つようにしました <a href="https://github.com/electron/electron/pull/41610" target="_blank" rel="noopener noreferrer" class="">#41610</a></li>
<li class=""><code>webContents.setWindowOpenHandler</code> が手動作成した BrowserWindow をサポートするように拡張しました。 <a href="https://github.com/electron/electron/pull/41432" target="_blank" rel="noopener noreferrer" class="">#41432</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="累積的変更">累積的変更<a href="https://electronjs.org/ja/blog/electron-31-0#%E7%B4%AF%E7%A9%8D%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="累積的変更 への直接リンク" title="累積的変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">Chromium <code>126.0.6478.36</code>
<ul>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-126/" target="_blank" rel="noopener noreferrer" class="">Chrome 126 の新機能</a></li>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-125/" target="_blank" rel="noopener noreferrer" class="">Chrome 125 の新機能</a></li>
</ul>
</li>
<li class="">Node <code>20.14.0</code>
<ul>
<li class=""><a href="https://nodejs.org/en/blog/release/v20.14.0/" target="_blank" rel="noopener noreferrer" class="">Node 20.14.0 ブログ記事</a></li>
</ul>
</li>
<li class="">V8 <code>12.6</code></li>
</ul>
<p>Electron 31 では、Chromium は <code>124.0.6367.49</code> から <code>126.0.6478.36</code> へ、Node は <code>20.11.1</code> から <code>20.14.0</code> へ、V8 は <code>12.4</code> から <code>12.6</code> へとアップグレードしています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="新機能">新機能<a href="https://electronjs.org/ja/blog/electron-31-0#%E6%96%B0%E6%A9%9F%E8%83%BD" class="hash-link" aria-label="新機能 への直接リンク" title="新機能 への直接リンク" translate="no">​</a></h2>
<ul>
<li class=""><code>Session</code> に <code>clearData</code> メソッドを追加しました。 <a href="https://github.com/electron/electron/pull/40983" target="_blank" rel="noopener noreferrer" class="">#40983</a>
<ul>
<li class=""><code>Session.clearData</code> API に options パラメーターを追加しました。 <a href="https://github.com/electron/electron/pull/41355" target="_blank" rel="noopener noreferrer" class="">#41355</a></li>
</ul>
</li>
<li class=""><code>navigator.serial</code> にサービスクラス ID によって要求される Bluetooth ポートのサポートを追加しました。 <a href="https://github.com/electron/electron/pull/41638" target="_blank" rel="noopener noreferrer" class="">#41638</a></li>
<li class="">Node の <a href="https://nodejs.org/api/cli.html#node_extra_ca_certsfile" target="_blank" rel="noopener noreferrer" class=""><code>NODE_EXTRA_CA_CERTS</code></a> 環境変数のサポートを追加しました。 <a href="https://github.com/electron/electron/pull/41689" target="_blank" rel="noopener noreferrer" class="">#41689</a></li>
<li class=""><code>webContents.setWindowOpenHandler</code> が手動作成した BrowserWindow をサポートするように拡張しました。 <a href="https://github.com/electron/electron/pull/41432" target="_blank" rel="noopener noreferrer" class="">#41432</a></li>
<li class="">ウェブ標準の <a href="https://developer.mozilla.org/en-US/docs/Web/API/File_System_API" target="_blank" rel="noopener noreferrer" class="">ファイルシステム API</a> のサポートを実装しました。 <a href="https://github.com/electron/electron/pull/41419" target="_blank" rel="noopener noreferrer" class="">#41419</a></li>
<li class=""><code>WebContentsView</code> を既存の <code>WebContents</code> インスタンスを受け入れるように拡張しました。 <a href="https://github.com/electron/electron/pull/42319" target="_blank" rel="noopener noreferrer" class="">#42319</a></li>
<li class="">webContents API に新しくインスタンスプロパティ <code>navigationHistory</code> と <code>navigationHistory.getEntryAtIndex</code> メソッドを追加しました。これによりアプリケーションがブラウズ履歴内の任意のナビゲーションエントリの URL とタイトルを取得できるようになります。 <a href="https://github.com/electron/electron/pull/41577" target="_blank" rel="noopener noreferrer" class="">#41577</a> <sup>(及び <a href="https://github.com/electron/electron/pull/41661" target="_blank" rel="noopener noreferrer" class="">29</a>, <a href="https://github.com/electron/electron/pull/41662" target="_blank" rel="noopener noreferrer" class="">30</a>)</sup></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="破壊的変更">破壊的変更<a href="https://electronjs.org/ja/blog/electron-31-0#%E7%A0%B4%E5%A3%8A%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="破壊的変更 への直接リンク" title="破壊的変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="削除websql-のサポート">削除:<code>WebSQL</code> のサポート<a href="https://electronjs.org/ja/blog/electron-31-0#%E5%89%8A%E9%99%A4websql-%E3%81%AE%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88" class="hash-link" aria-label="削除websql-のサポート への直接リンク" title="削除websql-のサポート への直接リンク" translate="no">​</a></h3>
<p>Chromium は WebSQL の上流サポートを削除し、Android のみに移行しました。 詳細は <a href="https://groups.google.com/a/chromium.org/g/blink-dev/c/fWYb6evVA-w/m/pziWcvboAgAJ" target="_blank" rel="noopener noreferrer" class="">Chromium の削除する意図についての議論</a> をご参照ください。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作変更-nativeimagetodataurl-が-png-色空間を保つようにしました">動作変更: <code>nativeImage.toDataURL</code> が PNG 色空間を保つようにしました<a href="https://electronjs.org/ja/blog/electron-31-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4-nativeimagetodataurl-%E3%81%8C-png-%E8%89%B2%E7%A9%BA%E9%96%93%E3%82%92%E4%BF%9D%E3%81%A4%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F" class="hash-link" aria-label="動作変更-nativeimagetodataurl-が-png-色空間を保つようにしました への直接リンク" title="動作変更-nativeimagetodataurl-が-png-色空間を保つようにしました への直接リンク" translate="no">​</a></h3>
<p>PNG デコーダの実装が色空間データを保持するように変更されました。 この関数から返される符号化されたデータは元と一致するようになります。</p>
<p>詳細は <a href="https://issues.chromium.org/issues/332584706" target="_blank" rel="noopener noreferrer" class="">crbug.com/332584706</a> をご参照ください。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="��動作変更-winflashframebool-を-macos-上で持続的に点滅するようにしました">動作変更: <code>win.flashFrame(bool)</code> を macOS 上で持続的に点滅するようにしました<a href="https://electronjs.org/ja/blog/electron-31-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4-winflashframebool-%E3%82%92-macos-%E4%B8%8A%E3%81%A7%E6%8C%81%E7%B6%9A%E7%9A%84%E3%81%AB%E7%82%B9%E6%BB%85%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F" class="hash-link" aria-label="動作変更-winflashframebool-を-macos-上で持続的に点滅するようにしました への直接リンク" title="動作変更-winflashframebool-を-macos-上で持続的に点滅するようにしました への直接リンク" translate="no">​</a></h3>
<p>これにより、Windows および Linux と同等の動作になります。 以前の動作: 最初の <code>flashFrame(true)</code> は Dock のアイコンを 1 回バウンスするだけ (<a href="https://developer.apple.com/documentation/appkit/nsapplication/requestuserattentiontype/informationalrequest" target="_blank" rel="noopener noreferrer" class="">NSInformationalRequest</a> レベルを使用する場合) で、<code>flashFrame(false)</code> は何も行いません。 新しい動作: <code>flashFrame(false)</code> が呼び出されるまで、持続的に点滅します。 これは代わりに <a href="https://developer.apple.com/documentation/appkit/nsapplication/requestuserattentiontype/criticalrequest" target="_blank" rel="noopener noreferrer" class="">NSCriticalRequest</a> レベルを使用しています。 <code>NSInformationalRequest</code> を明示的に使用してこれまで通り一度だけの Dock のアイコンをバウンスさせたい場合は、<a href="https://www.electronjs.org/docs/latest/api/dock#dockbouncetype-macos" target="_blank" rel="noopener noreferrer" class=""><code>dock.bounce('informational')</code></a> を使用できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="28xy-サポートの終了">28.x.y サポートの終了<a href="https://electronjs.org/ja/blog/electron-31-0#28xy-%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E7%B5%82%E4%BA%86" class="hash-link" aria-label="28.x.y サポートの終了 への直接リン��ク" title="28.x.y サポートの終了 への直接リンク" translate="no">​</a></h2>
<p>プロジェクトの <a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy" target="_blank" rel="noopener noreferrer" class="">サポートポリシー</a> に則り、Electron 28.x.y はサポート終了を迎えました。 開発者とアプリケーションは新しいバージョンの Electron にアップグレードすることを推奨します。</p>
<table><thead><tr><th>E31 (2024 年 6 月)</th><th>E32 (2024 年 8 月)</th><th>E33 (2024 年 10 月)</th></tr></thead><tbody><tr><td>31.x.y</td><td>32.x.y</td><td>33.x.y</td></tr><tr><td>30.x.y</td><td>31.x.y</td><td>32.x.y</td></tr><tr><td>28.x.y</td><td>29.x.y</td><td>31.x.y</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="次回予告">次回予告<a href="https://electronjs.org/ja/blog/electron-31-0#%E6%AC%A1%E5%9B%9E%E4%BA%88%E5%91%8A" class="hash-link" aria-label="次回予告 への直接リンク" title="次回予告 への直接リンク" translate="no">​</a></h2>
<p>短期的には、Chromium、Node、V8 といった Electron を構成する主要コンポーネントの開発に遅れないでチームが注力し続けるでしょう。</p>
<p><a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines" target="_blank" rel="noopener noreferrer" class="">Electron の公開タイムラインはこちらで</a> ご覧いただけます。</p>
<p>今後の変更についての詳細は、<a href="https://github.com/electron/electron/blob/main/docs/breaking-changes.md" target="_blank" rel="noopener noreferrer" class="">予定されている破壊的変更</a> のページをご覧ください。</p>]]></content:encoded>
            <category>Release</category>
        </item>
        <item>
            <title><![CDATA[Electron 30.0.0]]></title>
            <link>https://electronjs.org/ja/blog/electron-30-0</link>
            <guid>https://electronjs.org/ja/blog/electron-30-0</guid>
            <pubDate>Tue, 16 Apr 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Electron 30.0.0 がリリースされました! これには Chromium 124.0.6367.49、V8 12.4、Node.js 20.11.1 へのアップグレードが含まれています。]]></description>
            <content:encoded><![CDATA[<p>Electron 30.0.0 がリリースされました! これには Chromium <code>124.0.6367.49</code>、V8 <code>12.4</code>、Node.js <code>20.11.1</code> へのアップグレードが含まれています。</p>
<hr>
<p>Electron チームは、Electron 30.0.0 のリリース発表にワクワクしています! <code>npm install electron@latest</code> から npm でインストールするか、<a href="https://www.electronjs.org/releases?channel=stable" target="_blank" rel="noopener noreferrer" class="">リリースウェブサイト</a> からダウンロードできます。 このリリースの詳細は続きをご覧ください。</p>
<p>何かフィードバックがあれば、<a href="https://twitter.com/electronjs" target="_blank" rel="noopener noreferrer" class="">Twitter</a> や <a href="https://social.lfx.dev/@electronjs" target="_blank" rel="noopener noreferrer" class="">Mastodon</a> で共有したり、コミュニティの <a href="https://discord.com/invite/electronjs" target="_blank" rel="noopener noreferrer" class="">Discord</a> に参加してみましょう! バグや機能の要望は Electron の <a href="https://github.com/electron/electron/issues" target="_blank" rel="noopener noreferrer" class="">Issue トラッカー</a> で報告できます。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="注目すべき変更">注目すべき変更<a href="https://electronjs.org/ja/blog/electron-30-0#%E6%B3%A8%E7%9B%AE%E3%81%99%E3%81%B9%E3%81%8D%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="注目すべき変更 への直接リンク" title="注目すべき変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">ASAR 整合性の fuse が Windows でサポートされました (<a href="https://github.com/electron/pull/40504" target="_blank" rel="noopener noreferrer" class="">#40504</a>)<!-- -->
<ul>
<li class="">正しく設定されていない場合、ASAR 整合性が有効の既存のアプリは Windows 上で動作しない可能性があります。 Electron のパッケージ化ツールを使用しているアプリは、<code>@electron/packager@18.3.1</code> または <code>@electron/forge@7.4.0</code> にアップグレードしてください。</li>
<li class="">詳細については私たちの <a href="https://www.electronjs.org/docs/latest/tutorial/asar-integrity" target="_blank" rel="noopener noreferrer" class="">ASAR 整合性のチュートリアル</a> をご覧ください。</li>
</ul>
</li>
<li class=""><a href="https://www.electronjs.org/docs/latest/api/web-contents-view" target="_blank" rel="noopener noreferrer" class=""><code>WebContentsView</code></a> と <a href="https://www.electronjs.org/docs/latest/api/base-window" target="_blank" rel="noopener noreferrer" class=""><code>BaseWindow</code></a> メインプロセスモジュールを追加しました。これは <code>BrowserView</code> を非推奨にして置き換えるものです (<a href="https://github.com/electron/electron/pull/35658" target="_blank" rel="noopener noreferrer" class="">#35658</a>)。 <code>BrowserView</code> から <code>WebContentsView</code> に移行する方法の詳細については、<a class="" href="https://electronjs.org/ja/blog/migrate-to-webcontentsview">このブログ記事</a> をご覧ください。<!-- -->
<ul>
<li class=""><code>BrowserView</code> は <code>WebContentsView</code> の上のシムとなり、古い実装は削除されました。</li>
<li class="">新しい <code>WebContentsView</code> API と他の類似 API との比較については、私たちの <a href="https://www.electronjs.org/docs/latest/tutorial/web-embeds" target="_blank" rel="noopener noreferrer" class="">Web 埋め込みドキュメント</a> をご参照ください。</li>
</ul>
</li>
<li class=""><a href="https://developer.mozilla.org/en-US/docs/Web/API/File_System_API" target="_blank" rel="noopener noreferrer" class="">ファイルシステム API</a> のサポートを実装しました (<a href="https://github.com/electron/electron/commit/cf1087badd437906f280373decb923733a8523e6" target="_blank" rel="noopener noreferrer" class="">#41827</a>)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="累積的変更">累積的変更<a href="https://electronjs.org/ja/blog/electron-30-0#%E7%B4%AF%E7%A9%8D%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="累積的変更 への直接リンク" title="累積的変更 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">Chromium <code>124.0.6367.49</code>
<ul>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-124/" target="_blank" rel="noopener noreferrer" class="">Chrome 124</a> と <a href="https://developer.chrome.com/blog/new-in-devtools-124/" target="_blank" rel="noopener noreferrer" class="">デベロッパーツール 124</a> の新機能</li>
<li class=""><a href="https://developer.chrome.com/blog/new-in-chrome-123/" target="_blank" rel="noopener noreferrer" class="">Chrome 123</a> と <a href="https://developer.chrome.com/blog/new-in-devtools-123/" target="_blank" rel="noopener noreferrer" class="">デベロッパーツール 123</a> の新機能</li>
</ul>
</li>
<li class="">Node <code>20.11.1</code>
<ul>
<li class=""><a href="https://nodejs.org/en/blog/release/v20.11.1/" target="_blank" rel="noopener noreferrer" class="">Node 20.11.1 ノート</a></li>
</ul>
</li>
<li class="">V8 <code>12.4</code></li>
</ul>
<p>Electron 30 では、<code>122.0.6261.39</code> から <code>124.0.6367.49</code> へ、Node は <code>20.9.2</code> から <code>20.11.1</code> へ、V8 は <code>12.2</code> から <code>12.4</code> へとアップグレードしています。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="新機能">新機能<a href="https://electronjs.org/ja/blog/electron-30-0#%E6%96%B0%E6%A9%9F%E8%83%BD" class="hash-link" aria-label="新機能 への直接リンク" title="新機能 への直接リンク" translate="no">​</a></h2>
<ul>
<li class="">Webview に <code>transparent</code> のウェブ環境設定を追加しました。 (<a href="https://github.com/electron/electron/pull/40301" target="_blank" rel="noopener noreferrer" class="">#40301</a>)</li>
<li class="">webContents API に新しくインスタンスプロパティ <code>navigationHistory</code> と <code>navigationHistory.getEntryAtIndex</code> メソッドを追加しました。これによりアプリケーションがブラウズ履歴内の任意のナビゲーションエントリの URL とタイトルを取得できるようになります。 (<a href="https://github.com/electron/electron/pull/41662" target="_blank" rel="noopener noreferrer" class="">#41662</a>)</li>
<li class="">新しく <code>BrowserWindow.isOccluded()</code> メソッドを追加しました。これによりアプリが覆い隠されている状態を確認できるようになります。 (<a href="https://github.com/electron/electron/pull/38982" target="_blank" rel="noopener noreferrer" class="">#38982</a>)</li>
<li class="">ユーティリティプロセスから <code>net</code> モジュールを使用して行われたリクエストに対するプロキシ構成サポートを追加しました。 (<a href="https://github.com/electron/electron/pull/41417" target="_blank" rel="noopener noreferrer" class="">#41417</a>)</li>
<li class=""><code>navigator.serial</code> にサービスクラス ID によって要求される Bluetooth ポートのサポートを追加しました。 (<a href="https://github.com/electron/electron/pull/41734" target="_blank" rel="noopener noreferrer" class="">#41734</a>)</li>
<li class="">Node.js の <a href="https://nodejs.org/api/cli.html#node_extra_ca_certsfile" target="_blank" rel="noopener noreferrer" class=""><code>NODE_EXTRA_CA_CERTS</code></a> CLI フラグのサポートを追加しました。 (<a href="https://github.com/electron/electron/pull/41822" target="_blank" rel="noopener noreferrer" class="">#41822</a>)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="破壊的変更">破壊的変更<a href="https://electronjs.org/ja/blog/electron-30-0#%E7%A0%B4%E5%A3%8A%E7%9A%84%E5%A4%89%E6%9B%B4" class="hash-link" aria-label="破壊的変更 への直接リンク" title="破壊的変更 への直接リンク" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作変更-クロスオリジンの-iframe-が権限ポリシーを用いて機能にアクセスするようになりました">動作変更: クロスオリジンの iframe が権限ポリシーを用いて機能にアクセスするようになりました<a href="https://electronjs.org/ja/blog/electron-30-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4-%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%AA%E3%83%AA%E3%82%B8%E3%83%B3%E3%81%AE-iframe-%E3%81%8C%E6%A8%A9%E9%99%90%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC%E3%82%92%E7%94%A8%E3%81%84%E3%81%A6%E6%A9%9F%E8%83%BD%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F" class="hash-link" aria-label="動作変更: クロスオリジンの iframe が権限ポリシーを用いて機能にアクセスするようになりました への直接リンク" title="動作変更: クロスオリジンの iframe が権限ポリシーを用いて機能にアクセスするようになりました への直接リンク" translate="no">​</a></h3>
<p>クロスオリジンの iframe にアクセスするには、特定の <code>iframe</code> で利用可能な機能を <code>allow</code> 属性を介して指定しなければなりません。</p>
<p>詳細は <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#allow" target="_blank" rel="noopener noreferrer" class="">ドキュメント</a> をご参照ください。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="削除---disable-color-correct-rendering-コマンドラインスイッチ">削除: <code>--disable-color-correct-rendering</code> コマンドラインスイッチ<a href="https://electronjs.org/ja/blog/electron-30-0#%E5%89%8A%E9%99%A4---disable-color-correct-rendering-%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81" class="hash-link" aria-label="削除---disable-color-correct-rendering-コマンドラインスイッチ への直接リンク" title="削除---disable-color-correct-rendering-コマンドラインスイッチ への直接リンク" translate="no">​</a></h3>
<p>このスイッチは正式にドキュメント化されたことはありませんが、削除したことをここに注記しておきます。 Chromium 自体が色空間のサポートを強化したため、このフラグは必要なくなります。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="動作変更-macos-での-browserviewsetautoresize-の動作">動作変更: macOS での <code>BrowserView.setAutoResize</code> の動作<a href="https://electronjs.org/ja/blog/electron-30-0#%E5%8B%95%E4%BD%9C%E5%A4%89%E6%9B%B4-macos-%E3%81%A7%E3%81%AE-browserviewsetautoresize-%E3%81%AE%E5%8B%95%E4%BD%9C" class="hash-link" aria-label="動作変更-macos-での-browserviewsetautoresize-の動作 への直接リンク" title="動作変更-macos-での-browserviewsetautoresize-の動作 への直接リンク" translate="no">​</a></h3>
<p>Electron 30 では、BrowserView は新しい <a href="https://www.electronjs.org/docs/latest/api/web-contents-view" target="_blank" rel="noopener noreferrer" class="">WebContentsView</a> API のラッパーになりました。</p>
<p>以前の <code>BrowserView</code> API の <code>setAutoResize</code> 関数は、macOS では <a href="https://developer.apple.com/documentation/appkit/nsview/1483281-autoresizingmask?language=objc" target="_blank" rel="noopener noreferrer" class="">autoresizing</a> で、Windows と Linux ではカスタムアルゴリズムによって支えていました。
BrowserView をウインドウ全体に表示するなどの単純な使用例では、これら 2 つのアプローチの動作は同じでした。
ただしより高度なケースでは、Windows および Linux のカスタムサイズ変更アルゴリズムが macOS の自動サイズ変更 API の動作と完全に一致しませんでした。そのめ、BrowserView の自動サイズ変更は macOS 上では他のプラットフォームとは異なる動作でした。
この自動サイズ変更の動作がすべてのプラットフォーム間で標準化されました。</p>
<p>もしあなたのアプリが BrowserView をウィンドウ全体に表示するよりも複雑な操作を <code>BrowserView.setAutoResize</code> で行っていたのならば、macOS でのこの動作の違いに対処するカスタムロジックを既に用意していたことでしょう。
その場合、Electron 30 からは自動サイズ変更の動作が一貫しているため、そのロジックは必要なくなります。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="削除-webcontents-の-context-menu-にある-paramsinputformtype-プロパティ">削除: <code>WebContents</code> の <code>context-menu</code> にある <code>params.inputFormType</code> プロパティ<a href="https://electronjs.org/ja/blog/electron-30-0#%E5%89%8A%E9%99%A4-webcontents-%E3%81%AE-context-menu-%E3%81%AB%E3%81%82%E3%82%8B-paramsinputformtype-%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3" class="hash-link" aria-label="削除-webcontents-の-context-menu-にある-paramsinputformtype-プロパティ への直接リンク" title="削除-webcontents-の-context-menu-にある-paramsinputformtype-プロパティ への直接リンク" translate="no">​</a></h3>
<p><code>WebContents</code> の <code>context-menu</code> イベント内の params オブジェクトにある <code>inputFormType</code> プロパティを削除しました。 代わりに新しい <code>formControlType</code> プロパティを使用してください。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="削除-processgetiocounters">削除: <code>process.getIOCounters()</code><a href="https://electronjs.org/ja/blog/electron-30-0#%E5%89%8A%E9%99%A4-processgetiocounters" class="hash-link" aria-label="削除-processgetiocounters への直接リンク" title="削除-processgetiocounters への直接リンク" translate="no">​</a></h3>
<p>Chromium はこの情報へのアクセスを削除しました。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="27xy-サポートの終了">27.x.y サポートの終了<a href="https://electronjs.org/ja/blog/electron-30-0#27xy-%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E7%B5%82%E4%BA%86" class="hash-link" aria-label="27.x.y サポートの終了 への直接リンク" title="27.x.y サポートの終了 への直接リンク" translate="no">​</a></h2>
<p>プロジェクトの <a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy" target="_blank" rel="noopener noreferrer" class="">サポートポリシー</a> に則り、Electron 27.x.y はサポート終了を迎えました。 開発者とアプリケーションは新しいバージョンの Electron にアップグレードすることを推奨します。</p>
<table><thead><tr><th>E30 (Apr'24)</th><th>E31 (2024 年 6 月)</th><th>E32 (2024 年 8 月)</th></tr></thead><tbody><tr><td>30.x.y</td><td>31.x.y</td><td>32.x.y</td></tr><tr><td>29.x.y</td><td>30.x.y</td><td>31.x.y</td></tr><tr><td>28.x.y</td><td>29.x.y</td><td>30.x.y</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="次回予告">次回予告<a href="https://electronjs.org/ja/blog/electron-30-0#%E6%AC%A1%EF%BF%BD%E5%9B%9E%E4%BA%88%E5%91%8A" class="hash-link" aria-label="次回予告 への直接リンク" title="次回予告 への直接リンク" translate="no">​</a></h2>
<p>短期的には、Chromium、Node、V8 といった Electron を構成する主要コンポーネントの開発に遅れないでチームが注力し続けるでしょう。</p>
<p><a href="https://www.electronjs.org/docs/latest/tutorial/electron-timelines" target="_blank" rel="noopener noreferrer" class="">Electron の公開タイムラインはこちらで</a> ご覧いただけます。</p>
<p>今後の変更についての詳細は、<a href="https://github.com/electron/electron/blob/main/docs/breaking-changes.md" target="_blank" rel="noopener noreferrer" class="">予定されている破壊的変更</a> のページをご覧ください。</p>]]></content:encoded>
            <category>Release</category>
        </item>
    </channel>
</rss>